shurik5b
размещено: 03 Марта 2009
обновлено: 07 Апреля 2009
SCADFace.
LSP-программа преобразования прямоугольников и треугольников, образованных линиями (LINE), в поверхности (3DFACE), вершины которых находятся в пересечениях прямых. Используется для подготовки данных для расчета плит в SCAD'е.
Программа не берет во внимание Z-координату (плоская плита).
Для запуска программы:
1) Загрузить SCADFACE.LSP
(в меню AutoCAD: Инструменты/Загрузить приложение)
(предполагается что сеть из линий уже вычерчена)
2) В командной строке набрать SCADFACE
3) Указать базовую точку (используется как относительный 0 для вычисления пересечения прямых)
4) Указать точку вставки (базовая точка для вычерчивания поверхностей)
5) Выбрать линии
6) Результаты экспортировать в DXF для передачи в SCAD.
***
07.04.09
Исправлен баг, найденый raduntsev-nias. Баг касается преобразования UCS-WCS (точнее преобразования не было). Пришлось поменять интерфейс - теперь сначала выделяете объекты, потом указываете базовую точку и точку вставки.
+ убрал округление координат пересечений в связи с замечаниями Carl'а.
PS: Спасибо, raduntsev-nias!
0.1 МБ
СКАЧАТЬ
Комментарии
Авторизоваться
1) при пересечении линией сетки под углом 0 2)А если тоже сделать для круглого сегмента (апроксимировать ) то это значительно облегчит построение схемы здания.
По поводу 1го: в Автокаде нет возможности нарисовать поверхность (3DFACE) с 5ю и более узлами. Потому получается "дырка". Доразбить программно можно, но в данной ситуации получается 5ть разных вариантов доразбиения. Выбрать более приемлемый должен (IMHO) пользователь. К тому же как угадать, умышленно это сделано или нет? Ведь если в плите есть проем (отверстие вентшахты, лифт и т.п), то число его (проема) узлов, как правило, больше 4х. В таких случаях не поленитесь пририсуйте дополнительные линии.
Такая же ситуация может сложиться, когда линии не сходятся в пересечениях при неточности черчения и/или действия объектной привязки. (Для тех кто парит в LSP: переменная "sf2_Epsy-Intrs" отвечает за точность пересечения линий)
В любом случае будет полезным проверять результаты с помощью кнопки "Затенение" (SHADEMODE) на панели "Тень" (при этом 3DFACE закрасятся, и будет видно где дырка, а где плита).
По поводу 2го: задумка отличная! Будет время обязательно доделаю.
Так что твоя программа вне конкуренции - она позволяет полностью проконтролировать форму будущей конечноэлементной сетки, ни один алгоритм треангуляции не обеспечит такого контроля за ситуацией.
Тут ситуация такая: в программе существует 2 переменные (значения по умолчанию):
1) sf2_Epsy-Intrs=0.0001
2) sf2_Epsy-RoundXY=0.01
Первая отвечает за точность пересечения линий, а вторая за округление координат при вычерчивании поверхностей.
В Вашем случае скорее всего следует изменить (в любом текстовом редакторе или редакторе AutoLisp) значение переменной sf2_Epsy-RoundXY на более маленькое значение (скажем на 0.000001), либо вообще изменить текст программы так:
вместо:
(defun sf2_roundpoint (x / y)
(list (roundprec (car x) sf2_Epsy-RoundXY)
(roundprec (cadr x) sf2_Epsy-RoundXY))
)
должно быть:
(defun sf2_roundpoint (x / y)
x
)
тогда округления координат вобще не будет.
Если ни чего не выйдет - шлите dwg-файл с сетью из линий на shurik5b@mail.ru будем разбираться.
http://depositfiles.com/files/3hnebpc9h
P.S. У Вас есть какой нибудь электронный кошелек? Ежели все получится хорошо, надо бы выслать Вам немного денюжек, чтоб совесть не мучила :)
P.S. Чуть-что, если природная скромность не позволит Вам описать то место, куда можно выслать вознаграждение за труды, пишите на Don-Burbon@yandex.ru.