16.11.2021 13:48    

bery35
Merhaba,
Forumlarda bir lisp buldum var. Blok adlarını dışarı yazdırmaya yarıyor. Ancak blokları tek tek seçerek bunu yapıyor. Tüm blokları seçip merkez noktalarına blok adlarını yazdırmak mümkün mü? Autolisp bilgim çok çok az. Bu konuda yardımcı olabilecek birisi var mı?

Kod:

(setq bn_txt nil)
(defun C:bny( / pt1 blname elast Newly_Created_Ent Obj_SS all_min all_max LL UR UL pt1);;;put temp variables
(defun Last_Entity ( / Ent_Name Last_Ent)
  (and
(setq Last_Ent (entlast))
(while (setq Ent_Name (entnext Last_Ent))
  (setq Last_Ent Ent_Name)
)
  )
  Last_Ent
)
(defun Ent_Created_by_Last_Command (Ent_Name / Ent_Next SS_Set)
  (cond
( (not Ent_Name) (ssget "_X") )
( (setq Ent_Next (entnext Ent_Name))
  (setq SS_Set (ssadd Ent_Next))
  (while (setq Ent_Next (entnext Ent_Next))
(if (entget Ent_Next) (ssadd Ent_Next SS_Set))
  )
  SS_Set
)
  )
)
(if (null bn_txt)
(progn
(setvar "TEXTSIZE" (getdist "\Height of text label (uses default style): "))
(setq bn_txt "sizeset")
)
)
(princ "\nAdd block name to drawing.")
(setq blname (vla-get-Effectivename (vlax-ename->vla-object (setq ent (car (entsel "\nSelect Block:"))))))
(vlax-invoke (vlax-ename->vla-object ent) 'copy)
(setq elast (Last_Entity))
(command "explode" (entlast))
(setq Newly_Created_Ent (ssadd))
(setq Newly_Created_Ent (Ent_Created_by_Last_Command elast))
(setq Obj_SS (ssadd))
(foreach Ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex Newly_Created_Ent)))
(if (not (wcmatch (vla-get-objectname (vlax-ename->vla-object Ent)) "*MText")) (ssadd Ent Obj_SS))
)
(setq all_min '() all_max '())
(foreach ent (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex Obj_SS))))
(vla-GetBoundingBox ent 'minpt 'maxpt)
(Setq all_min (cons (trans (vlax-safearray->list minpt) 1 0) all_min))
(Setq all_max (cons (trans (vlax-safearray->list maxpt) 1 0) all_max))
)
(setq LL (list (car (vl-sort (mapcar 'car all_min) '<))
   (car (vl-sort (mapcar 'cadr all_min) '<))
)
)
(setq UR (list (last (vl-sort (mapcar 'car all_max) '<))
   (last (vl-sort (mapcar 'cadr all_max) '<))
)
)
(setq UL (list (car LL) (cadr UR)))
(command "_.erase" Newly_Created_Ent "")
(setq pt1 (getpoint"\nSelect center point for block title:"))
(command "text" "c" pt1 "" "0" (strcat blname " / "  (rtos (distance UL UR) 2 1) "x" (rtos (distance LL UL) 2 1)))
(princ)
)
(princ "\nType BN to execute.")

16.11.2021 14:02    

Travaci


Linkleri görebilmek için ÜYE olmalısınız.

17.11.2021 11:39    

bery35
Travaci teşekkür ederim, sorumla yer işgal ettiğim için kusura bakmayın lütfen. Çok işime yarayacak iyi günler dilerim.

> 1 <
Copyright © 2004-2022 SQL: 1.399 saniye - Sorgu: 51 - Ortalama: 0.02743 saniye