|
  |
Создание спецификации автоматически (Дубль2), Рассматриваются технология и ее реализация по автоматическому создани |
|
|
Гость_Supermax_*
|
30.6.2007, 13:17
|
Guest Forum

|
Mmax, я усе твои мысли внимательно изучу, но пока я копаюсь в Autodesk-e на форуме про Refedit Код http://discussion.autodesk.com/search.jspa?q=_-Refedit&objID=f149&numResults=25&rankBy=10001&source=viewforum%7C149&start=0 Не оторваться!
Сообщение отредактировал Supermax - 30.6.2007, 13:17
|
|
|
|
Гость_Supermax_*
|
30.6.2007, 14:13
|
Guest Forum

|
Чесно говоря, я от напряга уже совсем отупел. На форуме Autodesk-a зарегистрировался и свою тему про -refedt создал. Если у кого напряг с английским, повторяю супер пупер клевую прибамбасину. http://pereklad.online.ua/ Заходите, устанавливаете с какого языка на какой переводить, копируете текст в окно и давите "Перекласти" то есть перевести. Можно выбрать кроме "загальной" то есть общей лексики, еще и кучу технических расширений словаря. В любом сайте мира можно общаться, даже латвийском.
|
|
|
|
|
30.6.2007, 16:42
|
Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568

|
Supermax, попробуй всетаки поглядеть на мой метод эквивалентов. Он всетаки более реальный, там не надо копать ссылку, там ты будешь копать ее эквивалент. И чтобы зажечь руку и ручки отдельных элементов, достаточно будет наложить эквивалент и включить все что душа пожелает.
|
|
|
|
|
30.6.2007, 21:00
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
> mmax: все, что ты говоришь, проворачивать совершенно необязательно. P.S. Я так понял, что (судя по количеству скачиваний) мой вариант не катит и никому нафиг не интересен?
|
|
|
|
Гость_Supermax_*
|
1.7.2007, 10:59
|
Guest Forum

|
Хорошо Kpblc, давай покритикуем твой вариант "считалки". Не в плане ее недоделанности, то есть отсутствие разных всяких возможностей, типа вывода на печать в отдельном формате. Это можно присабачить когда угодно. А в плане общей концепции. Проектировщуку что нужно? - Две вещи. 1. Считать элементы для своих нужд, текущих, не окончательных. Чтобы можно было получить ответ, на какой-нибудь количественный вопрос. 2. Создать документ, где все элементы а) - отфильтрованы б) - сгруппированы в) - посчитаны г) - укомплектованы сопровождающей их атрибутикой д) - распечатаны в требуемом для проектировщика формате документа.
Первую часть задачи решает и мой VBA-шный макрос и твой. В своем ты даже немного попытался расширить пространство выбора типов элементов. К стати он не смотря на лажу с полосами - работает. Вторую часть, чтобы решить надо иметь очень разветвленный диалог, либо в начале работы, либо в конце. Я например поставил в начало, поскольку результат такого диалога дает даные фильтрации, необходимые для выбора элементов, а заодно и их группирования. Мне, например, как проетировщику, твоя шапка, перед результатом подсчета никчему. Как говорится не рыба и не мясо. Отчет как таковой - дело весьма редкое и попахивает психиатрической больницей. Всем начальникам подавай спецификации и ведомости, а не отчеты. Аэти спецификации и ведомости все сплош таблицы. А как только начинаешь связываться с таблицами, начинаешь понимать, что на всех не угодишь. Вот я и придумал, как от них избавится. И тебе советую тоже нечто подобное придумать. Без внешних ссылок и дурак посчитает чего и сколько. С внешними ссылками - все зависит от условий выбора - а что собственно считать? И зачем? Я например, пляшу от потребностей тех, кто оплачивает строительство. Без конца одни и теже вопросы: Сколько надо денег на благоустройство? На нулевой цикл, на временное электроснабжение, на коробку здания, на электрику и т.д. и т.п. На эти все вопросы дает ответ смета, а она строится на основе материализма. Есть там работы без материалов, но очень мало. Материалы и их атрибуты - это деньги, которые можно тратить и есть возможность их не потерять (как в случае с работой). Поэтому работа с элементами модели должна быть к этим нуждам приспособлена.
Сообщение отредактировал Supermax - 1.7.2007, 11:02
|
|
|
|
Гость_Supermax_*
|
1.7.2007, 14:21
|
Guest Forum

