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

|
Внимание! Все сообщения в данной теме должны строго соответствовать предмету обсуждения. Вопросы справочного харрактера, не влияющие на ход рассуждений по данной проблеме и ответы на такие вопросы, существуют только на последней странице! Сообщения эмоционального харрактера, разговорного обмена репликами, и т.п, также существуют только на последней странице. Очень прошу отозваться того модератора, который готов взять шефство над данной темой. Чтобы не обременять модератора частыми профилактическими мероприятиями по зачистке темы, готов взять на себя обязанность по сообщению ему через функцию "Доложить" о сообщениях, не представляющих по моему мнению никакого интереса. НО! не настаиваю на выполнении действия по их удалению. В случае появления существенных разногласий между мною (инициатором темы) и модераторм, оставляю за собой право прекратить участие в обсуждении и если мне на этот момент будет доступна функция удаления своих сообщений, предварительно уведомив модератора - удалять их. Мои сообщения, что бы они не содержали, разрешаю удалять по любому поводу. И так. На данный момент мною создается программный продукт (макрос к программе AutoCAD), позволяющий при определенных условиях, обрабатывать чертежи, или модели в DWG формате с последующим автоматическим созданием листов спецификаций и заполнением листа ресурсов программы Microsoft Project. Данный продукт, после его написания будет подарен всем доступным мне представителям производителей оборудования и материалов для строительства. Также, данный продукт, будет выложен на данный сайт. В процессе создания данного продукта, в данной теме будут выкладываться отдельные части будущего продукта, для их обсуждения или применения участниками и гостями форума по своему усмотрению. Предшествующая версия макроса, позволяющая производить подсчет блоков по их имени, а также подсчет общего колличества длин, площадей и объемов с переводом в метры, метры2 и метры3 представлена ниже. Результаты данного подсчета транслируются автоматически в Word или Excel. Размер файла 151 КБ
Сообщение отредактировал Supermax - 2.7.2007, 11:07
Прикрепленные файлы
Prop.rar ( 38,86 килобайт )
Кол-во скачиваний: 1128
|
|
|
|
|
 |
Ответов
(150 - 179)
|
28.6.2007, 13:15
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Цитата ** _kpblc-comserver-countoptions ERROR #93: bad argument type: VLA-OBJECT nil А dll зарегистрирована в системе?
|
|
|
|
Гость_Supermax_*
|
28.6.2007, 13:17
|
Guest Forum

|
Еще одна особенность внешних ссылок. Если вы копируете в текущем чертеже внешнюю ссылку, то копируется только ее "верхушка" содержание же этой внешней ссылки остается в базе в единственном числе. Не смотря на то, что refedit при не программном его запуске (или ее?) дает возможность выбора пространства редактирования, изменения происходят по всем представлениям этого элемента базы в рисунке.
|
|
|
|
|
28.6.2007, 13:19
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Я тебе открою страшную тайну. Ты только не пугайся. Хотя ты уже большой. (шепотом) Аналогичное происходит и при работе с блоками. Только тссс!!!
|
|
|
|
Гость_Supermax_*
|
28.6.2007, 13:33
|
Guest Forum

|
Запустил, выделил 1 блок, посчитало все нутро. Хотя в сообщении сказало, что найден 1, а в результате выдало 2. Я щас эту ссылку попробую своей NameEdit тряхнуть.
|
|
|
|
|
28.6.2007, 13:34
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Насосов сколько отображается? Два. Ну вот и...
|
|
|
|
Гость_Supermax_*
|
28.6.2007, 14:17
|
Guest Forum

|
Срочно! Функцию на предмет возможности редактирования выделенного объекта. Книга Полещука очень толстая зараза.
|
|
|
|
|
28.6.2007, 14:35
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Переведи плиз. Потому как теоретически достаточно проверить состояние слоя, на котором лежит элемент, неудаленность элемента и доступность его (элемента) редактирования. И все.
|
|
|
|
Гость_Supermax_*
|
28.6.2007, 14:59
|
Guest Forum

