|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
В свое время обдумывал где и как хранить информацию о "контактных" точках блоков.
То есть точек блока, которые могут соединяться меж собой в схеме или графике каком... В моем случае было достаточно 4 групп "контактных" точек по квадрантам - верх, низ, лево, право. В итоге решил хранить в самих блоках, добавляя в них с помощью простейшего лиспа отрезки, которые: 1 имеют строго определенную длину, которая на несколько порядков меньше размеров блока; 2 содержат группу невидимости (60 . 1). Другой лиспик извлекает список "контактных" точек при указании на вставленный в чертеж блок. Примитивно, но это работает ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
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
С.-Петербург
Сообщений: 40,411
|
puma, я сейчас проверил код - ни команда создания отрезков, ни команда создания полилиний в реакторе не отслеживаются. Создание текста в слое с типом линии "не-Continuous" корректно вернуло все настройки обратно. Может, еще есть какие-то дополнительные приложения?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.02.2009
Сообщений: 260
|
Насчет полилиний и отрезков - извините, ввел вас в заблуждение, но при тексте также повторяется ошибка при том коде, что я выложил. Все дополнительные приложения временно были удалены. Autocad 2011. Скорее всего просто у вас в коде уже это исправлено. Извините за беспокойство
![]() Последний раз редактировалось 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
Воронеж
Сообщений: 575
|
Frigate, а не проще ли запихнуть нужные блоки в набор
Код:
__________________
cadtools |
|||
![]() |
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
TararykovDG,
но этот набор сразу же исчезнет после любой операции, так ведь? Тогда это не совсем то. Хотелось бы, чтоб пользователь мог легко перетащить весь набор в любой момент времени, да и скопировать, если что - не выбирая каждый блок. Что посоветуешь - в чем моя ошибка в коде? Последний раз редактировалось Frigate, 15.11.2010 в 11:39. |
|||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Для описания блока или для вхождения блока? В любом случае есть vla-put-color, который понимает индексированные цвета.
Тут вообще ничего не понял. О создании групп объектов см., например, http://www.cadtutor.net/forum/showth...-about-groups&
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Frigate, а зачем Тебе объединять объекты в блок, только для того чтобы потом работать с ними всему сразу при копировании и др. операциях. В моем варианте я запихнул все нужные объекты в набор nbr_blocks и теперь (если конечно этот набор не переопределить) я могу в любой момент сделать (sssetfirst nil nbr_blocks). Подсветяться ручки наших объектов и делай с ними что надо.
Если хочешь посмотри еще такой вариант Повтор предыдущего выбора элементов
__________________
cadtools |
|||
![]() |
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Лиспер,
вот уж спасибо ![]() а все-таки, ради интересе - что неверного в моем коде? Вроде все по описанию объектной модели делал... TararykovDG а после закрытия чертежа ведь этот набор исчезнет, так? Или его можно как-то сохранить? |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Ну можно сделать чтобы сохранялся и после закрытия чертежа. Способов сохранения информации много, но в данноч случая ИМХО лучше всего создать словарь и в него записать набор. Во-первых никаких доп. файлов, никаких заморечей с реестром и для каждого чертежа будет свой словарь в котором своя инфа именно с этого чертежа + при копировании /переносе/переименовании чертежа даже на разные компы вся инфа сохраняется вместе с самим чертежом
__________________
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 |