Кода с собой нет, показать не могу, но возможно и так будет понятно...Нет. Без кода - гадание на кофейной гуще.
И еще как можно более тонко отфильтровать размер? DIMENSIONS же сгребает все размеры в кучу?Можно отфильтровать точнее. Прочитай в DXF для DIMENSION описание группы 70: https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2017/ENU/AutoCAD-DXF/files/GUID-EDD54EAC-A339-4EBA-AEA6-EC8066505E2B-htm.html (https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2017/ENU/AutoCAD-DXF/files/GUID-EDD54EAC-A339-4EBA-AEA6-EC8066505E2B-htm.html)
70Ну и соответственно фильтр:
Dimension type:
Values 0-6 are integer values that represent the dimension type. Values 32, 64, and 128 are bit values, which are added to the integer values (value 32 is always set in R13 and later releases)
0 = Rotated, horizontal, or vertical
1 = Aligned
2 = Angular
3 = Diameter
4 = Radius
5 = Angular 3-point
6 = Ordinate
32 = Indicates that the block reference (group code 2) is referenced by this dimension only
64 = Ordinate type. This is a bit value (bit 7) used only with integer value 6. If set, ordinate is X-type; if not set, ordinate is Y-type
128 = This is a bit value ( bit 8 ) added to the other group 70 values if the dimension text has been positioned at a user-defined location rather than at the default location
Нет. Без кода - гадание на кофейной гуще.
на dwg не так давно была похожая тема, посмотрите, может поможет: ссылка
Dim dim1Obj As VariantПочему?
Почему?
Скорее уж AcadObject, или один из классов размеров: Dim3PointAngular, DimAligned, DimAngular, DimArcLength, DimDiametric, DimRotated
В одном месте dim1Obj, а в другом dimObjда Ё-моё... исправил все. работает.
1. Александр, не подскажете почему не работает explode применительно к размерам?Увы, но в очередной раз мы попадаем на ограничение VBA в AutoCAD. Только для этих типов объектов есть метод Explode:
А если попробовать найти блок отвечающий за размер и взрывать уже его, для блока метод explode вроде работает...Лучше всего вообще не пользоваться VBA. Смещение хендла в разных версиях AutoCAD (а возможно и внутри) одной может быть разным. А если чертеж пришел (не дай Бог) из какого-то клона AutoCAD, то может быть совсем печально...
Да, придется проверить смещения хендла для различных типов размеров, но это всяко лучше командного метода.
А если попробовать найти блок отвечающий за размер и взрывать уже его, для блока метод explode вроде работает...Кстати, блок взрывать не нужно (и невозможно) - это же не INSERT, а BLOCK. По нему можно просто пройтись итератором.
Кстати, блок взрывать не нужно (и невозможно) - это же не INSERT, а BLOCK. По нему можно просто пройтись итератором.ну я примерно на это и намекал в 7 сообщении...
P.S.: Рекомендую побыстрее забыть про VBA и перейти на .NET (лучше C#) для AutoCAD
А если попробовать найти блок отвечающий за размер и взрывать уже его, для блока метод explode вроде работает...для меня это наверное пока рановато. Идея в принципе понятна, но я вязну на раз два в особенностях автокада (+ совсем начальные знания по vba)...
Да, придется проверить смещения хендла для различных типов размеров, но это всяко лучше командного метода.
Вот в сети нарыл системную переменную DIMASSOC=0 (при 0 вставляет размер взорванным) , но как ее прикрутить к программе и возможно ли это вообще не понял пока.Размеры у тебя уже вставлены, так что никакая системная переменная на них не повлияет.
Вот так можно расчленить размер:Спасибо, размеры взрываются, единственно автокад считает что после взрыва добавлен только один элемент (в моем случае это AcDbAlignedDimension) хотя все в модели взорвано на кусочки...
Размеры у тебя уже вставлены, так что никакая системная переменная на них не повлияет.а если скопировать размер с этой системной переменной=0 , так не получится (это уже чисто ради интереса)?
Спасибо, размеры взрываются, единственно автокад считает что после взрыва добавлен только один элемент (в моем случае это AcDbAlignedDimension) хотя все в модели взорвано на кусочки...Ты проверял с моим кодом? Размеры у тебя в модели или в листе? Если в листе, то вместо modelspace должно быть paperspace.
а если скопировать размер с этой системной переменной=0 , так не получится (это уже чисто ради интереса)?Нет конечно. Эта системная переменная влияет только на создание размеров командой AutoCAD.
Ты проверял с моим кодом? Размеры у тебя в модели или в листе? Если в листе, то вместо modelspace должно быть paperspace.да, проверял с Вашим кодом. Размеры в модели.
Мне нужен чертеж, с которым ты проверял и номер версии AutoCADF.205.0.0 Autocad 2012 russian sp2
Специально проверил в AutoCAD 2012 SP2 (у меня английский, но это не должно влиять). Всё работает как надо:Мне нужен чертеж, с которым ты проверял и номер версии AutoCADF.205.0.0 Autocad 2012 russian sp2
чертеж абсолютно пустой, проставляю размер в пустоту и запускаю макрос.
В чем Вы , кстати, видео записываете?Прочитай у меня в подписи.
Прочитай у меня в подписи.если нужно, вечером запишу и отправлю.
Не помешает понять что у тебя происходит. Возможно взаимодействие с какими-то другими программами. Я проверил даже в древнем AutoCAD 2008 - всё работает. Немного модифицировал код, так как похоже у тебя не завершается команда EXPLODE до того как отрабатывает дальнейший код.Прочитай у меня в подписи.если нужно, вечером запишу и отправлю.
Я проверил даже в древнем AutoCAD 2008 - всё работает.Проверил в AutoCAD as Civil 3D 2014 - работает. Видео:
Проверил в AutoCAD as Civil 3D 2014 - работает.ё-моё, почему интересно у меня-то не хочет. Вечером еще до 2-х компов с Автокадом дойду, попробую.
в 2018-ом работает правильно...Значит, как я и предположил, что-то мешает этому коду правильно выполнятся. Например, какие-то установленные приложения к AutoCAD.
на той же машине где 2012,2015
Значит, как я и предположил, что-то мешает этому коду правильно выполнятся.при экспортировании в Автокад 2018 панелек с кнопками макросов, через какое-то время (или сразу) , перестал работать данный код :)))
Ну теперь становится ясно, что проблема в этих панельках.Значит, как я и предположил, что-то мешает этому коду правильно выполнятся.при экспортировании в Автокад 2018 панелек с кнопками макросов, через какое-то время (или сразу) , перестал работать данный код :)))
сброс настроек профиля ни к чему не привел (хотя я возможно сделал не то что нужно).
Ну теперь становится ясно, что проблема в этих панельках.как появится время попробую выяснить конкретнее, что является причиной такого поведения автокада...
Вызов из lisp'а кода на VBA иногда приводит к таким проблемам.А есть альтернативный код запускающий через Lisp макрос VBA работающий с выбором пользователя. Напрямую как я выше написал работает Ваш код. В моем макросе выбор набором примитивов работать не хочет.
А есть альтернативный код запускающий через Lisp макрос VBA работающий с выбором пользователя.
В дальнейшем пожалуйста каждый вопрос оформляй отдельной темой.У меня вопрос в контексте данного обсуждения.
Как определен Ln? Ln.StartPoint и Ln.EndPoint должны возвращать то, что нужно.
Так должно работать.Работает! Спасибо , большое. :)