|
И еще, обращаюсь к обоим моим оппонентам. Тема разрослась на 10 листов. Катастрофически падает ее читаемость. Надо чистить, а мы ни по одному вопросу не пришли к общему мнению. Прыгаем с одного на другое, уходим то в право, то в лево. Надо подводить итоги господа. И сокращать наши опусы. Их можно переделывать, и обобщать. Всякие вопросы друг к другу - превращать в разъяснения в случае не понимания того-то и тоо-то. Иначе нам самим все это надоест.
Сообщение отредактировал Supermax - 1.7.2007, 14:21
|
|
|
|
|
1.7.2007, 20:02
|
Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568

|
Так мой итог: Я забрел сюда в момент попытки зажигания ручки у внешней ссылки. Удалось выяснить, что ручку можно зажечь и получить указатель на объект, но только после выполнения команды REFEDIT, как только прозвучала команда REFCLOSE все падает в nil. Возник спор по поводу кода (2 . “*”). Вопервых ссылка это какойто файл, поэтому былобы разумнее для операций со ссылками запрашивать у пользователя имя файла и программа будет искать ссылку по имени (ssget “_X” (list(cons 2 “file”))). Вовторых мне удалось выяснить, что если в работающем файле есть блок «Чертеж1», то ссылка с именем файла Чертеж1.dwg просто не вставится изза совпадения имен. Даже если этот файл сам является ссылкой в ссылке в любом поколении.
Далее я случайно подумал что ссылке можно придумать аналог или эквивалент виде блока. Но теперь нельзя вставить файл-блок так как на него есть ссылка.
Вобщем я так ничего путнего не предложил.
kpbls чтото придумал, но я с этим так и не ознакомился. Правда доверять приложению без исходного кода ………
Если вопрос еще актуален то я сейчас всетаки попробую испытать метод эквивалентов.
|
|
|
|
|
1.7.2007, 20:57
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Начну в обратном порядке  > mmax : По идее не сегодня-завтра я получу окончательный ответ по вопросу публикации кода (тьфу-тьфу-тьфу, чтоб не сглазить). Будем надеяться, что все будет гуд  > Supermax : Цитата Проектировщуку что нужно? - Две вещи. 1. Считать элементы для своих нужд, текущих, не окончательных. Чтобы можно было получить ответ, на какой-нибудь количественный вопрос. 2. Создать документ, где все элементы а) - отфильтрованы б) - сгруппированы в) - посчитаны г) - укомплектованы сопровождающей их атрибутикой д) - распечатаны в требуемом для проектировщика формате документа. А разве ты ответ на количественный вопрос не получаешь? Это раз  Два. "отфильтровать-сгруппировать-объединить" можно достаточно подробные данные. Обратную операцию, как правило, провернуть практически невозможно. Данные подсчитаны, а вот с распечаткой уж думайте сами. Мне, например, в пятницу вечером было дано задание "оставить вывод в текст в AutoCAD'e как есть, поменяв формат вывода в файл". Цитата В своем ты даже немного попытался расширить пространство выбора типов элементов. Ну, если доступ к стороннему файлу без его открытия - это "немного"...  Цитата К стати он не смотря на лажу с полосами - работает. Было у меня подозрение еще на одну библиотеку, но после того, как в виртуальной машине все было нормально показано, мои подозрения развеялись как дым под ветром. Поскольку лично мне ситуацию повторить не удалось, рецепта дать не могу физически. Цитата Мне, например, как проектировщику, твоя шапка, перед результатом подсчета никчему. Как говорится не рыба и не мясо. Отчет как таковой - дело весьма редкое и попахивает психиатрической больницей. Ага, пока "не сохраненный файл не пытаются подставить как окончательный вариант". У тебя не было такого? У меня - было. Потом же концов не найти. Вот и вставил. Так сказать, обставил пятую точку быками. Цитата Всем начальникам подавай спецификации и ведомости, а не отчеты. У меня начальникам как раз интересны отчеты, как правило. Спецификации интересны тем, кто с ними работает  Возможно, у меня контора такая уникальная. Цитата А эти спецификации и ведомости все сплошь таблицы. А как только начинаешь связываться с таблицами, начинаешь понимать, что на всех не угодишь. Вот я и придумал, как от них избавится. И тебе советую тоже нечто подобное придумать. Продумываю. Только с другой стороны подхожу к проблеме. Кто из нас прав - я не знаю. Цитата Без внешних ссылок и дурак посчитает чего и сколько. С внешними ссылками - все зависит от условий выбора - а что собственно считать? И зачем? Честно говоря, не вижу принципиальной разницы - считать по выбору или по внешним ссылкам. Про смету можно мне не рассказывать - у меня жена сметчица, так что их проблемы я более-менее представляю. И нужны им совершенно другие данные, чем в спецификациях (по крайней мере это не редкость). --- Добавлено: P.S. Попытки найти исходный dvb-проект на машине успеха не имели, а скачать его не удается (похоже, последствия падения форума). Так что посмотреть его по новой я не могу
Сообщение отредактировал kpblc - 1.7.2007, 21:04
|
|
|
|
|
2.7.2007, 8:45
|
Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568