|
Слоев всего два 0 и Defpoints. Оба включены и доступны. Есть функция, мелькала недавно, проверка на возможность редактирования любого оюъекта.
|
|
|
|
|
28.6.2007, 15:04
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Ручного редактирования, что ли? Я просто вопроса понять не могу
|
|
|
|
Гость_Supermax_*
|
28.6.2007, 15:06
|
Guest Forum

|
Кажется я напал на след. Все дело в команде, не команде, в в результате выполнения команды Select. Включаются не только ручки, а еще и подсвечивается примитив. Точнее не подсвечивается, а пунктирится. Если включать ручки у этих "коренных" ссылок, автоматически они сразу пунктирятся. А если у "внутренних" - нет. При нормальном вхождении Refedit, при переборе внутренних ссылок, на экране пунктиризация бегает с одного элемента на другой. А тут как это сделать? Ручку врубил, а теперь надо запунктирить.
|
|
|
|
|
28.6.2007, 15:11
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Чувствую себя странно... Ощущение, что мы с тобой говорим о принципиально разных вещах и задачах. Подсветка примитива - (vla-highlight) либо пропущенный параметр в (sssetfirst). Цитата При нормальном вхождении Refedit, при переборе внутренних ссылок, на экране пунктиризация бегает с одного элемента на другой. А чего ж у меня-то не бегает? Или тебе мой вариант не годится напрочь?
Сообщение отредактировал kpblc - 28.6.2007, 15:11
|
|
|
|
Гость_Supermax_*
|
28.6.2007, 15:45
|
Guest Forum

|
Твой вариант у меня в частности директивы черные такие показывает, что там в этх черных полосах видно не всегда и то еле-еле. Могу скрин показать. Во вторых, я могу тебе свой входной скрин показать, но в fas его перекачивать пока некогда, хотя могу и перекачать.
|
|
|
|
|
28.6.2007, 16:01
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Вот уж чего-чего, а этого точно не ожидал. Дома или завтра попробую на виртуальной машине провернуть. Скорее всего, еще одна dll-ка потребуется.
|
|
|
|
Гость_Supermax_*
|
28.6.2007, 16:13
|
Guest Forum

|
Подсветка функцией vla-Highlight внешней ссылки и даже попробовал подсветить в ней фильтр (деталь) - ничего не дала. В смысле вернула nil, но это так и положено, а подсветить не подсветила.
|
|
|
|
|
28.6.2007, 21:44
|
Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568

|
Может вопрос уже сдесь обсуждался. Чтобы покопаться в потрохах ссылки надо вспомнить сначала, что она является другим реальным документом без которого она и существовать не будет. И еще стоит вспомнить, что любой документ можно вставить как блок в текущий документ, При этом вам этот документ будет доступен с потрохами. И после получения необходимых примитивов, его можно удалить до самого последнего уровня. Вот только во вставляемом документе не должно быть блоков с именами равными имени файла тк вновь вставленный блок будет иметь имя файла и получится совпадение имен и будет ошибка. Код ;получение активного пространства листа или модели ;если активен видовой экран, то АП=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 insertblock-indocument-vla-samocad (block_pathfile_str / b1) (setq b1 (vla-InsertBlock (activ-space-samocad) (vlax-3d-point 0 0 0) block_pathfile_str 1.0 1.0 1.0 0.0 )) (vla-delete b1) (princ) ) ;(insertblock-indocument-vla-samocad "C:\\SamoCAD.dwg") ;в файле SamoCAD.dwg не должно быть блоков с именем SamoCAD.
|
|
|
|
|
28.6.2007, 23:51
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Цитата(Supermax @ 28.6.2007, 16:45)  Твой вариант у меня в частности директивы черные такие показывает, что там в этх черных полосах видно не всегда и то еле-еле. Могу скрин показать. Во вторых, я могу тебе свой входной скрин показать, но в fas его перекачивать пока некогда, хотя могу и перекачать. Только что проверил. "Чистая" Windows XP Pro+SP2, AutoCAD 2005 Eng, AutoCAD 2006 Eng, AutoCAD 2006 Rus, AutoCAD 2007 Eng - все показывают одно и то же (см.картинку, на примере 2005). Проблема явно не в dll, а у тебя в системе.
|
|
|
|
Гость_Supermax_*
|
29.6.2007, 9:45
|
Guest Forum

