todesengel Posted July 23, 2019 Report Share Posted July 23, 2019 в процессе работы с teigha возникло подозрение, что можно сделать приложение, которое будет открывать DWG даже без nanoCADa вовсе. ну типа REALDWG. это реально сделать? Quote Link to comment Share on other sites More sharing options...
Kreator Posted July 23, 2019 Report Share Posted July 23, 2019 Предполагаю, что да. На нам надо не открывать, а работать с ним Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 23, 2019 Report Share Posted July 23, 2019 пока даже открыть, загрузить не получается. ошибку выдает. Quote Link to comment Share on other sites More sharing options...
Robink Posted July 23, 2019 Report Share Posted July 23, 2019 Предполагаю, что да. На нам надо не открывать, а работать с ним Предпологаю, что нет . Попробовал просто в проект консольного приложения добавить ссылки на Teigha. При попытке загрузить документ (базу данных) получаю исключение: "Can not intercept exception. Debugged program can not be continued and properties can not be evaluated. System.IO.FileNotFoundException: Невозможно загрузить файл или сборку "hostdbmgd, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" или один из зависимых от них компонентов. Не удается найти указанный файл. ". 1 Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 23, 2019 Report Share Posted July 23, 2019 все верно, так и будет, но можно пойти дальше - скопировать все DLL из nanoCADa в директорию с приложением. тогда будет уже другая ошибка. Quote Link to comment Share on other sites More sharing options...
Kreator Posted July 23, 2019 Report Share Posted July 23, 2019 скопировать все DLL из nanoCADa Но это уже не без NC Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 23, 2019 Report Share Posted July 23, 2019 вы не верно поняли. я это сделал, так как незнал, какие именно DLL тайге нужны для работы. если бы все сработало, я бы начал по одной их удалять, и осталось бы две-три нужных. Quote Link to comment Share on other sites More sharing options...
Snegopad Posted November 6, 2019 Report Share Posted November 6, 2019 В 07.04.2017 в 10:55, 0leg сказал: Получается: -для блока InsertionPoint() -для окружности/дуги Center() -для отрезка EndPoint(), StartPoint() Спасибо за помощь! Меня тоже заинтересовал этот вопрос. Эти свойства возвращают объект класса Point3d, но при обращении к координате X: ut.prompt(ss.item(i).startpoint.x) у меня выдаёт ошибку. Помогите, пожалуйста. Quote Link to comment Share on other sites More sharing options...
Robink Posted November 6, 2019 Report Share Posted November 6, 2019 Это у Вас VB .NET? ut.prompt, это же вроде COM интерфейс. Гуглите Автокад VBA объектная модель, если COM у Вас. Quote Link to comment Share on other sites More sharing options...
Snegopad Posted November 7, 2019 Report Share Posted November 7, 2019 (edited) 16 часов назад, Robink сказал: Это у Вас VB .NET? ut.prompt, это же вроде COM интерфейс. Гуглите Автокад VBA объектная модель, если COM у Вас. Да, COM. Пишу на JS. Возможно ли то, что объектные модели автокада и нанокада отличаются? Потому как описание свойств текстового объекта в https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-ActiveX/files/GUID-ED298AC7-19E0-4E54-8983-48439EF70116-htm.html не соответсвует получаемым значениям. Приведу примеры: - Свойства TextAlignmentPoint и Insertionpoint возвращают ошибку object Error вместо массива значений, - Свойство Lineweight вместо acLnWt009 возвращает 9, а вместо acLnWtByLwDefault возвращает -1, - Зато свойство Position, которого нет в Автокаде возвращает пустую строку. На примере текстового объекта объясните, пожалуйста, как можно получить координаты объекта? Edited November 7, 2019 by Snegopad Добавил про Position Quote Link to comment Share on other sites More sharing options...
Robink Posted November 7, 2019 Report Share Posted November 7, 2019 Есть там отличия, с текстом все так же Quote Link to comment Share on other sites More sharing options...
doctorraz Posted November 7, 2019 Report Share Posted November 7, 2019 (edited) 1 час назад, Snegopad сказал: Возможно ли то, что объектные модели автокада и нанокада отличаются? нанокад более "придирчив" к типу данных, код который АК жрет , нано давится. т.е. типы надо приводить явно. (не всегда, но..) 1 час назад, Snegopad сказал: Свойства TextAlignmentPoint и Insertionpoint возвращают ошибку object Error вместо массива значений, Dim pnt1(2) As Double если бы ты вынул своего виртуального коня из вакуума, возможно тут больше смогли бы помочь Edited November 7, 2019 by doctorraz 1 1 Quote Link to comment Share on other sites More sharing options...
Robink Posted November 7, 2019 Report Share Posted November 7, 2019 9 минут назад, doctorraz сказал: нанокад более "придирчив" к типу данных, код который АК жрет , нано давится. т.е. типы надо приводить явно. (не всегда, но..) Dim pnt1(2) As Double если бы ты вынул своего виртуального коня из вакуума, возможно тут больше смогли бы помочь Dim pnt1(3) as Double Quote Link to comment Share on other sites More sharing options...
doctorraz Posted November 7, 2019 Report Share Posted November 7, 2019 10 минут назад, Robink сказал: Dim pnt1(3) as Double у точки три координаты хотя если хочется поизвращаться то Option Base 1 только вот Split опять начнет массив с нуля 1 Quote Link to comment Share on other sites More sharing options...
Robink Posted November 7, 2019 Report Share Posted November 7, 2019 Там вообще js. А так ничего кроме Option Explicit не надо. Я забыл, что там в VBA указывается, номер последнего элемента или количество элементов, может я не прав. Quote Link to comment Share on other sites More sharing options...
doctorraz Posted November 7, 2019 Report Share Posted November 7, 2019 3 минуты назад, Robink сказал: Я забыл, что там в VBA указывается, номер последнего элемента или количество элементов, может я не прав. номер последнего элемента указывается только первый элемент имеет номер ноль (по умолчанию), что ява что вебе поэтому Dim pnt1(2) As Double это xyz (если Base не 1) Quote Link to comment Share on other sites More sharing options...
Robink Posted November 7, 2019 Report Share Posted November 7, 2019 Со скриптами проблема, что вроде как отлаживать негде, нет редактора, если только из по VBA редактора в офисе. Quote Link to comment Share on other sites More sharing options...
doctorraz Posted November 7, 2019 Report Share Posted November 7, 2019 4 минуты назад, Robink сказал: Со скриптами проблема, что вроде как отлаживать негде, нет редактора, если только из по VBA редактора в офисе. не только Спойлер с явой не заморачивался, но наверняка, что-то есть Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted November 7, 2019 Report Share Posted November 7, 2019 (edited) objText.InsertionPoint не работает ? (VBA на nanoCAD) Edited November 7, 2019 by A.Kudrjashov 1 1 Quote Link to comment Share on other sites More sharing options...
Robink Posted November 7, 2019 Report Share Posted November 7, 2019 Судя по окну переменных - работает 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted November 7, 2019 Report Share Posted November 7, 2019 очевидножэж что, посмотреть значение в Watches или Locals и присвоить это значение переменной это не одно и тоже Snegopad присвоить не может 1 Quote Link to comment Share on other sites More sharing options...
Robink Posted November 7, 2019 Report Share Posted November 7, 2019 http://vbamodel.narod.ru/AutoCAD/idh_textalignmentpoint.htm Замечания Text: Это свойство будет сброшено к 0, 0, 0 и станет только для чтения когда свойство Alignment установлено в acAlignmentLeft. Текст выравнивают используя свойство InsertionPoint. Quote Link to comment Share on other sites More sharing options...
Snegopad Posted November 7, 2019 Report Share Posted November 7, 2019 (edited) Robink, doctorraz, A.Kudrjashov, спасибо за помощь!! Открыл Watches в VBA. Насколько я понял, проблема была в несоответствии типа данных при выводе через ut.prompt. На выражения типа: ut.prompt(ss(0).Item(0).Insertionpoint) и даже на ut.prompt(ss(0).Item(0).Insertionpoint(0)) выдаёт ошибку Type mismatch. В итоге я сделал: Dim pnt as Variant pnt = ss(0).Item(0).Insertionpoint ut.prompt(pnt(0)) И заработало! Edited November 7, 2019 by Snegopad Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted November 7, 2019 Report Share Posted November 7, 2019 (edited) 14 минут назад, Snegopad сказал: Robink, doctorraz, A.Kudrjashov, спасибо за помощь!! Открыл Watches в VBA. Насколько я понял, проблема была в несоответствии типа данных при выводе через ut.prompt. На выражения типа: ut.prompt(ss(0).Item(0).Insertionpoint) и даже на ut.prompt(ss(0).Item(0).Insertionpoint(0)) выдаёт ошибку Type mismatch. В итоге я сделал: Dim pnt as Variant pnt = ss(0).Item(0).Insertionpoint ut.prompt(pnt(0)) И заработало! Там в рекомендованных nanoSoft VBScript и JScript полная вешалка ! Массивы объектов AutoCAD ни VBScript, ни JScript не понимают. Сами объекты тоже - не достучишься. Пример JScript Спойлер . Спойлер При этом в VBScript Спойлер Edited November 7, 2019 by A.Kudrjashov 1 Quote Link to comment Share on other sites More sharing options...
Robink Posted November 7, 2019 Report Share Posted November 7, 2019 В VBA для этого есть Collection насколько помню Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.