Рыжий Пёс писал(а):Алек(андр писал(а):А чем SysVar(4) или sysvar(2) не устраивает?
Объясняю задачу.
Запуск К3, чистый лист. Требуется загрузить через макрос сохранённый проект.
При загрузке из атрибута определённого объекта считываются данные. Выбирать все объекты сцены, а потом искать нужный перебором - не наш метод. Поэтому
selbyattr "IsAssign(\"KitchenDef\")" all done. Это к вопросу гасить и включать.
Теперь по sysvar. Как известно, после запуска К3 они все указывают папку Bin. Если выполнить open, то пользователю придётся лезть через все папки до PROJECTS, а это нехорошо. Значит надо установить "путь к папке с проектами" в Protopath-6+"\\Projects\\", но такой системной переменной, кажется, нет. Зато есть "путь к последнему добавленному файлу", чем я и пользуюсь.
Что значит не ваш метод? Если метод в стопитцот раз быстрее вашего, то значит что то с вашими выбранными методами не то.
Вот метод который заполнит массив ссылками на все объекты с KitchenDef за нуль секунд в отличии от селбайаттра
- Код: Выделить всё
nn=sysvar(62)
defarr arr[nn] arr1[nn];
m=scanscene(arr);
g_nObjUP=0
i=0
loop:
if i<=m {
i=i+1
if IsAssign("KitchenDef ",arr[i]) {
g_nObjUP=g_nObjUP+1;
arr1[g_nObjUP]=arr[i]
}
goto loop;
}
arr1 в элементах с 1-го по g_nObjUP будет заполнен ссылками объекты c атрибутом KitchenDef причем в отличии от selbyattr "IsAssign(\"KitchenDef\")" all done будут выбраны объекты на всех уровнях даже если у родителя есть такой же атрибут.
На счет
Как известно, после запуска К3 они все указывают папку Bin
было такое при простом старте mebel.exe. Наверное надо стартовать малость по другому.
...\Bin\mebel.exe -m: имя макроса
когда стартуем из под базы именно так к3 стартует включая 6-е версии создается \temp\temp.mac, а там формируется строка открытия проекта
вызываются макросы из Proto типа open_sh.mac или open_shs.mac
то бишь ярлыку который стартует задачу надо эту строчку прописать
вот как стартует задачу аксесс
- Код: Выделить всё
ChDir GetCustPrjPath()
ChDrive GetCustPrjPath()
idk = Shell(S, vbMaximizedFocus)
я прописал в ярлыке
в вызове C:\K3-Мебель......64\Bin\Mebel.exe -m:C:\K3-Мебель-......64\Data\PKM\PROTO\new_sh.mac
рабочую папку назначил C:\K3-Мебель-....64\Data\PKM\PROJECTS\
sysvar(4) возвращает C:\K3-Мебель-....64\Data\PKM\PROJECTS\