|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
А что понимается под правильной призязкой? на мой взгляд, в данном случае, не надо задавать никаких спец режимов привязки, отличных от "рабочего" набора привязок.
Я понимаю, что бывают ситуации, когда надо только один конкретный вид привязки (и даже делал такое), но не считаю этот случай таковым
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Я несколько раз пытался понять, чего надо получить... Оказалось выше моего понимания. Может, такой код будет более устойчивым (код из #2231 у меня работал "как бог на душу положит"):
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 25.08.2014 в 15:54. |
|||
|
||||
мать моя женщина... Алексей, я десятка 2 привязок посадил - ничего не увидел странного... а твой шедевр я еще месяц раскуривать буду
поясни, что ты имел ввиду под "бог на душу", представить не могу, желательно с пояснениями что и зачем добавлено.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы... |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Vladimir_Sergeevich, у меня твой код через раз на ровном месте (то при попытке выбора первой оси, то при попытке ввода точки) выдавал ошибку. Кстати, я у себя тож одну ошибку нашел (уже исправил). А логика-то работы проста как 3 копейки:
1. Получаем первую ось. Если пользователь нажал Esc или правую кнопку (то есть ни шиша не выбрал), то просто уходим с выполнения 2. Дальше аналогично запрашивается вторая точка. Если пользователь нажал правую кнопку, то вместо точки запрашивается "вторая ось". 3. Дальше, если в п.2 выл выбран объект (а не точка), повторно запрашиваем точку. Заодно гарантированно преобразовываем объекты в ActiveX (можно было и в другом месте это сделать, но я оставил как есть - писалось-то все "на коленке") 4. По полной аналогии с п.1 запрашиваем точку вставки и угол поворота текста. 5. Вставляем текст в пространство, в котором находится "ось". Если пользователь нажмет Esc в любом запросе, или укажет непонятно чего - код выполняться не будет. P.S. По-хорошему надо бы контролировать тип примитивов "осей", но мне уже лениво
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 05.03.2012
Санкт-Петербург
Сообщений: 20
|
Просмотрел много тем про работу с атрибутами блоков. С тем, как в лиспе присваивать им новые значения, примерно понял. Но не могу этого проверить для своих нужд. А именно:
Есть мелкий работающий лисп, вставляющий несколько блоков. Для первого блока точка вставки указывается кликом, для остальных точка вставки пляшет уже от нее приращением координат. Первой точкой всегда служит угол рамки чертежа, которая тоже является блоком (динамическим). В исходном лиспе она никак не фигурирует, т.е. она просто есть в модели изначально и все. И вот появилось желание дополнить эту рамку атрибутом с номером листа И прописывать этот атрибут в процессе работы моего лиспа. Загвоздка вышла с тем, как обратиться к атрибуту именно того блока, на который был сделан клик. Вот в начале я получаю эту точку: Код:
Код:
И далее мне нужно обратиться к атрибуту блока с известным названием и известной точкой, лежащей на нем. Можно ли определить нужный блок вот так: Код:
|
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
результат функции (entsel ...) содержит как точку указания, так и ename выбранного блока.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Цитата:
Цитата:
Код:
Код:
в итоге вся конструкция примет вид: Код:
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Код:
1. Пользователь может кликнуть совсем не на точке, "лежащей на блоке", а промахнуться 2. Кликнет не на блоке "название", а на другом. 3. Пользователь может нажать Enter. 4. Пользователь может нажать ESC. В любом случае все остальные действия будут бессмысленны. Правильно будет действовать только сам программист, да и то пока не забыл. А пользователь имеет право делать всё не так, и программист это должен учитывать. И писать код со всеми необходимыми проверками до "исполнения по существу". Код:
Далее смотреть код нет смысла. |
|||
|
||||
Коллеги, кто поможет написать простенький ЛИСП?
Я начал прорабатывать блок-схему процесса но запутался и сам разобраться не могу. Описание: В модели содержатся несколько сотен и даже тысяч блоков, обычных и динамических. Часть блоков имеет набор атрибутов, предназначенных для создания спецификации. Имена блоков соответственно уникальные, но не знаю имеет ли большое значение - из каких символов и какая длина имени блоков - имена абсолютно разные и по длине и по типу применяемых символов... Важно учесть, что обработка блоков должна по идее выполнятся поштучно (поочередно), если блок динамический и можно применять групповой выбор, только если блок статистический. Критерии обработки: 1) Блок должен содержать атрибут "марка" (причем у динамического блока имя одно и то же, а значение атрибута "марка" разное) 2) Блок не должен содержать атрибут "номер" со значением "б/п" (эти блоки нужно пропускать всегда) 3) Блокам с одинаковым значением атрибута "марка" должны быть присвоены одинаковые значения атрибута "номер" 4) Блоки, с пустым значением атрибута "номер" должны получить новое значение, при этом: 4.1 Изначально нумерация может быть хаотической, поэтому при первом запуске ЛИСП должен очистить все значения атрибутов "номер" не содержащих "б/п" на пустые значения. 4.2 После очистки ЛИСП присваивает в порядке возрастания всем блокам новые значения атрибутов "НОМЕР" в числовом формате 1.2.3.4.5.6.... и т.д. с условием соблюдения предыдущих пунктов 1-2-3 5) При повторном запуске ЛИСП проверят какой список значений получился во всех значениях атрибутов "номер": 5.1. Если список содержит пропуски типа 1.2.3_._.5.6. и нет новых блоков с пустым значением атрибута "номер" - переписать поочередно максимальные значение на пустующие. 5.2. Если имеются блоки с пустым значением атрибута "НОМЕР" (были добавлены новые блоки) - им присвоить очередные значения. Пример файла во вложении. Учитывая, что в лиспе пока вообще ни бум-бум... прошу объяснить с самого начала пошагово с реальными примерами. Последний раз редактировалось Sirius2w, 07.09.2014 в 13:46. Причина: Исправился. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Sirius2w, есть спец.раздел. Называется "Поиск исполнителей". У этой темы и у этого раздела задачи иные.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Простите Алексей, но я результатом не планирую пользоваться единолично - хочу что бы и обсуждение было в широком доступе и результат тоже.
Так можно? Тем более условия вознаграждения тут не обсуждаем вообще. Только техническую сторону. Последний раз редактировалось Sirius2w, 05.09.2014 в 17:07. Причина: каюсь )) |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
Sirius2w, ты же просишь не помочь тебе в разработке (объяснить скользкие моменты), а написать за тебя. Почему-то меня обуревают сомнения, что кто-то согласится...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Прогресс конечно есть - не совсем ноль, начал к примеру с этого: (defun c:ATConsecutive_numbering () а как дальше - вообще не понятно. |
||||
|
||||
Все, что нашел с помощью поиска не совсем подходит - нумерация блоков не учитывает, что блоки с одинаковым значением атрибута "марка" должны иметь одинаковый номер..((
Последний раз редактировалось Sirius2w, 09.09.2014 в 13:20. |
||||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |