VetCAD

SCADFace LSP-программа генерации оболочек для SCAD по данным AutoCAD

    0 оценок

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!

Комментарии

Комментарии могут оставлять только зарегистрированные участники
Авторизоваться
Комментарии 1-10 из 38
igoriok_025 , 03 марта 2009 в 13:25
#1
Идея хорошая! Только чуток доработать бы...
1) при пересечении линией сетки под углом 0 2)А если тоже сделать для круглого сегмента (апроксимировать ) то это значительно облегчит построение схемы здания.
, 05 марта 2009 в 10:53
#2
Замечания понятны.
По поводу 1го: в Автокаде нет возможности нарисовать поверхность (3DFACE) с 5ю и более узлами. Потому получается "дырка". Доразбить программно можно, но в данной ситуации получается 5ть разных вариантов доразбиения. Выбрать более приемлемый должен (IMHO) пользователь. К тому же как угадать, умышленно это сделано или нет? Ведь если в плите есть проем (отверстие вентшахты, лифт и т.п), то число его (проема) узлов, как правило, больше 4х. В таких случаях не поленитесь пририсуйте дополнительные линии.
Такая же ситуация может сложиться, когда линии не сходятся в пересечениях при неточности черчения и/или действия объектной привязки. (Для тех кто парит в LSP: переменная "sf2_Epsy-Intrs" отвечает за точность пересечения линий)
В любом случае будет полезным проверять результаты с помощью кнопки "Затенение" (SHADEMODE) на панели "Тень" (при этом 3DFACE закрасятся, и будет видно где дырка, а где плита).
По поводу 2го: задумка отличная! Будет время обязательно доделаю.
nikе , 05 марта 2009 в 14:20
#3
Идея очень хорощая, только LISP работает медленно например при количестве фейсов под 10 тыс. элементов. Хорошо бы её на arx переписать бы. А так я даже очень доволен этой программкой. Спасибо большое доброму человеку!!!!
, 06 марта 2009 в 08:04
#4
Nike, вы правы. Но в ARX (если я правильно понял, он на C+) я не бум-бум... Может найдется человек, который уделит время и сможет это реализовать. Было бы здорово.
nikе , 07 марта 2009 в 00:52
#5
На С++ её переписывать нет особой необходимости просто если очень много элементов, то можно делать разбивку по частям - по половине, по четвертой или по восьмой части. Я работаю в Bricscad и использую теперь твою программу совместно с Лирой. Если честно, то еще не видывал я таких сложных программ как твоя. В интернете встречал реализованную для Bricscad триангуляцию Делони по готовым точкам, написанную на DRX(C++) с исходниками, скорость работы наверно раз в 1000 выше чем скорость твоей программы.Но там треугольники только получаются, а хочется иметь прямоугольнички.
Так что твоя программа вне конкуренции - она позволяет полностью проконтролировать форму будущей конечноэлементной сетки, ни один алгоритм треангуляции не обеспечит такого контроля за ситуацией.
, 30 марта 2009 в 13:17
#6
Спасибо Вам за эту программу. Только подумал что хорошо бы найти что-нибудь такое, как тут Вы со своим шедевром! В общем, я ее опробовал на текущем проекте и могу сказать что ого го как круто. Но, увы, есть небольшая ложечка того самого. А именно, при триангуляции контуров из наклонных линий, неважно с каким углом, происходит округление координат вершин получившихся пластинок. Поэтому они не совпадают например с пауками из жестких вставок. Само по себе это не так уж и страшно, но в моем случае, когда нужно к плитам стыковать диафрагмы и колонны, это существенно портит картину. Делал точность чертежа на 0.000000000 но это не помогло. Если есть мысли как это поправить, напишите пожалуйста. Спасибо еще раз.
, 30 марта 2009 в 14:03
#7
Доброе время суток, Carl!
Тут ситуация такая: в программе существует 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-файл с сетью из линий на [email protected] будем разбираться.
, 30 марта 2009 в 14:05
#8
Вот как это выглядит в AutoCADе:
http://depositfiles.com/files/3hnebpc9h
, 30 марта 2009 в 14:10
#9
Спасибо за столь оперативный ответ! Я сразу то не увидел. Буду пробовать редактировать Вышу программу.
P.S. У Вас есть какой нибудь электронный кошелек? Ежели все получится хорошо, надо бы выслать Вам немного денюжек, чтоб совесть не мучила :)
, 30 марта 2009 в 14:43
#10
Да, округление координат, по сути, ничего не дало, а вот урезание программы по второму предложенному пункту дало таки свои плоды - все координаты сошлись в ноль, что и требовалось. Сегодня-завтра попробую все это подсобрать в Лире, посмотрим что получится. Спасибо Вам еще раз.
P.S. Чуть-что, если природная скромность не позволит Вам описать то место, куда можно выслать вознаграждение за труды, пишите на [email protected].
zip

0.1 МБ

СКАЧАТЬ