|
А вот и мое творение по эквивалентам. Временное пока. Данный подход полразумевает исследование любого файла, и необязателно даже чтобы на него была ссылка. Можно работать даже из чистого документа. Такой подход даже более универсален. При желании его можно завязать на внешние ссылки. Как я говорил выше если зажечь ручку у ссылки то имя файла можно получить по коду 2. Если файл ссылки лежит черттегде, то гдето этот путь должен быть прописан. либо файл лежит в этомже каталоге, далее если узнали где файл, то работаем с его эквивалентом. Код ;получение активного пространства листа или модели ;если активен видовой экран в любом листе, то АП=Modelspace (defun activ-space-samocad () (if (= (getvar "cvport") 1) (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))) (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) ) );библиотечная
(defun c:test () (setq path (vla-get-path(vla-get-ActiveDocument(vlax-get-acad-object)))) (setq blkfilename (getfiled "Укажите файл на который есть ссылка" "" "dwg" 16)) (vl-file-copy blkfilename (setq fileblk (strcat path "\\" "SamoCADTemp.dwg")))
(vla-startundomark (vla-get-ActiveDocument(vlax-get-acad-object)))
(setq fileblkobj (vla-InsertBlock (activ-space-samocad) (vlax-3d-point 0 0 0) fileblk 1.0 1.0 1.0 0.0 ))
(setq variantobj (vla-explode fileblkobj))
(vla-endundomark (vla-get-ActiveDocument(vlax-get-acad-object)))
;;;#<VLA-OBJECT IAcadBlockReference 076db7a4> #<VLA-OBJECT IAcadExternalReference 076db6d4>
(setq listobj (vlax-safearray->list (vlax-variant-value variantobj))) ;;;Переменная listobj содержит список всех примитивов иследуемого файла ;;;с ними можно делать все что угодно ;;; Правда надо не забыть что при совпадении имен блоков все вставляемые будут переопределены
;;;Дальнейший код уже не так важен просто для примера (setq strlstobj (mapcar (function(lambda (a) (vl-prin1-to-string a))) listobj)) (setq strlstobj (mapcar (function(lambda (a) (vl-string-left-trim "#<VLA-OBJECT " a))) strlstobj)) (setq strlstobj (mapcar (function(lambda (a) (vl-prin1-to-string (read a)))) strlstobj))
(setq strlstobjblok (mapcar (function(lambda (a) (eq (strcase "IAcadBlockReference") a))) strlstobj)) (setq kolichblk (length (vl-remove nil strlstobjblok)))
(setq strlstobjxref (mapcar (function(lambda (a) (eq (strcase "IAcadExternalReference") a))) strlstobj)) (setq kolichxref (length (vl-remove nil strlstobjxref)))
(vl-file-delete fileblk)
(alert (strcat "\nВ ииследуемом файле найдено" "\nВхождений блоков " (vl-prin1-to-string kolichblk) "\nВнешних ссылок " (vl-prin1-to-string kolichxref)))
(command "_.UNDO" "") (princ) ) >>kpblc и всетаки я не могу найти косяков в функции получения активного пространства. По замыслу она должна возвращать МОДЕЛ если активным является лист но у него активен видовой экран или вьюпорт, тоесть открыта дыра в модель. Если видовые экраны закрыты, то возвращает лист. во всех листах все проходит нормально.
|
|
|
|
Гость_Supermax_*
|
2.7.2007, 11:19
|
Guest Forum

