|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как установить ПСК относительно области (Region)
Инженер-конструктор
МО
Регистрация: 03.07.2009
Сообщений: 19
|
||
Просмотров: 3924
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
obj_max чему равен? Полный код, касающийся этого куска, покажи. ПО идее должно сработать нечто типа
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-конструктор Регистрация: 03.07.2009
МО
Сообщений: 19
|
Кулик Алексей aka kpblc, спасибо большое за полный текст, но вопросы с сортировкой и т.п. решены. Насущный вопрос перенос ПСК. Вот текст тестовой программы:
Код:
_$ <Имя объекта: 7ffff705a10> ; ошибка: Функция прервана. _$ С Вашей функцией тоже самое. На чертеже AutoCad только области (Region) получаемые с помощью _explode из 3dsolid (параллелепипеда). Последний раз редактировалось BulKonst, 20.12.2013 в 21:05. |
|||
![]() |
|
||||
М-да... Эта опция не "кушает" ни ENAME, ни список получаемый ENTSEl, ни набор:
Код:
Хех, нашел. Код:
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Инженер-конструктор Регистрация: 03.07.2009
МО
Сообщений: 19
|
Do$, работает но не подходит т.к. имя примитива нужно брать из набора:
Код:
Нашел на форуме установку ПСК по 3-м точкам "Не могу совладать с (command "_UCS")" (command "_.ucs" "_3p" pt0 pt1 pt2), попробую пока её: .... (command "_explode" obj_face) (...выбираем "line"...) (...анализируем точки...) (...запоминаем pt0 pt1 pt2...) (command "_u") ;отменяем _explode (command "_.ucs" "_3p" pt0 pt1 pt2) .... |
|||
![]() |
|
||||
Жесть. Взрываете объект, чтобы извлечь его точки? Гораздо проще (entget obj_face) и вытащить нужные группы.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Инженер-конструктор Регистрация: 03.07.2009
МО
Сообщений: 19
|
Цитата:
1. Уровень программирования - практически никакой 2. (entget obj_face) - где obj_face это Region выводит нечто неописуемое для моего понимания. Если у Вас есть решение как из obj_face вытащить вершины, буду Вам очень признателен. |
|||
![]() |
|
||||
Одно из главных правил программирования - давайте интуитивно понятные имена переменным
![]() Я рассудил, что если названо obj_face, то работаете с объектом 3DFACE. Из него точки элементарно извлекаются. С REGION не работал никогда, возможно, что там не так все просто. Чертеж с нужным объектом выложите, гляну. Я бы дал переменной имя ent_region, если исходить из такой нотации. ent - общепринятое имя переменной для хранения ename (entity name). А имя obj обычно используется для хранения значений типа vla-object. Зачем это надо? Чтобы самому потом спустя некоторое время понимать что к чему.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Инженер-конструктор Регистрация: 03.07.2009
МО
Сообщений: 19
|
Do$, выладываю dwg с описанием
Программа для анализа деталей из листового материала из 3d объекта. Должна выводить приблизительно: ДСП-16 1000х500 – 2шт <<45<70 ДСП-16 1000х500 – габариты, <<45 – два угла 45гр., <70 – один угол 70гр. (запилы торца) …. (command "_explode" ent_3dsolid) (получил 6 плоскостей максимальная из них - есть площадь детали) ....(command "_u") ; отменяем _.ucs (command "_u") ; отменяем _explode для ent_3dsolid .... В итоге получены вершины 6 плоскостей параллелепипеда – по ним составляю уравнения плоскостей, вычисляю углы и т.д. В общем все работает, но наткнулся на один нюанс. Если два параллельных ребра наклонены в одну сторону, то габарит детали будет больше чем площадь ent_region_max. Для решения этой проблемы решил перенести СК параллельно ent_region_max, габариты детали будут X_max–X_min и Y_max–Y_min (max и min вычисляем из всех 8 вершин параллелепипеда). Последний раз редактировалось BulKonst, 21.12.2013 в 16:57. |
|||
![]() |
|
||||
Да, неблагодарное это занятие - работать с телами в голом акаде. В entget списке есть полное описание их геометрии и где-то тут на форуме был документ про этот формат, но разобраться в этом немногие смогут. Так что, взрывать, пожалуй, проще.
Вот пример того, как можно более грамотно взрывать объекты типа REGION: Код:
К сожалению, с объектом 3DSOLID такой фокус не пройдет.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Инженер-конструктор Регистрация: 03.07.2009
МО
Сообщений: 19
|
Do$, нашел функцию вытаскивания вершин и длин граней Region без взрыва:
Код:
Код:
В итоге получается для работы программы нужно: …. (command "_explode" ent_3dsolid) (получил 6 плоскостей максимальная из них - есть площадь детали) .... (определяем ent_region_max).... (command "_u") ; отменяем _.ucs (command "_u") ; отменяем _explode для ent_3dsolid .... Предлагаю разобрать данную функцию анализа Region и 3dsolid на отдельной ветке форума, а то очень отдалились о темы. |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Освоение тел Солнечной системы: Техника, технологии, ресурсы. | Солидворкер | Разное | 3991 | сегодня 13:39 |
Какой язык перспективен для инженера-конструктора с условием | The_Mercy_Seat | Программирование | 705 | 17.03.2021 14:19 |
Нужно ли армировать фундамент под отдельно стоящие опоры? | Юлия Серенко | Основания и фундаменты | 2 | 18.09.2012 23:18 |
Генная инженерия - сфера инженерного проектирования. | FOXAL | Разное | 106 | 15.10.2010 13:59 |
Как определить, в какой области графической области dcl был выполнен клик? | Лиспер | Программирование | 22 | 14.10.2010 20:16 |