| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
09.04.2010, 21:23 | #1 | |
Как в получить дополнительное описание геометрии "новой" сети в A2010
Регистрация: 26.03.2010
Сообщений: 240
|
||
Просмотров: 3963
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Попробуй приложить файл со "старой" и с "новой" сетями. Для гарантии сделай обе по крайней мере похожими. И подробнее расскажи, что тебе надо в результате получить.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 26.03.2010
Сообщений: 240
|
Выкладываю пример файла с 2-мя сетями, построенными по контуру (4 3М отрезка) командой П-Кромка, Surftab1=3 Surftab2=6 и П-Вращения, Surftab1=6 Surftab2=3 в 2006 и 2010 Автокаде. Команда "одна и та-же", тип объекта - разный.
В свойствах сеть 2006 - Полигональная сеть. При выборе обекта - все вершины выделяются. Средствами Лиспа (SSGET и пр) при просмотре списка - имеет поля с ключами, определяющими варианты замкнутости (70 . ...) и кол-во рядов-столбцов (71 . ...)(72 . ...). Если просматривать последующие списки для (0 . "VERTEX") до (0 . "SEQEND") - можно получить (сделать) список с координатами узлов. Зная кол-во рядов-столбцов я всегда могу взять любой узел в списке и вычислить, в каком ряду-столбце он находится N(i,j), а также номер в общем списке координат узлов для соседних, связанных с этим узлов (i-1,j) (i+1,j)(i,j-1)(i-1,j+1) - рядом выше-ниже, в столбце правее-левее. В сети, выполненной той же командой в 2010 автокаде другой формат данных. Все координаты (10 x y z) сразу видны при вызове списка объекта. Плюс никак не связанное с кол-вом вершин-ячеек, размерностью сети (неразобрался) значения и поля (90 ...)(91 ...) (93 ...) (94 ...) (95 ...) (140 ...). Поля (71 . ...) и (72 . ...) - более не отображают кол-во рядов-столбцов сетки - значения не меняются. Нет поля и для определения замкнута или нет сеть (70 ...). Т.е. в этом списке проще получить координаты вершин, но выполнять потом расчеты по нему нельзя, т.к. требуется, чтобы программа после выбора любой сети могла не просто составить список вершин, а и определить, к каким рядам-столбцам они принадлежат, с какими вершинами связаны, а для этого непонятно, откуда ей взять исходные данные. Сетки могут быть достаточно мелкие, так что на глазок - не просчитаешь, вручную не добавишь как расширенные данные, разве что программно, еще на этапе создания сетки совместить стандартную команду со своим лиспом. Прилагаю Lisp для просмотра списка атрибутов выбранных объектов.
__________________
Толстов Евгений Последний раз редактировалось atollon, 11.04.2010 в 12:05. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
У меня нет русского AutoCAD Посему вопрос: объекты в 2010 создавались командой _3dmesh или _pface? Мне просто даже справку не посмотреть по командам... И ситуацию не промоделировать.
А так да, объекты разные: в 2006 создавалась AcDbPolygonMesh, в 2010 - AcDbSubDMesh. У второго объекта в дампе вообще нет свойств mclose или nclose. Так что наверняка проблема именно в неполной или неверной локализации, я думаю.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 26.03.2010
Сообщений: 240
|
В файле примере использовал:
_edgesurf (П-Кромка - в 2010 и в 2006) _revsurf (П-ВРАЩ) Вначале сделал сети в 2006, потом открыл файл в 2010 и повторил команды. _3dmesh и в 2006 и в 2010 создает одинаковый формат сети, но требует программного задания вершин (+ стандартные формы куб, клин,...), не использует объекты контуров, образующих и тп, как в командах _revsurf,_tabsurf,_rulesurf,_edgesurf Команды редактирования "новой" сети (из текстового меню Редактировать и из контекстного меню) не позволяют преобразовать ее в полигональную сеть 2006 образца или как от _3dmesh. Расчленить тоже не "помогает". Нужен или стандартный Автокадовский инструмент преобразования сети в полигональную или способ вычислять стуктуру сетки (взаимосвязей узлов - с какими соседними связь) средствами Лиспа из данных списка. Данные сети нужны для моделирования в Автокаде Тентовых оболочек, для сглаживания, моделирования минимальной формы, или различных вариантов преднапряжения (разных пропорций отр.гауссовой кривизны), гибкого контура, внешних-внутренних узлов контура, внутренних вант преднапряжения, отверстий... Естественно, тут важно знать, с какими узлами связан каждый узел сети. Команды П-Кромка и П-Вращ использовались для быстрой привязке сетки к некоторым контурам с последующим редактированием положения отдельных узлов (внутренних и по контуру). Дополнительная информация моделирования различных условий для расчета координат узлов сети дописывалась к данным сети, тем самым сохраняясь и восстанавливаясь при следующих сеансах моделирования форм. Программка для старой структуры данных сети разрабатывалась, и то, в какойто версии в Автокаде та уже менялась - ранее все координаты тоже были в основном списке, а не разбросаны по подспискам вершин, и вот с новой версией Автокада опять проблема, надо обеспечить совместимость, а как...
__________________
Толстов Евгений Последний раз редактировалось atollon, 11.04.2010 в 17:23. |
|||
|
||||
Регистрация: 26.03.2010
Сообщений: 240
|
Таки нашел - в HELP'е AutoCAD'a 2010 - частичное решения моей проблемы - переменная MESHTYPE=0 при создании сети командами П-ВРАЩ, П-СДВИГ, П-СОЕД или П-КРОМКА (или как выдает в ком.строке: _revsurf, _tabsurf, _rulesurf, _edgesurf ).
По Умолчанию MESHTYPE=1 - новая разновидность сети и формат ее данных. При MESHTYPE=0 - старый, полигональный вид сети - доступны узлы для "ручного" редактирования координат узлов сети, и данные для Лиспа по кол-ву рядов-столбцов и варианту замкнутости. Однако все еще хотелось бы получить информацию, которая помогла бы учитывать в Лиспе взаимосвязь вершин и для новых, сглаживаемых сетей 2010 - ведь несут же какуюто информацию поля (90 ...)(91 ...) (93 ...) (94 ...) (95 ...) (140 ...)...
__________________
Толстов Евгений Последний раз редактировалось atollon, 16.04.2010 в 01:55. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Ну, если надо только получить координаты, то можно сделать и так:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 26.03.2010
Сообщений: 240
|
Что то как то сложно и непонятно, да и полуфабрикат
А достать координаты из списков по ключу (10 x y z) - не проблема В старой, полигональной сети (0 . "POLYLINE") - по одной они спрятаны в последующих (ENTNEXT ...) списках (0 . "VERTEX") до (0 . "SEQEND") В новой (0. "MESH") они уже идут подрят (10 ...)(10 ...)... Срезать список до первого ключа (MEMBER (ASSOC 10 ...)...), реверс, и опять срезать, реверс - вот и готов список координат, ну а вырезать ключ 10 (CDR ...) - тоже несложно Нужен не список, а информация о связях узлов. Рассматриваемая сетка регулярная, ячейки четырехугольные, в старой есть кол-рядов-столбцов. Взяв из списка координат любой номер вершины можно ВЫЧИСЛИТЬ номер соседней вершины в том же ряду-столбце выше-ниже, правее-левее. А вот как это сделать со списком вершин из новой сети? Есть ли какие нибудь данные, по которым можно былобы получить, что например в сетке 3х4 (что как раз и неизвестно - в новой сети только кол-во узлов) узел №6 связан с узлами 5, 7, 2, 10, а узел 5 (на контуре) - только с 6, 1, 9, или, если замкнута, то 8, 6, 1, 9?
__________________
Толстов Евгений Последний раз редактировалось atollon, 16.04.2010 в 13:35. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рифмоплетство. | Kryaker | Разное | 554 | 14.11.2023 11:59 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
Юмор 2007 | Огурец | Разное | 1172 | 29.12.2007 11:16 |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |
Как получить таблицу свойств объектов такую же как в OrCad | passat | AutoCAD | 1 | 08.12.2004 01:12 |