|
Оказывается, раньше можно было класть любые файлы, не только архивные. Теперь принимает только архивированные. Но эта надстройка поломала и выкачку. Все файлы, которые не .arj не скачиваются, хотя имеют не большие размеры. Файл первого макроса обновлен. Mmax, -refedit сваливается в *Cancel* даже не входя во вложенную ссылку. До REFCLOSE дело даже не доходит. Ручку включаю, -refedit запускаю, диалог прохожу, и как только все выполнено - *Cancel*. И такое только на вложенных ссылках. На "коренных" все ОК! Если просто refedit запускать, без дефиса, то все дерево показывает, дает возможность по нему походить, кнопки понажимать и как только давиш на ОК - получаеш *Cancel*. Вот зараза!
|
|
|
|
|
2.7.2007, 12:08
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
> mmax : если максимизировать окно ВЭ, находясь на вкладке "Лист" и перейдя в "Модель", у тебя твой вариант функции вернет "не то". Рабочий вариант см. LISP. Получение активного пространства. Две версии
|
|
|
|
|
2.7.2007, 12:26
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Так, я хочу попросить прощения у Supermax'a - проблема с отображением черных полей, как выяснилось, на данный момент нерешаема. Корни проблемы кроются в схемах Windows. При классической схеме все нормально отображается. Стоит взять Windows XP, как получается ситуация, описанная им. Еще раз прошу прощения.
|
|
|
|
Гость_Supermax_*
|
2.7.2007, 16:13
|
Guest Forum

|
Прощенья просят, только тогда, когда обидели. Ты меня обижал? Что-то я не заметил. А вот у меня DCL создается программно, ведь содержание панели зависит от содержания xls-файла. И после выхода из панели - уничтожается. Поэтому наверное я на такую кучу и не наступил.
|
|
|
|
Гость_Supermax_*
|
2.7.2007, 21:25
|
Guest Forum

|
Мужики, гляньте. Что это может быть и где это взять? Цитата Дорогой Джим W -, чтобы исправить эту проблему загружают файл сценария refix.scr с autocad.customer-files группы обсуждений. AUTOCAD 2000-ые, управляющие данных государства слоя, получили от Инструмента Экспресса Менеджера (LMAN) Слоя может заставить ошибку произойти. Чтобы исправить это специфическое падение, вы можете использовать refix.scr сценарий, чтобы переместить данные государства слоя, восстанавливая способность к REFEDIT рисунки в вопросе. Этот сценарий должен управляться на всем внешне ссылается на рисунки (и в большинстве случаев базовые рисунки) а затем рисунки должны быть сохранены. После использования Менеджера Слоя, сценарий нужно управлять снова, если Refedit должен использоваться с внешней ссылкой. Вы могли также использовать ScriptPro Инструмент Миграции, чтобы управлять этим сценарием против собраний рисунков. Если вы делаете так, последнюю линию сценария ((тревога ...)) нужно удалить для действий партии. Это по тарабарски, но что такое refix.scr сценарий я его попытался там найти - и не смог.
Сообщение отредактировал Supermax - 2.7.2007, 21:28
|
|
|
|
|
2.7.2007, 22:40
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
> Supermax : Ну я посчитал что обидел. Возможно, я параноик  > # 195 : А ссылку на оргинал не подскажешь? Это не http://discussion.autodesk.com/thread.jspa?messageID=182868 часом? Честно говоря, то, что я проглядел по http://discussion.autodesk.com, показывает, что этот скрипт ориентирован на решение проблемы сохранения таблицы слоев (и вызвано попытками сохранения таблицы слоев) в AutoCAD версии 2000(i). Добавлено: точнее, статуса слоев через Layer State Manager И к _-refedit, похоже, отношение имеет достаточно слабое. Так, сегодня в 23:19 наконец пришло сообщение от заказчика следующего содержания: Цитата Алексей! Вы можете опубликовать Ваш код <остальное неинтересно> Отсюда мораль - ловите, если интересно. Лично у меня только одна просьба - указывайте все же автора исходного варианта... P.S. Кстати, для неиндексированных свойств дин.блоков у меня там вываливает ошибку. Пока не исправлял в этом коде. Вариант можно посмотреть на http://www.autocad.ru/cgi-bin/f1/board.cgi?t=36637zq
Сообщение отредактировал kpblc - 3.7.2007, 8:12
|
|
|
|
Гость_Supermax_*
|
3.7.2007, 11:24
|
Guest Forum

