Но в любом случае, то, что файлы (из одной и той же папки) с одним расширением findfile находит, а с другим нет, выглядит странно, ты не находишь?Да. Странновато. Проверил - действительно так. На досуге отправлю в ADN DevHelp. Хотя есть очень простой способ, как это ограничение обойти - достаточно к имени файла добавить точку в конце:
Command: (findfile "111.dcl") nil
Command: (findfile "111.dcl.") "C:\\Users\\Rivilis-AN\\Documents\\111.dcl"
достаточно к имени файла добавить точку в концеИнтересное решение...
Главное, что оно работает.достаточно к имени файла добавить точку в концеИнтересное решение...
Главное, что оно работает.Да, конечно. Но напрягает то, что это недокументированная возможность, а, значит, любой update программы может привести к тому, что она перестанет работать...
Но напрягает то, что это недокументированная возможность, а, значит, любой update программы может привести к тому, что она перестанет работать...Вообще это должно работать всегда и везде, так как добавление точки к имени файла в его конце не меняет имя файла. Проверил из спортивного интереса в AutoCAD 2008 x86 в Windows XP:
Command: (findfile "1.dcl")
"D:\\Documents and Settings\\RIVILIS\\Мои документы\\1.dcl"
Command: (findfile "1.dcl.")
"D:\\Documents and Settings\\RIVILIS\\Мои документы\\1.dcl"
Вообще это должно работать всегда и везде, так как добавление точки к имени файла в его конце не меняет имя файла. Проверил из спортивного интереса в AutoCAD 2008 x86 в Windows XP:Ну, чтож, это убеждает. Спасибо!
Command: (open "tmp.txt" "w")
nil
Если же запустить AutoCAD 2017 без указания файла, или установить AutoCAD 2017 в качестве версии по умолчанию и запустить его двойным кликом на dwg-файле, то функция "open" работает:Command: (open "tmp.txt" "w")
#<file "tmp.txt">
Ну, и последнее: при вызове текстового окна нажатием кнопки F2, оно не выходит на передний план (остается под графическим окном).У меня выходит. Что я делаю не так?
Про (open ...) это совершенно нормально. Какой каталог при этом является текушим известно только одному Богу.А вот ни разу не согласен! Если запускаешь AutoCAD с указанием файла, то текущим будет каталог, в котором расположен файл. Поэтому open обязана работать.
Не указывать полный путь к файлу - это признак очень плохого стиля программирования.Не горячись, разные ситуации могут быть.
У меня выходит. Что я делаю не так?Пока пытался записать видео (никаки не пойму, почему у меня действия мыши и клавиш не воспроизводятся на экране), выяснилось, что если набрать команду: textscr, то текстовый экран появляется и дальше работает штатно с кнопкой F2. Правда, после перегруженияAutoCad'а снова нужно набирать textscr.
Если запускаешь AutoCAD с указанием файла, то текущим будет каталог, в котором расположен файл.Категорически нет. Это совершенно необязательно. Более того, приложения, загруженные в AutoCAD могут менять текущий каталог. Кстати, каталог в котором находится dwg-файл, может быть закрыт на запись...
Не горячись, разные ситуации могут быть.Единственная ситуация, которая могла бы оправдать это - если не знаешь полный путь к файлу. Тем не менее его желательно вычислить.
никаки не пойму, почему у меня действия мыши и клавиш не воспроизводятся на экранеА они записывались?
Если запускаешь AutoCAD с указанием файла, то текущим будет каталог, в котором расположен файл.Пример привести можешь?ЦитироватьКатегорически нет. Это совершенно необязательно.
А они записывались?Оказалось, что они появляются только после загрузки на сервер...
Пример привести можешь?Написать программу которая будет изменять текущий каталог после старта AutoCAD? Зачем? Не веришь что это возможно? ;)
Вот видео поведения F2, если предварительно не введена команда "textscr":С точностью сказать из-за чего это у тебя происходит не могу. Возможно AutoCAD установился не вполне корректно. Возможно какое-то из загруженных приложений это делает. Возможно это связано с настройками Windows или его запущенных приложений. В любом случае у меня это не воспроизводится ни в русской, ни в английской версии.
Написать программу которая будет изменять текущий каталог после старта AutoCAD?Я имею в виду штатную загрузку AutoCAD. Описываемый мной случай отказа функции open касается именно штатной загрузки. А программно и бабушку дедушкой переопределить можно.:)
В любом случае у меня это не воспроизводится ни в русской, ни в английской версии.ОК, вопрос закрыт.
А настройки у тебя "заводские" или что-то менял?"Заводские". Для чистоты эксперимента создал новый профиль и сбросил его. Результат тот же.
Что бы это значило? Нет каталога "по-умолчанию"?Скорее нет прав на запись в этот каталог. Возможно это каталог с самим acad.exe, на который права на запись есть только у Администратора (я запускаю под административными правами).
Command: (setq f (open "tmp.txt" "w")) #<file "tmp.txt">
Command: (close f) nil
Command: (findfile "tmp.txt") "C:\\Users\\Rivilis-AN\\Documents\\tmp.txt"
И это действительно именно тот только что созданный файл.
я запускаю под административными правамиА как ты запускаешь под админом AutoCAD с указанием файла?
А как ты запускаешь под админом AutoCAD с указанием файла?Просто работаю под пользователем с правами Администратора.
Просто работаю под пользователем с правами Администратора.Я тоже. Так что это не решение...
Я тоже. Так что это не решение...Решение - указывать правильный полный путь к файлу.
Решение - указывать правильный полный путь к файлу.В том смысле, что это работает - да. Но, если для AutoCAD'а определено понятие "каталог по умолчанию", то это не решение, а "костыль". По-моему, существование или несуществование в AutoCAD'е каталога по умолчанию вопрос важный не только в связи с работоспособностью функции "open".
Надеяться на тот факт, что не будет смены каталога по умолчанию, с моей точки зрения непозволительная роскошь. Можно получить неработоспособное приложение на ровном месте.Если ты используешь этот каталог для временных файлов, то ничего страшного произойти не может. К тому же, вопрос о смене каталога по умолчанию решает сам программист.
По-моему, существование или несуществование в AutoCAD'е каталога по умолчанию вопрос важный не только в связи с работоспособностью функции "open".Такого понятия в AutoCAD нет, не было и не будет. Точка. Больше это не обсуждается. Могу посоветовать пока установить появившиеся обновления для AutoCAD 2017 (есть уже HotFix 1 и HotFix 2) - возможно они помогут.
Если ты используешь этот каталог для временных файлов, то ничего страшного произойти не может.Этот каталог может быть read-only, хотябы по той причине, что dwg-файл можно открыть с CD/DVD или из каталога с доступом read-only на сервере.
Command: (getenv "TEMP") "C:\\Temp"
Насколько я помню, файл всегда создавался в папке "C:\Users\<UserName>\AppData\Local\Temp".Ну в Windows XP такого каталога нет в принципе (это я ничего не сказал про то, что системный диск может быть не С: ). Так что или в заданном каталоге, или в %TMP%, или в %TEMP%, или в текущем каталоге: https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-AutoLISP/files/GUID-F417A5EF-95BB-47EE-B60E-7C017635580D-htm.html
Полученный файл потом надо не забыть уничтожить, а то там такая свалка будет.Естественно, так и делал :)
Ну в Windows XP такого каталога нет в принципе (это я ничего не сказал про то, что системный диск может быть не С: )Ну я имел в виду путь %LOCALAPPDATA%\Temp. Вроде как по умолчанию именно этот путь в переменной %TEMP%. (в Windows Vista - 10)