|
В файле 3 скрина. 2006, 2007 и 2008 кадов. У меня два монитора, поэтому скрин такой широкий. С права узнаеш свой пост, с которого я слизывал строку запуска. Я не исключаю возможность, что регистрация твоей Dll прошла не гладко. Могу попробовать ее перерегистрировать. Только под твоим чутким руководством, чтобы ты был уверен, что все шаги были сделаны так, как надо.
Сообщение отредактировал Supermax - 29.6.2007, 9:46
|
|
|
|
Гость_Supermax_*
|
29.6.2007, 9:59
|
Guest Forum

|
Для mmax-а: До изменения политики конструктивизма модели, дело пока не дошло. Еще не все способы перепробовали. Не исключено, что к предлагаемому варианту вставки "чужих" творений мы еще вернемся. И скорее всего, такой способ тоже надо "обсасать". Только рот пока занят внешними ссылками. Вот сижу и с нуля пробую подсвечивать, объединять в блок и опять подсвечивать. Написал Полещуку письмо - молчит пока. Наверное утонуло в спаме. Спам хорошая штука, каждый день заставляет проверять почту и чистить почтовый ящик. Дисциплинирует однако. Но если пару - несколько дней туда не зайдешь - все, кранты. Тысячи раз нажимать на мышь, никто не сможет. Проще все грохнуть. Что и происходит у великих мира всего, периодически.
|
|
|
|
Гость_Supermax_*
|
29.6.2007, 12:03
|
Guest Forum

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

|
Возвращаясь к вопросу о регистрации dll и неверном отображении формы. Полдня сегодня потратил, но сделал-таки видео. Тестовая система: Windows XP Rus + SP2 (интегрированный); AutoCAD 2006 Rus + SP1, AutoCAD 2007 Rus + SP1, AutoCAD 2008 Eng. Больше на машине ничего не установлено. Видео лежит по адресу (сюда отказалось прикладываться напрочь): http://rapidshare.com/files/40039945/dll_2...06_29-17-54.rarВо вложении - кодек, необходимый для проигрывания avi-файла. Также его можно взять по адресу http://rapidshare.com/files/40040064/tscc_...06_29-17-02.rar (если сюда опять откажется приаттачиваться). > mmax : Извини, конечно, но при таком подходе, во-первых, напрочь теряется смысл внешних ссылок и удобства работы с ними. Во-вторых, ну вставил ты блок (точнее, его описание), а дальше-то что? И вот еще - критику кода примешь?
Сообщение отредактировал kpblc - 29.6.2007, 16:41
|
|
|
|
|
29.6.2007, 20:25
|
Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568

|
Цитата(kpblc @ 29.6.2007, 17:31)  И вот еще - критику кода примешь? Не понялл вопроса. В данный момент не могу протестить все имеющиеся здесь функции. Работы много. Здесь я пока просто отдыхаю. Или может меня уже самого гдето критикуют? покажите где. Про документ-блок я имел ввиду, что ненадо заставлять пользователя вместо ссылки ставить блок. Я имел ввиду, что анализируя ссылку программа определяет откуда ссылка взялась, вплоть до запроса файла у пользователя, потом быстренько вставляет блок, анализирует, и удаляет. Если так прикинуть, то все кто не блоки будут входить в состав блока с именем = имени файла, а блоки уже будут иметь вполне конкретные описания.
|
|
|
|
|
29.6.2007, 20:57
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Тебя никто и нигде не критикует, да и я критиковать (а на самом деле рассказать о тех трудностях, с которыми можно столкнуться) собирался именно твой последний код  Цитата Про документ-блок я имел ввиду, что ненадо заставлять пользователя вместо ссылки ставить блок. Я имел ввиду, что анализируя ссылку программа определяет откуда ссылка взялась, вплоть до запроса файла у пользователя, потом быстренько вставляет блок, анализирует, и удаляет. Если так прикинуть, то все кто не блоки будут входить в состав блока с именем = имени файла, а блоки уже будут иметь вполне конкретные описания. Я вот тут ничего не понял из того, что ты написал. "Не надо пользователя заставлять..." - а разве его кто-то заставляет? Цитата анализируя ссылку программа определяет откуда ссылка взялась, вплоть до запроса файла у пользователя, потом быстренько вставляет блок, анализирует, и удаляет. Ээээ... А зачем? Зачем вставлять блок? Если и без этого добраться до состава внешней ссылки никаких трудностей не представляет? Дальше для меня смысл высказывания как-то... Ускользает он от меня, короче  (Кстати, я уже тоже отдыхаю - я сделал все что мог, рабочий вариант показал, теперь в ожидании "добра" от заказчика на публикацию кода.)
|
|
|
|
|
29.6.2007, 21:12
|
Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568