|
Да, это то сообщение. На мой опус пока ответа не получил.
|
|
|
|
|
3.7.2007, 12:32
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Этот скрипт у них на сайте грохнули, похоже. На других форумах (в том числе cadalyst, augi, theswamp) про него тоже тишина... Так что, думаю, этот код получить практически нереально.
|
|
|
|
Гость_Supermax_*
|
3.7.2007, 12:43
|
Guest Forum

|
Завтра в 21-00 уезжаю в Анапу. День буду в пути. Ноутбук с собой. Приеду свяжусь. Вот мой опус на сайте Автодеска: Код http://discussion.autodesk.com/thread.jspa?threadID=588205 Посматривай, может кто нибудь среагирует.
|
|
|
|
|
3.7.2007, 13:14
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Попробую. У меня с дома инет очень медленный, поочччтти финннский, но что смогу  P.S. Кстати, там тэги [code ] и [/code ] нормально срабатывают, по-моему.
|
|
|
|
Гость_Supermax_*
|
3.7.2007, 19:19
|
Guest Forum

|
Купил книгу: Владимир Свет "AutoCAD Язык макрокоманд и создание кнопок". Надо мыть пол, поскольку завтра отъезд, но не могу оторваться. Теперь мои лиспы, не возможно будет понять тем, кто не знаком с языком DIESEL и языком Script. Пол книги, да что там пол? - Вся книга о файлах *.scr, этих языках и их использовании. Файлы *.cui написаны именно на них. Куча примеров и текстов этих самых *.scr. В магазинах в Москве ее нет. Только в Интернет-магазинах. Где собственно я ее и купил. Всем, кто пишет на Lisp-ах рекомендую. Эти языки полностью можно применять прямо в выражениях Lisp-a. Да и в lsp-файлах. Очень сильно расширяет возможности.
|
|
|
|
|
3.7.2007, 20:54
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Supermax, я не хочу тебя расстраивать, но: DIESEL и Script не всегда хороши. Лично я, работая только в одном документе, где-то за 2-3 месяца (изучая с "нуля") уперся в их ограничения (к примеру, команда может быть длиной только 255 символов, не более, чего зачастую попросту мало. Добавлено: для mns и mnu, в cui вроде как длина не ограничена.). А также некоторые неявные проблемы. Например, на макро-языке (там будет уже не только DIESEL) написать программку вида "запустить рисование полилинии на определенном слое, с определенными настройками системных переменных; в случае завершения, как успешного, так и ошибочного, вернуть обратно настройки AutoCAD'a" мне написать не удалось. Cui написан не не DIESEL. Он вообще-то написан в текстовом режиме, кодировка UTF-8, формат - XML. MNU, MNS пишутся в обычном текстовом редакторе в кодировке Windows-1251. А вот макросы, которые засобачиваются на кнопки - те да, там DIESEL применяется достаточно широко, особенно в штатных командах. Хотя лично я предпочитаю все же Lisp использовать, где это возможно. Насчет "расширяет возможности" ты ИМХО погорячился. Но, поскольку я могу и ошибаться, приведи пример. Лично я столкнулся только с одним вариантом - работой с modemacro, значение которой зависит от активной закладки, там проще сделать именно на DIESEL'e, не заморачиваясь с реакторами.
Сообщение отредактировал kpblc - 4.7.2007, 9:11
|
|
|
|
Гость_Supermax_*
|
4.7.2007, 10:13
|
Guest Forum

