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

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

vla- как сделать блок?

Ответ
Поиск в этой теме
Непрочитано 31.07.2007, 19:02 #1
vla- как сделать блок?
ASLYS
 
Delineante
 
Ростов-на-Дону/Madrid
Регистрация: 26.12.2006
Сообщений: 396

Код:
[Выделить все]
(vla-add(vla-get-blocks (vla-get-ActiveDocument (VLAX-GET-ACAD-OBJECT)) (VLAX-3D-POINT point) "name")
создаю пустой блок...
как его заполнить с помощью vla-функций, вобщем не используя
Код:
[Выделить все]
(command "_block" blk-name-act P-ins Obj-ename "")
Просмотров: 3340
 
Непрочитано 31.07.2007, 19:31
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Как-то так, подробности в коментариях
Код:
[Выделить все]
(and
(setq blkdef (vla-add(vla-get-blocks (vla-get-ActiveDocument (VLAX-GET-ACAD-OBJECT)))(VLAX-3D-POINT '(0 0 0)) "name"))
;;Если объекта нет, то можно "рисовать" в блок
(vla-addline blkdef (vlax-3d-point '(10 10 0))(vlax-3d-point '(100 100 0)))
;;Если объекты есть, то можно копировать в блок
;; obj - список vla-указателей объектов
(setq ss (ssget "_:L"))
(setq obj (mapcar 'vlax-ename->vla-object(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
(vla-copyobjects (vla-get-activedocument (vlax-get-acad-object))
              (vlax-make-variant (vlax-safearray-fill
                  (vlax-make-safearray vlax-vbobject (cons 0 (1- (length obj))))
                  obj)) blkdef)
)

;;; Если знаешь vla-указатель другого блока, то его можно "втавить" в другой блок
;;; x - vla-указатель блока (insert)
;(vla-InsertBlock blkdef
;	       (vla-get-insertionpoint x)(vla-get-name x)
;	       (vla-get-xscalefactor x)(vla-get-yscalefactor x)
;	       (vla-get-zscalefactor x)(vla-get-rotation x))

Последний раз редактировалось VVA, 19.09.2015 в 11:19.
VVA вне форума  
 
Автор темы   Непрочитано 31.07.2007, 19:49
#3
ASLYS

Delineante
 
Регистрация: 26.12.2006
Ростов-на-Дону/Madrid
Сообщений: 396
<phrase 1=


спасибо, разобрался
ASLYS вне форума  
 
Автор темы   Непрочитано 31.07.2007, 21:06
#4
ASLYS

Delineante
 
Регистрация: 26.12.2006
Ростов-на-Дону/Madrid
Сообщений: 396
<phrase 1=


блоки сделал, а теперь не могу их взорвать. блоки у меня разномасштабные. так взорвать получается, но не хочется
Код:
[Выделить все]
(vl-cmdf "_explode"(car (entsel "\nSelect block:")) " ")
а так хочется, но не получается
Код:
[Выделить все]
(vla-explode (car (entsel "\nSelect block:")))
как с помощью vla-функции взорвать разномасштабный блок?
ASLYS вне форума  
 
Непрочитано 31.07.2007, 22:22
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856


Тут, по-моему, одно из двух. Либо explmode не 1, либо уже ничто не поможет
Хотя, по-моему, vla-explode не обрабатывает неравномасштабные блоки
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.07.2007, 23:02
#6
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Алексей совершенно прав. Проблему с vla-explode уже как-то обсуждали резюме было такое:

Цитата:
Вобщем vla-explode -

дает ошибку на:
разномасштабных анонимных и именованных блоках;

некорректно обрабатывает (смещает):
повернутые анонимные блоки;

корректно обрабатывает:
блоки кроме перечисленных.

зы если чего напутал просьба одернуть :)
AY вне форума  
 
Непрочитано 01.08.2007, 05:26
#7
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,826


Плюс к этому, наверно, необходимо во vla- функцию передавать не ename примитива, а vla-object, т.е. как-то так:
Код:
[Выделить все]
(vla-explode (vlax-ename->vla-object (car (entsel "\nSelect block:"))))
Krieger вне форума  
 
Непрочитано 01.08.2007, 09:32
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


>ASLYS Посмотри эту тему. Там делали burst блокам, причем многоуровневым и получали набор взорванных примитивов

Последний раз редактировалось VVA, 19.09.2015 в 11:18.
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > vla- как сделать блок?

Размещение рекламы