| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Запись длин примитивов в таблицу

Запись длин примитивов в таблицу

Ответ
Поиск в этой теме
Непрочитано 20.01.2020, 16:11 #1
Запись длин примитивов в таблицу
IL-14
 
Регистрация: 16.01.2020
Сообщений: 10

Добрый день!
Не мог бы кто-нибудь и акад-программистов написать лисп (vba, c#?) функцию, которая бы в цикле извлекала из свойств выбранного мышкой примитива его длину и записывала в очередную строчку существующей в файле автокадной (или внедренной exel) таблички? Выход из функции по escape. Или может-быть что-нибудь похожее когда-нибудь уже писалось (в готовых прогах не нашел)?
Просмотров: 3248
 
Непрочитано 20.01.2020, 20:07
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Кабельный журнал?)
Сергей812 вне форума  
 
Автор темы   Непрочитано 20.01.2020, 22:19
#3
IL-14


 
Регистрация: 16.01.2020
Сообщений: 10


Нет, не кабельный. )
Я нашел вот в этой теме https://forum.dwg.ru/showthread.php?t=12911&page=2
текст программы уважаемого А. Ривилиса с решением этой задачи для x32. К сожалению на x64 она работает некорректно, занося в ячейки таблицы xxxx вместо длин. Может кто знает как это поправить и готов помочь?
IL-14 вне форума  
 
Непрочитано 20.01.2020, 23:24
#4
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


IL-14,
Нужно воспользоваться этой функцией: https://forum.dwg.ru/showpost.php?p=566244&postcount=8
А затем заменить в моём коде:
Код:
[Выделить все]
 (vl-princ-to-string (vla-get-objectid (vlax-ename->vla-object en))) 
на
Код:
[Выделить все]
 (Get-ObjectID-x86-x64 (vlax-ename->vla-object en))
Надеюсь, что будет работать.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 20.01.2020, 23:39
#5
IL-14


 
Регистрация: 16.01.2020
Сообщений: 10


Спасибо! Попробую поправить текст программы.

----- добавлено через ~9 мин. -----
Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Надеюсь, что будет работать.
Да, огромное спасибо! Все отлично работает.

Полезнейшая программа для самых разных инженерных задач. Уверен, для многих будет незаменима. Код пока вставил "кое-как", позже почитаю как это сделать правильно и поправлю.
Программа сохраняет в выбранную акад-табличку значения длин выбранных линий (в выбранные ячейки). Табличку экспортируем в эксель и just enjoy! )) Просто, но ооочень удобно!


(defun C:qw3 ( / en obj s row col)
(vl-load-com)
(cond
((and (setq en (car (entsel "\nВыберите таблицу: ")))
(= (cdr (assoc 0 (entget en))) "ACAD_TABLE"))
(setq obj (vlax-ename->vla-object en))
(while (and (setq en (car (entsel "\nВыберите линию (ENTER - завершение): " )))
(wcmatch (cdr (assoc 0 (entget en))) "*LINE"))
(setq s (strcat
"%<\\AcObjProp Object(%<\\_ObjId "
(Get-ObjectID-x86-x64 (vlax-ename->vla-object en))
">%).Length>%"
))
(if (setq p (getpoint "\nУкажите ячейку таблицы: " ))(progn
(if (= :vlax-true (vla-HitTest obj
(vlax-3d-point (trans p 1 0)) (vlax-3d-point (trans (getvar "VIEWDIR") 1 0)) 'row 'col))
(vla-SetText obj row col s)
)
)) ;_endof if progn
)
)
(t
(princ "\nЭто не таблица!")
)
)
(princ)
)
;;--------------------------------------------------------
;; Функция получает строковое представление ObjectID
;; вне зависимости от того AutoCAD x86 или x64
;; Источник: https://discussion.autodesk.com/foru...sageID=6172961
;;--------------------------------------------------------
(defun Get-ObjectID-x86-x64 (obj / util)
(setq util (vla-get-Utility (vla-get-activedocument (vlax-get-acad-object))))
(if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
(if (= (type obj) 'VLA-OBJECT)
(if (> (vl-string-search "x64" (getvar "platform")) 0)
(vlax-invoke-method util "GetObjectIdString" obj :vlax-False)
(rtos (vla-get-objectid obj) 2 0)
)
)
) ;_ end of defun

Последний раз редактировалось IL-14, 21.01.2020 в 00:08. Причина: попытка вставить код корректно не удалась.
IL-14 вне форума  
 
Непрочитано 25.01.2020, 04:41
#6
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Offtop: IL-14, чтобы вставить текст как код, нужно вставить код, выделить его и нажать одну из этих кнопок. Или сначала нажать одну из кнопок, а затем вставить между тэгами код.
Миниатюры
Нажмите на изображение для увеличения
Название: 12123123321.PNG
Просмотров: 42
Размер:	9.0 Кб
ID:	222390  
skkkk вне форума  
 
Непрочитано 17.02.2020, 22:06
#7
mr.frai1992


 
Регистрация: 10.04.2019
Сообщений: 47


Извиняюсь за свои 5 копеек но это разве не тоже самое что таблица->извлечение данных?
mr.frai1992 вне форума  
 
Непрочитано 27.02.2020, 01:51
#8
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Цитата:
Сообщение от mr.frai1992 Посмотреть сообщение
Извиняюсь за свои 5 копеек но это разве не тоже самое что таблица->извлечение данных?
Не совсем. Автор хочет делать извлечение выбирая объекты в своем порядке, тыкая мышью в примитив. Хотя, может быть и извлечение могло помочь, вопрос в тонкостях самой задачи.
Theodor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Запись длин примитивов в таблицу

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как «заставить» AutoCad 2011 выдать таблицу с параметрами длин и углов заданных отрезков? HellFistula AutoCAD 4 12.03.2018 14:02
Помогите с нумерацией большого количества полилиний на чертеже и сведением их длин в таблицу! Olympisch LISP 19 21.06.2016 14:49
LISP для подсчета суммы длин линий Kostinok LISP 18 26.04.2013 14:56
Почему при вставке новой строки в таблицу в кторой есть ссылки на другую таблицу эти ссылки начинают ссылаться на другие ячейки? МишаИнженер AutoCAD 8 09.11.2010 20:24
LISP для поиска групп (наборов) одинаковых примитивов и замена их блоком ElectroBOG LISP 20 23.07.2010 16:00