03.06.2013 15:32
özkan-wien
|
Arkadaslar selam, forumda aradim ama bulamadim. gosterdigimiy polyline in metrekaresini atteditin icine girip degistiren lisp varmi. ya da o degeri nasil atteditin icinde degistirebiliriz. tesekkürler.
|
03.06.2013 15:36
Travaci
|
Çift tıkladığınızda değiştirebilmeniz için zaten pencere açılmıyor mu ?
|
04.06.2013 07:26
özkan-wien
|
(defun alandegis(/ ekyazi i obj elist ename)
(princ "\nSelect Text :")
(setq obj (ssget '((0 . "TEXT"))))
(setq ekyazi newtext)
(command "undo" "begin")
(setq i 0)
(while (setq ename (ssname obj i))
(setq elist (entget ename)
i (1+ i))
(setq elist (subst (cons 1 ekyazi ) (assoc 1 elist) elist))
(entmod elist)
(command "undo" "end"))
);_tdeg
(defun c:aakt (/ aaktbol alan_secim m2_secim_tek m2_tek_alan newtext)
(setq aaktbol 10000)
(princ "\nSelect Area :")
(setq alan_secim (ssget '((-4 . "<OR")
(0 . "LWPOLYLINE")
(0 . "POLYLINE")
(0 . "CIRCLE")
(0 . "ELLIPSE")
(0 . "SPLINE")
(0 . "REGION")
(0 . "3DSOLID")
(-4 . "OR>"))))
(if (= alan_secim nil)
(progn (princ "\kein obje"))
(progn
(setq m2_c 0)
(setq m2_secim_tek (ssname alan_secim m2_c))
(command "area" "e" m2_secim_tek)
(setq m2_tek_alan (/ (getvar "area") aaktbol))
(setq newtext (strcat (rtos m2_tek_alan 2 2 ) " m²"))
))
(alandegis)
(princ)
(princ))
Burada bir polylinein üzerine tiklayip alanini cekiyoruz ve mevcut textdeki m2 yi aktuel hale getiriyoruz. sekli degistirilmis polyline cizimler icin kullaniliyor. yapmak istedigim bu alani textde degil de Attribut icindeki objede degistirmek.
|
04.06.2013 08:35
Travaci
|
Kulandığınız attribut'u koyun bi bakalım.
|
04.06.2013 09:14
özkan-wien
|
3 satirlik text
oda adi
metrekaresi
zer malyemesi
metrekarenin valuesi degisecek lisple
|
04.06.2013 11:56
Travaci
|
Kod:
(defun alandegis(/ ekyazi i obj elist ename)
(setq obj (ssget '((0 . "Insert")))
ekyazi newtext)
(command "undo" "begin")
(setq i 0)
(while (setq ename (ssname obj i))
(setq elist (entget (entnext (entnext (entnext ename))))
i (1+ i))
(setq elist (subst (cons 1 ekyazi ) (assoc 1 elist) elist))
(entmod elist)
(command "undo" "end")
)
)
(defun c:aakt (/ aaktbol alan_secim m2_secim_tek m2_tek_alan newtext)
(setq aaktbol 10000)
(princ "\nSelect Area :")
(setq alan_secim (ssget '((-4 . "<OR")
(0 . "LWPOLYLINE") (0 . "POLYLINE")
(0 . "CIRCLE") (0 . "ELLIPSE")
(0 . "SPLINE") (0 . "REGION")
(0 . "3DSOLID") (-4 . "OR>")))
)
(if (= alan_secim nil)
(progn (princ "\kein obje"))
(progn
(setq m2_c 0)
(setq m2_secim_tek (ssname alan_secim m2_c))
(command "area" "e" m2_secim_tek)
(setq m2_tek_alan (/ (getvar "area") aaktbol))
(setq newtext (strcat (rtos m2_tek_alan 2 2 ) " m²"))
)
)
(alandegis)
(princ)
)
Yukarıda yazdığınız sıralama doğru ise çalışacaktır. Yanlış ise farklı value değişecek. Dosyanızı sıralama ne olursa olsun düzgün çalışması için istemiştim.
Travaci (05.06.2013 07:09 GMT)
|
04.06.2013 13:30
özkan-wien
|
tesekkur ederim. 3.siraya yazdi. benimki ikinci sirada .bi sira alta yazdi yani, siralamayi bulamadim ben degistirecektim ama. nasil yapcaz ikinci siraya yazmasi layimdi.
|
04.06.2013 13:40
Travaci
|
Birdaha deneyin bakalım.
|
04.06.2013 13:44
özkan-wien
|
simdi hicbisey yapmiyor
|
04.06.2013 13:46
Travaci
|
Paylaşmadın dosyanı senide uğraştırıosun benide.
|
04.06.2013 13:52
özkan-wien
|
|
04.06.2013 17:41
Travaci
|
Güncel.
|
05.06.2013 06:57
özkan-wien
|
bi parnatez hatasi verdi entnexte sag parantez koydum ama calistiramadim.
|
05.06.2013 07:09
Travaci
|
Haklısın.
|
05.06.2013 13:54
özkan-wien
|
buda tam calismiyor o yuzden yazdim.
|
05.06.2013 14:08
Travaci
|
Ötekini düzelttimde bu dediğinden bişi anlamadım.
|
05.06.2013 15:12
özkan-wien
|
tesekkur ederim
en son yazdigim lispde direk polyline baglanti yapiyor. polylinein areasi degisince textde otomatik degisiyor. Ama sonuna " m²" yi ekleyemiyorum. strcatla. vaktin varsa bi bakabilirmisin.
|
06.06.2013 06:12
Travaci
|
-Da Bu çalışıyormuki ? Birşeyleri eksik kopyaladın sanırım.
|
06.06.2013 07:04
özkan-wien
|
(defun c:fl_att (/ pl att fl)
(setq pl (car(entsel "\nPolyline sec: "))
att (car(nentsel "\nhedef attribut sec: "))
)
(entmod
(subst (cons 1 (:field-makeObjectRefText(vlax-ename->vla-object pl)'Area))
(assoc 1 (entget att))
(entget att)
)
)
(entupd (cdr(assoc 330 (entget att))))
(princ)
)
(defun :field-makeObjectRefText (#object #property / )
(if (vlax-property-available-p #object #property)
(strcat "%<\\AcObjProp Object(%<\\_ObjId "
(itoa(vla-get-ObjectID #object))
">%)."
(vl-princ-to-string #property)
" \\f "%lu2%pr2\>%"
)
(strcat "##"(vl-princ-to-string #object)"."(vl-princ-to-string #property)"##")
)
)
|
özkan-wien
|
att metrekarenin uzerine tikladiktan sonra bi regen yapman gerekiyor rakamlarin görunebilmesi icin.
|