|
Ну, очень рад, что ты знаком с этими языками. Будет кому мне помогать. С применением - ты явно перегнул палку. Всему свое место. Даже 255 символов могут очень многое. Я в частности не сноб AutoLispa. В частности, я разговаривал с одним кадром, так тот даже команды AutoCAD-a не хочет применять в макросах. А я вот применяю. А когда их применяешь, то язык макрокоманд очень сильно изменяет правила пользования этими командами. В cui-файлах есть строки <command> и далее сполошной DIESEL и Lisp. В частности в отношении команды _refedit я нашел запись, в которой явно написано, что если по окончании команды в системной переменной Refeditname (getvar,refeditname) "") то все сбрасывается и отменяется. А у меня соответственно зародилось подозрение, что при чтении ссылки из другой ссылки тут как раз может и не быть ее имени. Если этот пункт .cui-файла как нибудь обойти, или заблокировать, то что-то может измениться. Краски у художника должны быть разные, тогда и картина получится стоящая. И нельзя одной и той же краской рисовать половину картины - не красиво. Я "квадраты Малевича" создавать не хочу.
|
|
|
|
|
4.7.2007, 11:22
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Цитата("F1") REFEDITNAME (Read-only) Type: String Not Saved Initial value: ""
Displays the name of the reference being edited. Ну или то же самое, но по-русски: Цитата REFEDITNAME (Только чтение) Тип: строковый Сохранен в: Не сохранен Начальное значение: ""
Отображает имя редактируемого вхождения . Не думаю, что оно тебе сильно поможет. Цитата В частности, я разговаривал с одним кадром, так тот даже команды AutoCAD-a не хочет применять в макросах. Я тоже не хочу. И не применяю. Потому что "маловато будет". К примеру, стандартная команда одной кнопки меню у меня выглядит так: Код ^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (kpblc-block-level-insert t));cadware; Работает на ура  Дальше. Я думаю, я уже показал, что до состава внешней ссылки можно добраться и не входя в _.-refedit. Проанализируй код на досуге. Пользуясь твоей аллегорией, решаемая здесь задача - как гравюра. А ты туда граффити просишь добавить
|
|
|
|
Гость_Supermax_*
|
4.7.2007, 12:31
|
Guest Forum

|
Kpblc, ссылка вставлена с поворотом и сдвигом в другую ссылку, та с поворотом и сдвигом в третью, и т.д. Чтобы расчитать, какие элементы надо выбрать в этой ссылке, надо все дерево вложенности поднять, все координаты пересчитать и ПСК этой ссылке изменить, чтобы секущая рамка, или ее цифровой эквивалент определили нужные примитивы. Более "Китайского" способа придумать не возможно. ДА! Можно, но только после обследования у врача психиатра. REFEDITNAME - я изменить (пока) не могу. Да наверное и не понадобится. А вот отловить конец выполнения команды и ее прочесть - попробую. Есть ОЧЕНЬ сильное подозрение, что причина сваливания в *Cancel* кроется именно в том факте, что срабатывает Код или это - <MenuMacro UID="ID_RefAdd"> или это - <MenuMacro UID="ID_RefRemove"> или это - <MenuMacro UID="ID_RefSave"> или это - <MenuMacro UID="ID_RefDscrd"> Все начинается с Код <MenuMacro UID="ID_RefEditor"> <Command>^C^C_refedit; </Command> Очевидная строка запуска команды. Все остальные - имет строки автоматического срабатывания Код <MenuMacro UID="ID_RefAdd"> к примеру <Command>$M=$(if,$(eq,$[b](getvar,refeditname),"")[/b],^C^C^P(ai_refedit_alert);^P,$(if,$(and,$(=,$(getvar,tilemode),0),$(=,$(getvar,cvport),1)), ^C^C_refset;,^C^C_refset _add;))^Z</Command> Если нет значения, то запустит _add Другая - Код <MenuMacro UID="ID_RefSave"> запустит ^C^C_refclose Все сплошь завязаны на IF и значение refeditname.
|
|
|
|
Гость_Supermax_*
|
4.7.2007, 12:49
|
Guest Forum

