Запись параметров вставки внешней ссылки в саму внешнюю ссылку. - Страница 3
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Запись параметров вставки внешней ссылки в саму внешнюю ссылку.

Запись параметров вставки внешней ссылки в саму внешнюю ссылку.

Ответ
Поиск в этой теме
Непрочитано 12.12.2007, 13:47
Запись параметров вставки внешней ссылки в саму внешнюю ссылку.
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

У меня есть такая задача:
Есть модель и в нее вставлена внешняя ссылка и пару раз скопирована под другим углом. Мне надо выбрать все параметры вставки этой внешней ссылки, чтобы потом вставить эту ссылку в чистый файл автоматически так же как она вставлена в моем файле.
Эти параметры мне надо поместить в какой-нибудь дополнительный словарь, или расширенные данные файла самой внешней ссылки.
Включаю макрос, он опрашивает нужные мне файлы и автоматом их вставляет в текущий файл.
В результате, я имею ситуацию, когда модель собирается из комплекта файлов до кучи сама.
Просмотров: 18487
 
Непрочитано 11.01.2008, 11:31
#41
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Дык ента... Я ж на аркаде несколько раз про это сказал! Сейчас запущу студию, посмотрю что там и как
---
Добавлено:
для лиспа вариант примерно таков:
Код:
[Выделить все]
(defun test (/ svr *error* res)
  (defun *error* (msg)
    (vl-catch-all-apply '(lambda () (vlax-release-object svr)))
    (princ msg)
    (princ)
    ) ;_ end of defun

  (if (setq svr (vlax-get-or-create-object "ALLO.SystemFunctions"))
       (setq res (vlax-invoke-method svr
                   'browseforfile
                   "toggle"
                   "title"
                   "" ;"initdir"
                   "" ;"filter"
                   "" ; x
                   "" ; y
                   ) ;_ end of vlax-invoke-method
             ) ;_ end of setq
     ) ;_ end of if
  (vl-catch-all-apply '(lambda () (vlax-release-object svr)))
  res
  ) ;_ end of defun
Естественно, что надо подставлять нормальные значения. Не факт, что сработает корректно - я код не гонял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 11.01.2008 в 11:54.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.01.2008, 12:15
#42
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Надо покапаться в виндовых библиотеках и найти стандартное окно выбора файлов с множественными возможностями! Оно есть, но как его вызвать???
Supermax вне форума  
 
Автор темы   Непрочитано 11.01.2008, 17:09
#43
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


На первый взгляд, вроде ты функцию выбора файла пытаешся сделать, а почему тогда (defun test .....?
Ладно, проглотим, а почему такие странные переменные, и как запустить test без аргументов функции? И кому он без аргументов нужен?
Функция - это функция. Она должна предоставлять максимально возможные параметры.
Supermax вне форума  
 
Непрочитано 11.01.2008, 17:15
#44
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Ну как почему - я ж решал задачу "показать как создавать СОМ-сервер и работать с ним из-под лиспа". А не нарисовать рабочую функцию
Чтобы она работала, надо немного дольше посидеть, потестировать в разных вариантах ну и т.п. А у меня особо времени не было Может, сегодня получится.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.01.2008, 17:53
#45
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ты чуток погоди. С начала надо найти нормальное окно выбора файлов, типа этого:
Миниатюры
Нажмите на изображение для увеличения
Название: Выбор.jpg
Просмотров: 115
Размер:	61.1 Кб
ID:	2172  
Supermax вне форума  
 
Автор темы   Непрочитано 11.01.2008, 18:54
#46
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


У меня не открывается объект
MSComDlg.CommonDialog

из библиотеки COMDLG32.OCX
(во всяком случае так говорят, что от сюда)

А в этом объекте есть множественный выбор файла.
Библиотека эта у меня стоит и зарегестрирована, но ...

http://forum.script-coding.info/viewtopic.php?id=64
вот от сюда эта малява.
Supermax вне форума  
 
Непрочитано 11.01.2008, 22:58
#47
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


В ocx, насколько я помню, лежат контролы, то есть ActiveX-компоненты. Сами по себе они не работают никогда, их надо помещать на формы и вызывать уже оттуда (по крайней мере в подавляющем больщинстве случаев, как мне припоминается). То, что у них есть свойства и методы, ни о чем не говорит.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.01.2008, 12:43
#48
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Не Kpblc, ты не прав оказался. Надо было всего лишь скачать из и-нета файл vb6controls.reg и два раза по нему щелкнув, ответить на запрос "записать в реестр или нет?" - да.
И все начинает работать.

Объект - "MSComDlg.CommonDialog"
Библиотека comdlg32.ocx

Код:
[Выделить все]
; ICommonDialog: Microsoft Common Dialog Control 6.0 (SP6)
; Property values:
;   Action = ...Indexed contents not shown...
;   CancelError = ...Indexed contents not shown...
;   Color = ...Indexed contents not shown...
;   Copies = ...Indexed contents not shown...
;   DefaultExt = ...Indexed contents not shown...
;   DialogTitle = ...Indexed contents not shown...
;   FileName = ...Indexed contents not shown...
;   FileTitle = ...Indexed contents not shown...
;   Filter = ...Indexed contents not shown...
;   FilterIndex = ...Indexed contents not shown...
;   Flags = ...Indexed contents not shown...
;   FontBold = ...Indexed contents not shown...
;   FontItalic = ...Indexed contents not shown...
;   FontName = ...Indexed contents not shown...
;   FontSize = ...Indexed contents not shown...
;   FontStrikeThru = ...Indexed contents not shown...
;   FontUnderLine = ...Indexed contents not shown...
;   FromPage = ...Indexed contents not shown...
;   hDC = ...Indexed contents not shown...
;   HelpCommand = ...Indexed contents not shown...
;   HelpContext = ...Indexed contents not shown...
;   HelpFile = ...Indexed contents not shown...
;   HelpKey = ...Indexed contents not shown...
;   InitDir = ...Indexed contents not shown...
;   Max = ...Indexed contents not shown...
;   MaxFileSize = ...Indexed contents not shown...
;   Min = ...Indexed contents not shown...
;   Orientation = ...Indexed contents not shown...
;   PrinterDefault = ...Indexed contents not shown...
;   ToPage = ...Indexed contents not shown...
; Methods supported:
;   ShowColor ()
;   ShowFont ()
;   ShowHelp ()
;   ShowOpen ()
;   ShowPrinter ()
;   ShowSave ()
T
Прежде чем применять метод, надо установить нужные свойства. Чем я сейчас и занят.

Код:
[Выделить все]
(setq MSCObj (vlax-get-or-create-object "MSComDlg.CommonDialog"))
(vlax-put-property MSCObj "InitDir" "C:\\")
(vlax-put-property MSCObj "DialogTitle" "Откройте нужный Вам файл!")
(vlax-put-property MSCObj "Filter" "Все файлы (*.*)|*.*|Программы (*.com,*.exe)|*.com;*.exe|Текст (*.txt,*.log)|*.txt;*.log")
(vlax-put-property MSCObj "FilterIndex" "2")
(vlax-put-property MSCObj "MaxFileSize" "32000")
(vlax-put-property AlloObj "Flags" "2621952")
(vlax-invoke-method MSCObj 'ShowOpen)
Чтобы выбрать много файлов или один - свойство "Flags"
Где взять описание не знаю.
Как получить строку при окончании работы - не знаю (пока)

Последний раз редактировалось Supermax, 12.01.2008 в 13:36.
Supermax вне форума  
 
Непрочитано 12.01.2008, 14:28
#49
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Ну не надо, не надо. У меня хватило мозгов на создание объекта CommonDialog из-под лиспа. И на установку ему свойств. Но! Этому объекту нельзя применить метод, например, ShowOpen. AutoCAD'ы 2005 и 2008 выдавали ошибку Automation.
Я интересовался этими и подобными вещами в VB6, поэтому и сказал #47.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.01.2008, 15:56
#50
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


А ты сделай, как я написал и будет все как надо.

Поковырял объект InternetExplorer.Application
там тоже можно сделать выбор файлов

http://forum.script-coding.info/viewtopic.php?id=64
пост #4

посмотри, может у тебя получится по нему что-нибудь сделать.

Цитата:
; IWebBrowser2: Web Browser Interface for IE4.
; Property values:
; AddressBar = ...Indexed contents not shown... http://msdn2.microsoft.com/en-us/lib...48(VS.85).aspx
; Offline = ...Indexed contents not shown... http://msdn2.microsoft.com/en-us/lib...61(VS.85).aspx
; ReadyState (RO) = ...Indexed contents not shown... http://msdn2.microsoft.com/en-us/lib...66(VS.85).aspx
; RegisterAsBrowser = ...Indexed contents not shown... http://msdn2.microsoft.com/en-us/lib...69(VS.85).aspx
; RegisterAsDropTarget = ...Indexed contents not shown... http://msdn2.microsoft.com/en-us/lib...72(VS.85).aspx
; Resizable = ...Indexed contents not shown... http://msdn2.microsoft.com/en-us/lib...73(VS.85).aspx
; Silent = ...Indexed contents not shown... http://msdn2.microsoft.com/en-us/lib...74(VS.85).aspx
; TheaterMode = ...Indexed contents not shown... http://msdn2.microsoft.com/en-us/lib...77(VS.85).aspx
; Methods supported:
; ExecWB (4) http://msdn2.microsoft.com/en-us/lib...87(VS.85).aspx
; Navigate2 (5) http://msdn2.microsoft.com/en-us/lib...94(VS.85).aspx
; QueryStatusWB (2) http://msdn2.microsoft.com/en-us/lib...96(VS.85).aspx
; ShowBrowserBar (3) http://msdn2.microsoft.com/en-us/lib...00(VS.85).aspx
T

Последний раз редактировалось Supermax, 12.01.2008 в 16:03.
Supermax вне форума  
 
Автор темы   Непрочитано 12.01.2008, 17:41
#51
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Вот все, что я смог найти на сегодняшний день.
MSComDlg.CommonDialog +
UserAccounts.CommonDialog +
SAFRCFileDlg.FileOpen ++
SAFRCFileDlg.FileSave
Scripting.FileSystemObject
ADODB.Connection
InternetExplorer.Application

Где стоит "+" - есть возможность многофайлового выбора
Где стоит "++" - возвращает #<variant 19 1>
Остальные ничего не возвращают полезного.
Supermax вне форума  
 
Автор темы   Непрочитано 12.01.2008, 17:55
#52
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


По поводу ShowOpen:
Скопируй всю мою писанину в командную строку и увидишь, что ShowOpen работает, но ничего не возвращает. Окно появляется, файлы выделяешь и фигу получаешь после нажатия OK. А как известно, функция vlax-invoke-method возвращает только то, что обусловлено методом.
Supermax вне форума  
 
Непрочитано 12.01.2008, 22:26
#53
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Если нужна инфа по CommonDialog, могу попробовать "нарыть" из MSDN 98-го года выпуска - там оно было в более-менее виде. То, что есть сейчас в онлайн, не смотрел.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.01.2008, 06:56
#54
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Периодически заглядываю в эту тему (думаю, что не только я) и кажется мне, что я наблюдаю вяло текущую шизофрению. Supermax, не обижайтесь, пожалуйста, только получается так: чем дальше в лес - тем больше дров. Проблемы громоздятся и просто жаль вас становится, а еще больше жаль Алексея. Одно только утешает, если можно так выразиться, - если Алексей Кулик поддерживает эту тему, то, наверное, видит какое-то рациональное зерно в ней. Смысл темы сейчас находится вне сферы моей компетентности, однако мыслится так: пока еще не найден надежно работающий механизм выбора файлов внешних ссылок для записи информации об них в файлы *.ini. А ведь в этих файлах еще надо записать информацию о том, что ПОСЛЕ вставки внешняя ссылка должна быть скопирована и, возможно, повернута с определенными параметрами. Не слишком ли сложна поставленная задача? Я это пишу не в плане критики, а в плане сопереживания. Что-то больше никто не высказывет своего мнения, даже очень опытные товарищи. Считают несерьёзной эту затею? Может, она действительно не до конца продумана, а с момента создания темы прошел уже месяц. Как бы с такими темпами вот это благое пожелание
Цитата:
А так я потихоньку могу и целый микрорайон смоделировать до винтика.
не растянулось на всю оставшуюся жизнь.
Profan вне форума  
 
Автор темы   Непрочитано 13.01.2008, 11:55
#55
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Profan, спасибо за поддержку и сопереживание, но спешу тебя обрадовать, в посте Kpblc-а #24 выложен лисп xref-and-ini3.lsp в котором две функции,
одна - c:save-xref
вторая - c:restore-xref
Первая создает ini файл и записывает в него все параметры вставки внешних ссылок, на которые ты указал, а вторая - используя этот ini файл вставляет ссылки в новый файл, как правило заново открытый пустой.
Можно было бы это сделать и на другой машине, но Kpblc упрямо не хочет выкинуть из ini файла путь к dwg файлу. Ну это я так, подкалываю.

Все уже работает, но не до конца. "Починить" лисп Kpblc-a я и сам могу, но уперся в множественный выбор файлов. Нашел DLL-ку, в которой есть нужные функции, но там окно не растягивается, а это меня коробит. Да и есть на компе эти ... окна. Этих DLL-ок хоть ... жуй. Только где, что и как - я пытаюсь разобраться, а все, кто уже разобрался - помогать не спешат, поскольку нафиг это им надо?
Вчера сервер замочил. Пытался в окне эксплорера запустить кад. Не охота за лиспом dll-ку таскать, хотя она того стоит, нет спору.

Множественный выбор файлов нужен для того, чтобы выделив сразу много ini вставить в текущий файл все dwg ссылки из них.

Черт с ним. ALLO, так и allo. На ней и остановимся. Появится что-нибудь лучше - поменяем.

Вот такие вот пироги.
Supermax вне форума  
 
Автор темы   Непрочитано 13.01.2008, 12:27
#56
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Kpblc, чтобы продолжить, или точнее закончить эпопею с этой прогой, надо оформить и утвердить функцию выбора файла, которой в библиотеке DWGRU еще нет. Да ивыбор папки тоже можно пересмотреть, если оставить Allosys.dll. Ты главный массовик-затейник, тебе и принимать решение.
Писать прогу без этой функции можно, я не против, но и ты выскажись по этому поводу.
Supermax вне форума  
 
Непрочитано 13.01.2008, 14:11
#57
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Замечания приняты. Пауза до вечера (примерно до 23:00 Мск, вряд ли раньше). Функции оформлю и выложу на всеобщее освистание
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.01.2008, 14:32
#58
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


А я чуток тебе помогу:
Код:
[Выделить все]
;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2007  DWGru Programmers Group
;;; *
;;; * DwgRu-BrowseForFile
;;; *
;;; * 14/01/2008 Версия 0001.    Андрей Лазебный (Supermax), Кулик Алексей (Kpblc)
;;; ************************************************************************
;;; Функция использует функции свободно распостраняемой библиотеки  Allosys.dll
;;; Автор - Юрий Лукач © Студия "АЛЛО" http://allo.usaaa.ru/workshop/samples/sysfuns/sysfuns.htm
;;; использование функции DwgRu-BrowseForFile требует инсталяцию данной библиотеки.
;;; В функции использована функция PL:String->List автор - Лоскутов П.В. 
;;; Опубликована в книге Полещук Н.Н. Лоскутов П.В."AutoLISP и Visual LISP в среде AutuCAD"
;;;
 ;;; Описание:
  ;;; Вызывает стандартный диалог Open/Save As и возвращает список состоящий из строк 
  ;;; в которых заключены полные пути и имена выбранных файлов, если нажато "Открыть", или nil, если нажато "Отмена".
 ;;; Синтаксис: 
  ;;; (dwgru-BrowseForFile toggle title initDir filter flags x y)
 ;;; Аргументы:
  ;;; toggle - тип диалога (строка) (true = Open, false = Save As), по умолчанию true
  ;;; title - заголовок диалога (строка), по умолчанию системный заголовок
  ;;; initDir - начальный каталог диалога (строка), по умолчанию текущий каталог
  ;;; filter - фильтры диалога (строка), по умолчанию "All files (*.*)|*.*|"
  ;;; flags - флаги диалога (строка с числом), по умолчанию OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT
  ;;; x - смещение окна диалога от верхнего левого угла экрана; по X. (строка с числом) По умолчанию окно центруется
  ;;; y - смещение окна диалога от верхнего левого угла экрана; по Y. (строка с числом) По умолчанию окно центруется
  ;;; 
  ;;; Умолчания - пустые строки "".
  ;;; filter должен иметь следующий формат:  "Executable files (*.exe)|*.exe|All files (*.*)|*.*|".
  ;;; 
  ;;; flags - это комбинация следующих флагов:
   ;;; 0x00000001 (OFN_READONLY)          Включает переключатель диалога "Read Only"
   ;;; 0x00000002 (OFN_OVERWRITEPROMPT)   При задании имени существующего файла выводит запрос
   ;;;                                    на подтверждение перезаписи файла (Save As)
   ;;; 0x00000004 (OFN_HIDEREADONLY)      Прячет переключатель диалога "Read Only"
   ;;; 0x00000008 (OFN_NOCHANGEDIR)       Восстанавливает текущий каталог после выхода из диалога
   ;;; 0x00000200 (OFN_ALLOWMULTISELECT)  Разрешает выбор нескольких файлов
   ;;; 0x00000800 (OFN_PATHMUSTEXIST)   Запрещает ввод имен несуществующих путей и файлов
   ;;; 0x00001000 (OFN_FILEMUSTEXIST)     Запрещает ввод имен несуществующих файлов
   ;;; 0x00002000 (OFN_CREATEPROMPT)    При задании имени несуществующего файла выводит запрос
   ;;;                                    на подтверждение создания файла (Open)
   ;;; 0x00020000 (OFN_NONETWORKBUTTON)   Прячет и запрещает кнопку диалога "Network"
   ;;; 
   ;;; Если флаг OFN_HIDEREADONLY не был установлен, то в конец возвращаемой строки добавляется
   ;;; подстрока "|1" или "|0" в зависимости то того, выбрал или нет пользователь опцию Read Only.
   ;;; 
  ;;; Возврат: 
   ;;; Cписок состоящий из строк в которых заключены полные пути и имена выбранных файлов, если нажато "Открыть", или nil, если нажато "Отмена".
  ;;; 
  ;;;   Для регистрации компоненты в меню пуск\выполнить наберите команду: regsvr32 allosys.dll.

(defun dwgru-BrowseForFile ( toggle title initDir filter flags x y / svr res PL:String->List)
  (if (setq svr (vlax-get-or-create-object "ALLO.SystemFunctions"))
       (setq res (vlax-variant-value (vlax-invoke-method svr 'BrowseForFile toggle title initDir filter flags x y))))
       (vl-catch-all-apply '(lambda () (vlax-release-object svr)))
(defun PL:String->List (_str _br / _pos)
  (if (setq _pos (vl-string-search _br _str))
  (cons (substr _str 1 _pos)
  (PL:String->List (substr _str (+ (strlen _br) _pos 1)) _br))
  (list _str)
))
(princ (PL:String->List res "|"))
)

Последний раз редактировалось Supermax, 13.01.2008 в 20:19.
Supermax вне форума  
 
Автор темы   Непрочитано 13.01.2008, 21:54
#59
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Поскольку возвращается список со строками, я написал следующую функцию для библиотеки:

Код:
[Выделить все]
;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2007  DWGru Programmers Group
;;; *
;;; * DwgRu-List-String-Search
;;; *
;;; * 14/01/2008 Версия 0001.    Андрей Лазебный (Supermax)
;;; ************************************************************************
;;;
 ;;; Описание:
  ;;; В списке состоящем из строк, находит строку по маске 
 ;;; Синтаксис: 
  ;;; (dwgru-list-string-search string standard)
 ;;; Аргументы:
  ;;; string - список состоящий из строк
  ;;; standard - маска (строка) 
   ;;; 
   ;;; маска может содержать все спецсимволы типа *, #, и прочие, перечисленные в описании функции wcmatch
   ;;; 
  ;;; Возврат: 
   ;;; Первая найденная строка с удовлетворяющая маске
 
(defun dwgru-list-string-search (string standard / )
(car (vl-member-if (function (lambda (x) (wcmatch x standard))) string))
)

Сюда надо добавить проверку на отсутствие в списке значений не являющимися строками и флаг, при значениях которого меняется тип возвращаемого значения: остатка списка, просто строки, номера найденной позиции и прочее.
Supermax вне форума  
 
Автор темы   Непрочитано 21.07.2009, 18:08
#60
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Давно я не занимался этой проблемой, но у меня появилось очень много новых мыслей на счет самосоздания модели.
1. восстановим в умах читателей суть затеи.
Кто не знает что такое Google Earth - очень сильно отстал от жизни. А для тех, кто знает, скажу - я собираюсь сделать тоже самое в Автокаде. Я собираюсь организовать бесконечную модель и написать программу, которая по ней ползает. К примеру модель целого города с точностью до фасок на гайках.
2. Структура базы с файлами модели выглядит так:
Коренная папка, в ней DWG файлы внешних ссылок, одноименные файлы с расширением ini в которых указаны координаты вставки файлов внешних ссылок и если есть в файлах внешних ссылок свои внешние ссылки, то одноименные папки с аналогичным содержанием. Вместо файлов внешних ссылок могут быть файлы с интегрируемыми данными, в таком случае в ini файлах указываются координаты вставки и набор свойств (если после интеграции надо настраивать свойства блоков).
3. Перемещение по модели осуществляется так:
Пространство модели очищается от любых элементов и в него по данным ini файлов интегрируется глобальная картина (верхний уровень внешних ссылок и/или интегрируемого хлама), приблежаетесь к объекту, клацаете по нем и он замещается набором объектов из состава ссылок в него входящих. Далее выбираете любой, который замещается еще более мелким содержимым и так до тех пор, пока не останутся одни интегрированные элементы, свойства которых вы сможете посмотреть в properties.
4. Движение из микро в макро и наоборот можно будет осуществлять как с очисткой глобальных планов, так и без.

Kpblc, ты поучаствуешь? А то обещался убрать из своего макроса путь и до сих пор не убрал.
Supermax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Запись параметров вставки внешней ссылки в саму внешнюю ссылку.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос объектов во внешнюю ссылку Supermax AutoCAD 3 09.12.2007 21:44
Не явный путь задания внешней ссылки Елена AutoCAD 2 05.11.2004 00:21