|
Цитата о тех трудностях, с которыми можно столкнуться) собирался именно твой последний код Надеюсь что это высказывание не про активный space. Про блок я и сам молчу Да я уже сам более склоняюсь к тому что несу чушь какуюто. Хотя с помощью ССЫЛРЕД и можно получить примитивы, но после ССЫЛЗАКР они превратятся в простые символы Цитата(Supermax @ 29.6.2007, 10:59)  Написал Полещуку письмо - молчит пока. Наверное утонуло в спаме. Спам хорошая штука, каждый день заставляет проверять почту и чистить почтовый ящик. Дисциплинирует однако. Но если пару - несколько дней туда не зайдешь - все, кранты. Тысячи раз нажимать на мышь, никто не сможет. Проще все грохнуть. Что и происходит у великих мира всего, периодически. А вы знаете чем Николай Николаевич отличается от Владимира Владимировича? Владимир Владимирович по закону обязан рассматривать обращения граждан и реагировать на них. (прошу этот факт не оспаривать) Николай Николаевич по закону не обязан ничего рассматривать и реагировать. По всем параметрам он тоже президент в стране АвтоЛИСПа на территории России. А эта страна немаленькая и в ней тоже много недовольных желающих обратиться в высшую инстанцию. Инаврядли президент непризнанной страны станет рассматривать обращения отдельных граждан. Тут надо коллективную жалобу.
Сообщение отредактировал mmax - 29.6.2007, 21:19
|
|
|
|
|
29.6.2007, 21:50
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Ну, если честно, то именно с получением активного пространства у тебя и есть первая проблема. Насчет остального: полностью согласен
|
|
|
|
Гость_Supermax_*
|
29.6.2007, 21:50
|
Guest Forum

|
Mmax вообще-то толкнул не слабую идею. Что такое внешняя ссылка? - отдельный файл, который загружается в твой файл как блок в момент открытия оного. То есть, размер хранящегося файла экономится, но размер пространства оперативной памяти, занимаемого базой после загрузки всех ссылок в память компьютера , тот же, если бы скажем мы все файлы слили в один и открыли. Ссылки не экономят оперативную память. Крутить объект также трудно, как если бы он был закачен из одного файла. Ну чтож. Проглотим. А теперь вернемся к идее mmax-са. Допустим есть программа, которая всегда, после запуска открывает чистый файл и по записанным где-нибудь ориентировкам начинает по очереди открывать в отдельном окне другие файлы, все элементы которых объединять в блок и вставлять в открытый только-что документ. Ясен пень она блоки не в файл вставляет, а в память. Да и элементы объединять в блоки не надо. Надо просто всю эту кучу поварачивать и слегка смещать по осям, как внешнюю ссылку. То есть мы имеем в пространстве оперативной памяти собранную модель из отдельных деталей, которые загружены из разных файлов. Если надо внести изменения, то либо надо все таки блоки делать и в них вносить, либо указывать каждой детальке, от какого она файла. Ну это не трудно. Главное, что после работы никакого общего файла не создается, все изменения переносятся в файлы - родители. Ну просто блок сохраняется в тот файл, от куда взят. А файл, где было проведено это шоу - удаляется. Так, это я оставлю на закуску.
|
|
|
|
Гость_Supermax_*
|
29.6.2007, 22:07
|
Guest Forum

|
Да, точно. Внешние ссылки тоже так построены. Имя слоя из двух частей - имя файла, и имя слоя в этом файле. Все. Макрос просто примитивный будет. Читать имена слоев и разбрасывать в разные файлы с пересчитанными точками вставки. Включаем автокад, он открывается с читым файлом, мы запускаем макрос, и он собирает модель. Макрос не выключается, и при каждом появлени новых элементов запрашивает в какой слой их вставить. Не дает вставлять в 0 и этот, как его дефпоинт вроде. Если нажать на сейв, то он производит пересохранение всех слоев в свои файлы. А настоящий сейв при этом заблокирован.
|
|
|
|
|
30.6.2007, 0:30
|
CAD Developer
Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062

|
Макрос не будет примитивным - это я практически гарантирую. Сразу, чтоб не расслабляться, делай внешние ссылки 2 уровней вложенности. Заодно попробуй заменить _save и _qsave. Макрос написан на VBA?
|
|
|
|
Гость_Supermax_*
|
30.6.2007, 10:46
|
Guest Forum

|
Нет не написан. Да дело уже не в макросах, а в не корректной работе -refedit. Вот сижу и пишу письмо по англицки в Autodesk. Посмотрим, что они мне ответят.
|
|
|
|
Гость_Supermax_*
|
30.6.2007, 11:32
|
Guest Forum

|
Ребята, не в моих принципах бросать начатое. Пока я четко не пойму что и почему, я не отсутплюсь. Я эту -refedit раздену до исподнего, но получу ответ, я лох и что-то не так делаю, или это лох тот дядя, которому поручили написать код в Autodesk.
|
|
|
|
|
30.6.2007, 12:02
|
Группа: Участники форума
Сообщений: 51
Регистрация: 18.6.2007
Из: Череповец
Пользователь №: 9568

|
Теперь я ничего не понимаю. вобщем еще раз мое мнение. Есть такие понятия: эквивалент, прототип и тому подобное. Эквивалентом внешней ссылки является блок. Попробуйте перетащить из проводника или папки Windows, любой двг. Потом на этотже двг вставить ссылку. полученные результаты сравнить.
Теперь что делает программа: 1.Определяет откуда ссылка(любым способом вплоть до запроса файла у пользователя), Имя файла определяется по коду 2, если файл имеет имя FILE.DWG, то код ссылки будет (2 . "FILE"). 2.Отстает от ссылки. И вставляет этот файл как блок(набросок функции вставки блока в сообщении 166), временно, только для анализа. 2.2 В программе должен быть макрос(лисп)-ловушка для временных объектов. 3. Применяет к новоявленному блоку метод (vla-explode) 3.3 И и теперь она имеет массив со всеми примитивами блокового документа. Ябы сказал что она теперь имеет полную копию документа в том виде в каком он есть, со всеми блоками и ссылками, которые будут доступны без всяких ограничений любым макросам и программам. 4 Анализирует новоявленные примитивы. Специфицирует их. 5. Так как все это были временные объекты, то их надо удалить. Результат взрыва в массиве. Документ-блок на экране. Описание документа-блока гдето в базе. Вместе с Документом-блоком импортируются слои, тесктовые размерные стили. При совпадении имен блоки переопределяются это тоже надо учесть. Благо что здесь можно применить команду UNDO.
Вобщем если комуто чтото непонятно то перетащите в графический экран анализируемый DWG на который имеется ссылка(такой способ можно сделать программно). И полученный блок будет не чемто таким особенным, а всеголишь эквивалентом внешней ссылки, который программа будет анализировать ВМЕСТО внешней ссылки. Таким образом мы получим неограниченный доступ к эквивалентам всех примитивов документа на который вставлена ссылка.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
Реклама
ООО «Арктика групп» ИНН: 7713634274
Реклама: ООО «СибСтронг» | ИНН 6670013662 | ERID: 2VtzqvWgxEU
ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqvybpdW
Реклама: ООО «СЛ-ЛАЗЕР» ИНН 7727447267 | erid: 2VtzquvhFWx
Последние сообщения Форума
|