|
Есть правда еще одно подозрение. Когда запускается _-refedit, да и любая другая команда, она начинается с чего? - с ^C^C это сбрасывает выбранный набор. Ручка гаснет. Далее как правило следует в макросе либо _Previous либо _Last из набора Select, а их то и нет! Мы ведь только ручку включали, а набора не было! Вот и выходит, что "". С начала надо как-то вставить в набор Select-a эту ссылку, а потом уж запускать _-refedit. Чтобы запустив _Select "L" или "P" опять включилась ручка. Но как это сделать??? Надо наверное попробовать _Add
Сообщение отредактировал Supermax - 4.7.2007, 15:03
|
|
|
|
|
6.7.2007, 12:04
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
К #205 Я не зря тебе указывал на разные владельцы примитивов (свойство Document). Поэтому выполнять подобную математику придется, как ни крутись (это если ты не откажешься все же от идеи получать "неполный" состав внешней ссылки).
|
|
|
|
|
6.7.2007, 18:05
|
Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568

|
Supermax, Попробуй всетаки зпустить код из сообщения 190 http://forum.abok.ru/index.php?showtopic=1...st&p=139272На данный момент он просто подсчитывает сколько блоков и сколько ссылок находится в любом файле. Но в переменной listobj хранятся все графические VLA-объектs исследуемого файла. вот по нимто и можно пересчитать любую информацию, при этом все координаты базовых точек будут в мировой МСК документа из которого данный лисп запускался и будут доступны все имена блоков без искажений. И после подсчета в документе не остается временного мусора. Это вроде то что тебе нужно только без ковыряния ссылки. Если такой подход устроит то будем развивать.
|
|
|
|
Гость_Supermax_*
|
7.7.2007, 7:40
|
Guest Forum

|
Kpblc говорит мне о получении данных не полной ссылки, Mmax - об альтернативном методе получения результата, все это чудесно и интересно НО! Прорабатывая вариант с Refedit я натолкнулся на некоторую загадочную неправильность ее поведения. Выделяемые ручкой объекты я не только в refedit не могу передать. Я их в блок вставить не могу, в группу вставить удалось, но после команды select "G" и далее указание имени группы, куда я вставил отмеченную ручкой ссылку - машина систематически уходт в накаут, то есть фатал еррор. Объект есть объект, если я его нашел, дамп свойсв и методов прочел, то эти свойства и методы должны работать, а на деле происходит совсем иное. Понимаете, мужики, продвижение к конечному результату - дело великое, но когда сталкиваешся с преградой, до того как принять решение, об изменении маршрута следования, эту преграду надо "понять", обосновать необходимость перестройки концепции, да просто удовлетворить любопытство - что за фигня такая на дороге легла и пройти не дает. На дорогах, где все чисто и просторно, ничего интересного не найдешь. А вот разбирая такие "глюки", не только находишь много нового, а еще и глубже начинаешь понимать систему, что в дальнейшем дает возможность не наступать на эти грабли повторно. Многие вещи являются недоработкой программистов Autodesk-a. причем очень серьезной не доработкой. Как это так, команда без префикса работает полностью, а с префиксом - частично? Вы понимаете, что за этой информацией стоит? Полазьте на их форумах. Я например много раз видел сообщения, результатом которых был очередной сервиспак. Мне уже фиолетово, refedit это, или какая-то другая команда. Работать в программе, которая имеет известный дефект как-то страшновато. В общем, последний аккорд: Что такое на физическом уровне процесс выбора объекта? В описании команды select, включение ручек подается как второстепенный и совсем не обязательный процесс. Главнее его - подсвечивание объекта контурными линиями, да и то не как действие определяющее этот выбор, а скорее как антураж этого выбора и тоже не обязательный процесс. Что же такое сам выбор? Очень хочу это понять.
Сообщение отредактировал Supermax - 7.7.2007, 15:57
|
|
|
|
|
7.7.2007, 18:15
|
Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568

