Буду благодарен, если кто-нибудь выложит пример файла PackageContents.xml для приложения на AutoLISP с работающей кнопкой F1. Ну, или просто объяснит "где я дурак".Гадать на кофейной гуще не будем - выкладывай свой bundle вместе с help-файлом.
А когда ты жмешь на F1: после запуска приложения или просто наведя курсор на иконку?Наведя курсор на иконку. Насколько я помню из диалогового окна, написанного на lisp, F1 не работает никогда - только во время запроса в командной строке.
Но я не уверен, что сработаетУгадал :(
1) Каким образом AutoCAD знает, что при наведении на иконку с командой и нажатии кнопки F1 он должен открыть именно этот файл справки и именно этот (кстати какой?) раздел в файле справки? Меню CUIX и BUNDLE никак не пересекаются.Имя CUIX-файла прописано в PackageContents.xml. Там же прописано имя файла справки. Т.е. наведя курсор на иконку получаем имя CUIX-файла, а дальше через PackageContents.xml получаем имя файла справки.
3) Я поверил твой bundle - в AutoCAD 2013 и 2014 x64 он не работает.Само приложение не работает? А что говорит? Имей в виду, там часть приложения выполняется на удаленном сервере.
Имя CUIX-файла прописано в PackageContents.xml. Там же прописано имя файла справки. Т.е. наведя курсор на иконку получаем имя CUIX-файла, а дальше через PackageContents.xml получаем имя файла справки.Это тебе только так кажется. После того как BUNDLE загружен нет никакой взаимосвязи между CUIX и PackageContents.xml
Само приложение не работает? А что говорит? Имей в виду, там часть приложения выполняется на удаленном сервере.А просто не грузится:
Initializing..._.setvar Enter variable name or [?]: ucsortho
Enter new value for UCSORTHO <0>: 0
Command: _.netload Assembly file name: C:\Users\Rivilis-AN\AppData\Roaming\Autodesk\ApplicationPlugins\IDEaL-Spring_web_v01_2014.bundle\Contents\bin\cnc14.dll Cannot load assembly. Error details: System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Users\Rivilis-AN\AppData\Roaming\Autodesk\ApplicationPlugins\IDEaL-Spring_web_v01_2014.bundle\Contents\bin\cnc14.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
File name: 'file:///C:\Users\Rivilis-AN\AppData\Roaming\Autodesk\ApplicationPlugins\IDEaL-Spring_web_v01_2014.bundle\Contents\bin\cnc14.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
at loadmgd()
Это тебе только так кажется. После того как BUNDLE загружен нет никакой взаимосвязи между CUIX и PackageContents.xmlЭто так, но я полагаю, что после загрузки PackageContents.xml в память формируется массив с данными из этого файла и указателями, при помощи которых можно добраться до данных. Во-всяком случае, так обычно делается, иначе зачем этот файл вообще нужен. Хотя я, конечно, понимаю, что это все домыслы, а реальность может оказаться много суровей.
Чтобы по F1 при наведении на иконку появлялась справка нужно делать xaml-файл:Возможно это работает, но это нестандартный путь. А стандартный путь тоже работает - я изучил несколько приложений из Autodesk Exchange. Поэтому хотелось бы понять, почему не работает у меня.
А просто не грузится:Странно... Но скорее всего, это система так странно реагирует на проблему с сетью, причем с твоей стороны: то ли ты работаешь через прокси и он настроен специфическим образом, то ли это защита сети "бдит". Эта dll-ка связывается с удаленным сервером, отправляет и принимает данные.
Но ко всему прочему похоже для F1 не работают относительные пути в PackageContents.xml, что конечно же является багом.Вот это и настараживает - в изученых мной приложениях эти самые относительные пути прекрасно работают.
Должно быть HelpFile, а не Helpfile.Это правильно, но в данном случае не помогает.
chm-файлы не приветствуются, т.к. настройками системы можно заблокировать их открытие (так в большинстве случаев и происходит). Рекомендуется использование htm-файла.Менял chm на htm - не помогает.
Возьми готовый пример приложения из Магазина Приложений и поизучай его.Уже изучал и не один... Кстати, именно тот пример, который ты рекомендуешь.
Странно... Но скорее всего, это система так странно реагирует на проблему с сетью, причем с твоей стороны: то ли ты работаешь через прокси и он настроен специфическим образом, то ли это защита сети "бдит". Эта dll-ка связывается с удаленным сервером, отправляет и принимает данные.Прокси нет. Файервол выключен. dll-ка просто не загружается, т.е. как минимум в Initialize происходит Exception.
Возможно это работает, но это нестандартный путь.Это именно стандартный путь, который появился задолго (как минимум за две версии) до появления BUNDLE.
^C^C^P(c:stw)
и это не работает. Зато работает такой формат: ^C^C_stw
. Еще бы знать, почему?Прокси нет. Файервол выключен. dll-ка просто не загружается, т.е. как минимум в Initialize происходит Exception.Совсем непонятно. За год это первое сообщение о незагружающейся dll-ке. А ты не мог бы попробовать загрузить ее напрямую - командной netload (dll-ка лежит в папке "bin")?
Еще бы знать, почему?Это как раз очевидно (и я как-то тоже не обратил внимание у тебя в меню на это)-, т.к. (c:stw) трактуется AutoCAD'ом как вызов lisp-функции, а не запуск команды. А файл помощи привязывается именно к команде.
Совсем непонятно. За год это первое сообщение о незагружающейся dll-ке. А ты не мог бы попробовать загрузить ее напрямую - командной netload (dll-ка лежит в папке "bin")?Интересный факт. Сегодня попробовал повторить это и dll-ка грузится и в 2013-ом и в 2014-ом. Что вчера с ней было - сейчас уже и не пойму.
Что вчера с ней было - сейчас уже и не пойму.Видимо, не выспалась.:)
Это конечно не моё дело, но почему-бы тебе не избавится от lisp, если ты всё-равно грузишь dll-ки?Кстати, не посоветуешь, что лучше почитать по программированию приложений для AutoCAD на VB .net?
Кстати, не посоветуешь, что лучше почитать по программированию приложений для AutoCAD на VB .net?Если спрашиваешь мой совет, то порекомендую не читать ничего по VB.NET, а читать по C#. Андрей Бушман привел список литературы, к которому мне нечего добавить: Литература по программированию на .NET (http://adn-cis.org/forum/index.php?topic=400.0)
А не скажешь пару слов, чем C# лучше VB в контексте программирования под AutoCAD?Я приверженец C-подобных языков (C/C++/C# и т.д.), а Basic/Visual Basic/VBA/VB.NET - это учебные языки. Это моя точка зрения и навязывать я ее не буду. C# - это родной язык для .NET, а VB.NET искусственно переделаный из VB.
Можем ли мы рассчитывать, что наш boundle будет всегда ложиться в C:\ProgramData\Autodesk\ApplicationPlugins\Нет. Как минимум может быть другой диск.
не будет ли это злоупотреблением и через чур раздуванием списка "путей поиска вспомогательных фалов..."?Не будет. Длина этого списка может быть порядка 64K байт.
а заодно и путь к нашим ресурсным dll для cuix файловА вот это лишнее. Ресурсные dll должны лежать в одном каталоге с cuix.
Не будет. Длина этого списка может быть порядка 64K байт.Хорошо, тогда воспользоваться Support Path, самое правильное.
Ресурсные dll должны лежать в одном каталоге с cuixне, не лишнее, лежат то они в одном, но AutoCAD их так не находит :-( http://adn-cis.org/forum/index.php?topic=3138.msg13170#msg13170
А что вернет (findfile "\\Contents\\Help\\Import_Export.html") ?Скорее:
Скорее:Да, именно так с точкой в начале будет работать, если только путь до точки прописан в путях поиска.Код - Auto/Visual Lisp [Выбрать]Но вряд ли...
(findfile ".\\Contents\\Help\\Import_Export.html")