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)"##")
)
)

06.06.2013 07:06    

özkan-wien
att metrekarenin uzerine tikladiktan sonra bi regen yapman gerekiyor rakamlarin görunebilmesi icin.

Copyright © 2004-2022 SQL: 2.11 saniye - Sorgu: 100 - Ortalama: 0.0211 saniye