|
Цитата(Supermax @ 7.7.2007, 8:40)  Что же такое сам выбор? Очень хочу это понять. Выбор внешней ссылки - это выбор другого файла. Выбор ссылки в ссылке это выбор файла, запись о котором лежит в том самом первом другом файле. Так не прощщели выбирать сразу файл без посредников и получить полный доступ к его графическому и частично неграфическому составу, что и делает моя последняя функция. Таким образом можно проанализировать совершенно любой документ даже если он не связан с текущим никакими ссылками. правда там идет переопределение блоков, но и эту беду можно решить. Этот способ не просто удобен но и прост по самое немогу. если вас смущает тот факт что пользователь может не знать откуда ссылка, то он может поглядеть путь в свойствах, если пути нет, то он вообще лежит в этойже папке где и текущий документ. И вообще пользователь просто теоретически не может Не знать откуда в его документе над которым он долго и упорно работал беруцца ссылки.
|
|
|
|
Гость_Supermax_*
|
8.7.2007, 11:23
|
Guest Forum

|
Mmax, я спрашиваю про механизм выбора объектов, а не про определение принадлежности объекта к родительскому объекту. Вот ты к примеру, нарисовал линию. Щелкнул по ней мышкой, она запунктирилась и у нее включились ручки. Если отбросить антураж выбора, то есть включенные ручки и пунктирное выделение, что еще происходит в программе, что определяет этот выбор. Ты же понимаешь, что сбросив системные переменные, отвечающие за подсветку и индикацию ручек в 0 ты выбор этим не отменишь? Вот я и мучаюсь этим вопросом. НО! я готовлю серьезное послание на сайт Autodesk-a с утверждением в не корректности работы команды, сам понимаешь какой. Там на вопросы отвечают разработчики када и им должно быть не безразлично, когда название темы к примеру "_-refedit не работает!" только по английски. Они мне еще ни разу не ответили и такое впечатление, что я затронул какие-то скрытые мотивы, не дающие им возможности адекватно реагировать на поставленные вопросы. Как только я с ними разберусь и пойму, что дальнейшая борьба результата не принесет, то тут же начну разрабатывать твой вариант вставки и сборки модели. Твой код я внимательно изучил и полностью согласен с основными критериями подготовки процесса, а вот реализация вставки должна быть с переназначением имен слоев, чтобы все вставленные элементы были идентифицированы к конкретному файлу. Изменение конструкции вставленного должно быть тоже отнесено к определенному файлу ссылки-прототипа, чтобы можно было редактировать файл-матку и даже, при разных вариантах одного и того же вставленного фрагмента, создавать файлы-репликанты, с копиями фрагментов. Kpblc, твой вариант с пересчетом тоже должен существовать, но скажи, как приравнять координаты вставки элементов к единому пространству? Вариант mmax-a дает прямую возможность частичного выбора объектов, а как в твоем случаеэто реализовать - не понимаю. Отказаться от выбора рамкой не трудно, но тогда надо локализировать не только этажи, но и все помещения в них. Как заранее узнать, что потребуется? Появление правил разрушает лояльность пользователей к программному продукту. Ссылки, ссылки, сылки! Что с ними делать? Никто не поймет, если взять и сказать, типа вставляйте, но идентификация объектов должна быть развитой и не зависимой, и корректирование - только через файл-матку в слепую.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
Реклама
ООО «Арктика групп» ИНН: 7713634274
Реклама: ООО «СибСтронг» | ИНН 6670013662 | ERID: 2VtzqvWgxEU
ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqvybpdW
Реклама: ООО «СЛ-ЛАЗЕР» ИНН 7727447267 | erid: 2VtzquvhFWx
Последние сообщения Форума
|