|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
В свое время обдумывал где и как хранить информацию о "контактных" точках блоков.
То есть точек блока, которые могут соединяться меж собой в схеме или графике каком... В моем случае было достаточно 4 групп "контактных" точек по квадрантам - верх, низ, лево, право. В итоге решил хранить в самих блоках, добавляя в них с помощью простейшего лиспа отрезки, которые: 1 имеют строго определенную длину, которая на несколько порядков меньше размеров блока; 2 содержат группу невидимости (60 . 1). Другой лиспик извлекает список "контактных" точек при указании на вставленный в чертеж блок. Примитивно, но это работает |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
puma, а можно полный код напомнить? Я просто подобных ошибок не ловил...
P.S. Проверить смогу только завтра вечером
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.02.2009
Сообщений: 260
|
Полный код той версии реактора, что использую, (без изменений) со всеми доп.функциями. Если где затесались мои комментарии - сорри, пока разбирался - комментировал что где делается. Ошибка появляется при таком порядке:
Требуется создать объект на слое со штрихпунктирным типом линий (подгружаю из стороннего файла, не acadiso; наименование типа линий на русском - добавлял в список, и он находился). После создания первого - создаем второй объект. Слой при этом меняет тип линий на обычный. Возможно я не то исправил, но, кажется, если тип линий загружен и снова происходит обращение к функции подгрузки типов линий - она выдает nil, что приводит к загрузке стандартной линии. Исправление по русскому/английскому наименованию делал почти наугад, так как после того как функцию подгрузки линии исправил, чтобы выдавала T - начала вылетать функция создания слоя с ошибкой. Хотя скорее всего у меня просто кривые руки. Спасибо за чудесный реактор, и заранее за ответ Код:
Последний раз редактировалось puma, 14.11.2010 в 18:11. |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Li6-D,
не очень понятно, как эти отрезке в блоке помогают тебе и главное - когда именно? МОжно, ксати, ставить объект-точку. Я бы хранил возможные точки подключения в расширенных данных. Или в словаре примитива - или это одно и то же? ))) Но вот как эти данные получать для записи? Откуда? |
|||
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
Frigate,
во вложенном чертеже приведен фрагмент графика Ганта, блоки которого содержат "контактные" точки, служащие для соединения блоков между собой. Просмотреть список точек можно так: (label_block (car (entsel))), где label_block: Код:
Точки с кодом 0 соединяются только с 2, а 1 с 3. При необходимости можно еще и тип линии загружать. Последний раз редактировалось Li6-D, 14.11.2010 в 20:04. |
|||
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
Frigate,
как я уже говорил, в dxf-коде отрезков содержится группа (60 . 1), делающая примитивы невидимыми. Добавь эту группу в любой примитив с помощью (entmod (cons '(60 . 1) (entget (car (entsel))))) и он станет невидимым, не будет захватываться рамкой. Но этот примитив никуда из чертежа не делся, его можно даже захватить опциями "_Last", "_All". Посмотреть dxf-список всех примитивов чертежа, включая невидимые объекты, можно так: Код:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
puma, я сейчас проверил код - ни команда создания отрезков, ни команда создания полилиний в реакторе не отслеживаются. Создание текста в слое с типом линии "не-Continuous" корректно вернуло все настройки обратно. Может, еще есть какие-то дополнительные приложения?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.02.2009
Сообщений: 260
|
Насчет полилиний и отрезков - извините, ввел вас в заблуждение, но при тексте также повторяется ошибка при том коде, что я выложил. Все дополнительные приложения временно были удалены. Autocad 2011. Скорее всего просто у вас в коде уже это исправлено. Извините за беспокойство как исправить более менее разобрался, тем более нашел на форуме ваш архив, который вы пересылали ShaggyDoc. Как я понял там как раз это уже исправлено (смысл исправлений, что и у меня, но гораздо элегантней - мне еще лет 10 учиться надо), но жутко завязано на базе данных. Жаль, что наиболее распространена на форуме старая версия. Еще раз спасибо за великолепные функции.
Последний раз редактировалось puma, 15.11.2010 в 01:54. |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Li6-D,
а ты DXF-код отрезков где менял? Программно, когда запущен редактор блоков? Или уже в чертеже? Прошу знающих помочь со следующими 2 вопросами: 1. Как для блока задать цвет? Через TrueColor? А дальше как? Если можно - дайте пример. 2. Создание Группы ( в семействе блоков). Имеется - список (list) VLA-указателей на блоки: obj_list. Всего в списке 17 блоков (указателей на блоки). Надо сгруппировать эти блоки в единую группу, чтобы можно было их разом всех вместе выделять и перетаскивать. ВОт так пытался сделать: Код:
Цитата:
|
|||
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Frigate, а не проще ли запихнуть нужные блоки в набор
Код:
__________________
cadtools |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
TararykovDG,
но этот набор сразу же исчезнет после любой операции, так ведь? Тогда это не совсем то. Хотелось бы, чтоб пользователь мог легко перетащить весь набор в любой момент времени, да и скопировать, если что - не выбирая каждый блок. Что посоветуешь - в чем моя ошибка в коде? Последний раз редактировалось Frigate, 15.11.2010 в 11:39. |
|||
|
||||
Регистрация: 11.10.2010
Сообщений: 980
|
Для описания блока или для вхождения блока? В любом случае есть vla-put-color, который понимает индексированные цвета.
Тут вообще ничего не понял. О создании групп объектов см., например, http://www.cadtutor.net/forum/showth...-about-groups&
__________________
(/= RegDate StartReadDate) |
|||
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Frigate, а зачем Тебе объединять объекты в блок, только для того чтобы потом работать с ними всему сразу при копировании и др. операциях. В моем варианте я запихнул все нужные объекты в набор nbr_blocks и теперь (если конечно этот набор не переопределить) я могу в любой момент сделать (sssetfirst nil nbr_blocks). Подсветяться ручки наших объектов и делай с ними что надо.
Если хочешь посмотри еще такой вариант Повтор предыдущего выбора элементов
__________________
cadtools |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Лиспер,
вот уж спасибо а все-таки, ради интересе - что неверного в моем коде? Вроде все по описанию объектной модели делал... TararykovDG а после закрытия чертежа ведь этот набор исчезнет, так? Или его можно как-то сохранить? |
|||
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Ну можно сделать чтобы сохранялся и после закрытия чертежа. Способов сохранения информации много, но в данноч случая ИМХО лучше всего создать словарь и в него записать набор. Во-первых никаких доп. файлов, никаких заморечей с реестром и для каждого чертежа будет свой словарь в котором своя инфа именно с этого чертежа + при копировании /переносе/переименовании чертежа даже на разные компы вся инфа сохраняется вместе с самим чертежом
__________________
cadtools |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Лиспер,
ну внешней сылкой я его вставлять не буду - это точно. А просто группа будет перетаскиваться вся целиком если ее мышкой ухватить? TararykovDG, со словарями уже немного знаком - набил руку. Хорошо, наверное такой способ мне подойдет. Последний раз редактировалось Frigate, 15.11.2010 в 13:40. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |