|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
AutoLISP: Длина 3D солида "Sweep" или сплайна
Руководитель фирмы
Москва
Регистрация: 28.03.2007
Сообщений: 1,831
|
||
Просмотров: 4180
|
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Покопавшись через историю dxf можно выйти и на образующий region (коды сейчас не вспомню - но точно можно - где-то рядом с путем), так его площадь, деленная на объем фигуры и даст длинну (таким образом, кстати, можно и длинну сплайна "програмно" найти).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Дима_, так будет только если параметр "масштабирование вдоль траектории" равно 1 (по умолчанию оно так и есть), а вот если его изменить, то при одной и той же длине объем фигуры будет разный, а соответственно и деление объема на площадь может дать совсем не верный результат
__________________
cadtools |
|||
![]() |
|
||||
Цитата:
P.S.: Лисп-функции добавил. Пробуй. |
||||
![]() |
|
||||
Рад пообщаться, Александр.
Я с Вами не соглашусь. Во-первых у 3D солидов "Sweep" есть длинна и она прямо указана в панели "Свойства". Во вторых, я сам 3D солид и не собираюсь мучать по поводу длинны. Но в нем есть образующий примитив, тот самый, который был избран как путь. Вот его длинна прекрасно получается при помощи вашей замечательной программы. P.S. Ура! Огромное спасибо! Я сознательно иду на то, что моя прога без Вашей работать не будет. А Ваш модуль надо AutoDesk-у купить и поставлять кады вместе с ним. Еще раз, низкий поклон. P.S.2 Есть один огорчающий момент. Если сохранить файл из 2010 формата в 2004 - у солидов обнуляется история и данные об их "длинне" исчезают. Попробую поковыряться в 1-ых точечных парах. Последний раз редактировалось Supermax, 18.10.2010 в 10:33. |
||||
![]() |
|
||||
Цитата:
Цитата:
Цитата:
P.S.: А что есть проблема в том, чтобы средствами VisulLisp получить длину сплайна? Код:
Последний раз редактировалось Александр Ривилис, 18.10.2010 в 11:30. |
||||
![]() |
|
||||
Не, господа. Я с вами не согласен. 2007 формат историю не рубит. Создание 3D солида по пути и возможность его корректировки в 2007 формате уже есть. Резать такой солид никто не намерен, да и свой тип он кажется тоже меняет. А история - нет ничего проще. 350 пара если имеет нулевой указатель, то есть возвращает nil при его чтении, однозначно выбрасывает такой солид из набора.
Я создаю модели, где таким способом раскладываются медные импульсные трубки. Я намеревался оставлять спланы (они и так остаются после вытягивания) или брать объем и делить на площадь, но убивает это свойство "длинна" и то, что два других типа 3D солидов я научился измерять длинну. Еще малость побъюсь и сюда решение выложу. Александр Ривилис, за код спасибо. Я его обязательно использую. |
||||
![]() |
|
||||
![]() Вскрыл мозги 1-ым точечным парам. Там ничего полезного не оказалось. А 3-и пары как открывать не знаю. Всю историю перерыл - ничего полезного не нашел. Александр Ривилис Цитата:
Хочу объяснить, почему именно 3D солиды хочу мерять, да еще и вытянутые по пути: Рисую сплайн (будущая импульсная трубка). Рисуется как бог на душу придется. За ручки растаскиваю в разных направлениях, чтобы не пересекался с различными трубами и агрегатами. Рисую кружок (сечение трубки) и вытягиваю по пути. НО! Потом приходится рядом еще что-то ставить и трубку надо подвинуть. Все двигается, ведь такой 3D солид за ручки можно растащить как и сплайн, но опять НО. Сплайн не могу скорректировать по 3D солиду, поскольку к его ручкам ничего не примагничивается и я остаюсь без длины. Точнее я ее вижу в свойствах, а списать никак. ![]() Приходится двигать сплайн и по новой вытягивать. Придется наверное делить объем на площадь. А еще хотел написать функцию, которая измеряет длину всему, что ее имеет. Два типа 3Dсолидов и так можно длину посмотреть, вот хотел тоже в эту функцию запихнуть, но видать не судьба (все же площадь надо в аргументы вставить, тогда любые солиды померяет, но не совсем правильно). Последний раз редактировалось Supermax, 18.10.2010 в 23:09. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Ты в сторону MEP посмотри, я тебе не первый раз об этом говорю
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
Да и как все внешними ссылками в одну модель собирать? И где собирать? В МЕР-е рисовать, а в голом каде собирать? Как подружить ADT, MEP и прочие вертикалки друг с другом? И вот то же смущает: Цитата:
|
||||
![]() |
|
||||
BREP (Boundary Representation Library) содержится в составе ObjectARX SDK. Почитай, посмотри готовые примеры и поймешь что в общем случае это не применимо. Т.е. ты получишь набор вершин/граней/поверхностей, образующих твое тело (3DSOLID). И что дальше?
|
||||
![]() |
|
||||
Да, жаль. Будем выкручиваться.
Вот примерно такое начало моей будущей функции по замеру длин всего, что плохо лежит. Код:
Если обрабатывать 3D солиды в зависимости от их SolidType, то надо обрабатывать ошибки. Дело в том, что после подрезки 3D солида его "SolidType (RO) = Ошибка" Последний раз редактировалось Supermax, 19.10.2010 в 10:06. |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Длина сплайна. | Dimkach | AutoCAD | 2 | 16.11.2009 12:14 |
Длина сплайна | ИРИК | AutoCAD | 3 | 05.02.2009 13:05 |