|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Код изменил, прогнал на пустом файле, 10 внешних ссылок, вроде сработало корректно. Файл переименовал, но команды "как были". DwgRuLispLib все так же требуется.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Все заработало, но "почти".
Ошибка в формировании 210 dxf кода. Вставь в ini файл строку с этим кодом! Изначально у меня в ссылке (210 0.0 -1.0 0.0), а когда создаю новую модель становится (210 0.0 0.0 1.0). Аналогичная фигня и в макросе, что внешнюю ссылку копирует как "сохранить как". Вручную меняю 210 код на старое значение и становится все на свои места. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А если так?
P.S. Предупреждаю: я коды не тестирую!
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Вот это - другое дело!!!
Все стало как надо. Теперь о путях: Ты вставил в ini файл пути к файлам внешних ссылок и этим угробил возможность переноса модели на другой комп. Если ini файл лежит тамже, где и сам dwg файл, то путь к dwg файлам ссылок определяется месторасположением ini файла. Так? Поскольку ты сделал один ini на все ссылки, то прийдется держать все ссылки в одной папке (что у меня и имеет место быть). Если у каждого файла dwg, являющегося внешней ссылкой будет свой ini, то ссылки можно будет держать в разных папках. Склеить выбранные ini в один - дело двух строк на лиспе, даже одной команды. Имя ini файла должно в точности совпадать с именем файла dwg к которому этот ini принадлежит. Убери пути! |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Не уберу. Как иначе будешь искать ссылки?
Можно, конечно, попытаться обрабатывать относительные пути, но сейчас на это меня точно не хватит.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Есть два пути развития данной темы.
Первый - сделать специальное окно DСL и через него выбирать ссылки и более гиморно для пользователя, но менее трудоемко для программиста - через ком. строку. Вот смотри: Запускаем (c:restore-xref), просит выбрать один из трех параметров "всю папку", "отдельный файл" или "далее". Если выбрать "всю папку", то выскочит окно для указания папки, в которой лежат ссылки и ini файл к ним (или к каждому из них). После выбора все ini файлы в этой папке будут прочитаны и склеены в один (в смысле в памяти компа, а не в файл). Если выбрать "отдельный файл", то попросит указать файл. После выбора к уже имеющимся записям добавится считанное из этого файла. Впрочем как и "всю папку", так и "отдельный файл" могут запускаться в любой очередности. Каждый раз, как сделан выбор в бесконечном цикле, прерываемом только либо Esc либо "далее" предлагается выбрать еще раз и еще раз. Если выбрать далее, то все выбранные файлы будут обработаны. Ну, в принципе, теперь и любой продвинутый юзер может дописать твой лисп. Даже я. Если я допишу, то обязательно сюда выложу. Если ты не возражаешь конечно. SaveAsXref починишь?, а то я заколебался все из плана делать. Последний раз редактировалось Supermax, 05.01.2008 в 15:32. |
||||
![]() |
|
||||
Вот полезную весч узрел
Код:
А я взял от сюда: - http://www.caduser.ru/cgi-bin/f1/board.cgi?t=20220eg Это в плане открытия папки и получения ее адреса. Код:
Последний раз редактировалось Supermax, 05.01.2008 в 17:42. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Этой "весчи" сто лет в обед, посмотри в dwgrulisplib - там есть это дело. Вдобавок немного расширенное.
SaveAsXRef - это откуда? Напомни исходник и тему, а то я не помню навскидку.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Это ты это имел в виду?
Код:
Ладно, я в теме про библиотеку функций напишу свое "фе". Вопрос 2 - http://forum.abok.ru/index.php?showtopic=14612&st=460 пост#461 и 440, 472 и мой ответ на него # 468 и 470 а проще... |
||||
![]() |
|
||||
Kpblc, ты часом не знаешь, что это за файлы?
http://cl-debian.alioth.debian.org/r...cl-ansi-tests/ |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Я тебя предупреждал, что библа сырая? Я предупреждал, что справка, мягко говоря, не полная?
Предупреждал. Так что Цитата:
![]() Цитата:
Цитата:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
И так, что мы имеем на данный момент? Макрос, который может сохранить в файл с расширением ini координаты и другие параметры вставки конкретного вхождения файла внешней ссылки и по записи в этом файле воспроизвести данное вхождение в другом файле.
Если я указываю на одну только внешнюю ссылку, то и ini получаю для нее, если я указываю сразу несколько файлов, то и ini получается на несколько файлов. Замечательно! Раньше я предполагал, что имя у ini файла должно совпадать с именем dwg файла и описывать только одно вхождение именно этого, конкретного dwg файла. Теперь я так не думаю. Теперь имя ini файла может быть любым, а имя описываемого вхождения делается так, как ты и создал. Только путь убери!!!! Ini лежит в той же директории, что и dwg. От куда загрузил ini, там же и ищи dwg. Если оставить только имя dwg файла, то можно будет переносить ссылки из директории в директорию и на другие компы не задумываясь. ОЧЕНЬ ВАЖНО!! Я просек, что если в директории, как у меня лежит слишком много файлов, то не только кад тормозить начинает безбожно, даже винда кряхтит и стонет, пока откроет эту папку. Хочу отсортировать свои ссылки по папкам, а не могу. В том виде, как есть мне надо выделять именно те ссылки, что хочу в другую папку переложить, а как? 230 штук попробуй на модели разберись, какую куда. В папке – другое дело. Они по именам сильно отличаются (группа от группы), а в группе – только номером. Обвел все и перекинул в другую папку. И ini я также бы перекинул. Я не предлагаю отказаться от группового описания вхождения, я предлагаю создать выбор. По умолчанию – как сейчас, но если мне надо на каждый файл свой ini то создается куча ini с именами как у dwg (так лучше чем номера лепить, хотя и номера можно). Также надо обрабатывать не один ini как сейчас это делается, а сразу все в выбранной директории или все выбранные в ручную. Я очень надеюсь, что эта программа ляжет в библиотеку. Мне лично фиолетово, будет развиваться в кад сообществе направление по моделированию «без границ» или нет. Я не идиот себе конкурентов растить, но я в одиночку не могу создать нормы проектирования и утвердить в мозгах заказчиков убеждение, что моделирование – это не обсуждаемая потребность любого сложного и ответственного действа. Чем меньше трудностей испытывают проектировщики при моделировании сложных объектов, тем громче слышны их голоса в поддержку моделирования, как источника сведений о затратах на производство, и это мне на руку. Далее: Как ты знаешь, если выбирать dwg файл, то имеется возможность просмотра его образа в виде растровой картинки в правой стороне окна выбора. Если выбирать ini – то такой возможности нет. В случае, если надо вставить только один dwg, то можно в принципе предлагать выбрать dwg, а потом меняя расширение на ini загружать этот dwg по ini файлу. Основываясь на новом мировоззрении предлагаю: Функцию c:save-xref дополнить следующими процедурами: 1. Выбор через командную строку «Создавать ini для Всех/для Каждого» <В>: Если для каждого, то не предлагается указать имя ini файла, а он автоматически пишется в туже директорию, что и dwg и с тем же именем. В случае группового описания (или описывания) имя и расположение ini файла указывается как сейчас это делается. 2. При выборе dwg файла (файлов) добавить возможность «выбрать Все/ все Абсолютно/ в Ручную <Р>: Выбрать Все – Это имеется в виду те ссылки, что мы видим и можем «потрогать». Выбрать все Абсолютно – это включая и те, что Unload и те, что на заморозке. Функцию c:restore-xref дополнить следующими процедурами: 1. Как я уже писал ранее – «выбрать все в указанной Папке/Выборочно» <В>: 2. Если «Выборочно», то – «по Dwg/Ini» <I>: Правда я так и не нашел, где можно почитать более широко о методах применяемых к не AutoCAD-овским объектам, но из под AutoCAD-a. Описание метода BrowseForFolder я нашел, но что есть еще – увы, не знаю. BrowseForFile мелькает то там, то сям, но добраться до него как следует не получается. Все, что я нашел путного – это http://allo.usaaa.ru/workshop/sample...ns/sysfuns.htm Может тебе извесно что-нибудь о выборе файлов черех ActiveX? |
||||
![]() |
|
||||
Нашел по Shell.Application
http://www.script-coding.info/WSH/Shell.html#1. |
||||
![]() |
|
||||
И так, вот что у меня получилось:
Я взял allosys.dll вот от сюда: http://allo.usaaa.ru/workshop/sample...ns/sysfuns.htm которая содержит всего две системные функции BrowseForFile и BrowseForFolder, но улучшенные по сравнению с Shell.Application. В частности BrowseForFile там вообще нет, а BrowseForFolder "слегка" коряв. Создать СОМ объект навсегда у меня не получилось, поскольку в VBA я не силен, а временно с помощью VBA создается. dll-ку положил в system32 папки windows, зарегистрировал, для чего через меню пуск\выполнить запустил "regsvr32 allosys.dll" (без ковычек) положил макрос VBA alloObj.dvb в папку для макросов, к которой у меня уже есть путь и запуская лисп получаю список, состоящий из строк с полным путем к каждому файлу (множественный выбор). Вот тело самого VBA макроса: Код:
Код:
Код:
Цитата:
Не ругайтесь, это моя первая попытка сделать функцию с применением dll-ки. Как прения закончатся, допишу шапку и отформатирую как надо. Последний раз редактировалось Supermax, 10.01.2008 в 14:29. |
||||
![]() |
|
||||
Спасибо VVA, ткнул фейсом в нужную тему. А там Kpblc откровенничает про COM.
![]() http://www.arcada.com.ua/forum/viewtopic.php?t=460 Вот новый вариант функции без VBA Код:
В начале функции не хватает функции Kpblc-a проверяющей сам факт возможности создания объекта, но вставим вместе, или так брошу. Последний раз редактировалось Supermax, 11.01.2008 в 11:03. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Я там (то бишь на аркаде) кое-чего добавил по поводу регистрации dll, мало ли кому пригодится.
А эти товарищи с allo (так и тянет добавить "мы ищем таланты" ![]() ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
dll-ку с сайта ALLO выложил. См. выше.
Теперь про логику необходимости применения множественного выбора (я надеюсь Алексей, ты это имел в виду?): По структуре ini файл не имеет заголовков и окончаний и поэтому два ini файла могут быть объеденены в один (чего лучше не делать), или обработаны по очереди, еесли в памяти есть список нескольких ini. Поскольку очередность загрузки внешних ссылок не имеет значения, то и очередность обработки ini тоже. Это, так сказать, приамбула. Теперь о самой функции. Нужен множественный выбор файлов. Я думаю эти ребята из ALLO давно уже умерли. Датируется эта их статья 2001 годом, а сайт пере... на голову и все остальное. Посколку уже 2008-ой, делаем выводы. Я даже их реквизиты не нашел. Понять кто делал и где исходники пока не могу, хотя скачал все дерево папок и нашел там много интересного. Все дерево весит 2,5 мега в незаархивированном виде. Мне не нравится, что dll-ка "брошенная". Не нравится, что окно нельзя растягивать. А так, в целом другой альтернативы вызова окна выбора файлов с возможностью множественного выбора не вижу. |
||||
![]() |
|
||||
Пытаюсь определить имя объекта у shell32.dll
имена функций нашел. Цитата:
Последний раз редактировалось Supermax, 11.01.2008 в 10:49. |
||||
![]() |
|
||||
Ну почему мне никто не сказал, что достаточно библиотеку зарегистрировать и выражение (vla-getInterfaceObject (vlax-get-acad-object) "ALLO.SystemFunctions") начнет работать?
Я мучаюсь с этим VBA, vlax-get-or-grate-object, а все усмехаются и молчат! ![]() Вот что надо написать в (vlax-get-acad-object) "????????????????") чтобы добраться до функций в библиотеке shel32.dll? |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перенос объектов во внешнюю ссылку | Supermax | AutoCAD | 3 | 09.12.2007 21:44 |
Не явный путь задания внешней ссылки | Елена | AutoCAD | 2 | 05.11.2004 00:21 |