Copyright © 2004-2022 SQL: 3.642 saniye - Sorgu: 107 - Ortalama: 0.03404 saniye
24.01.2023 07:37
fakir52 |
Metraj yaparken kulanabileceğimiz polyline ile cevrilmiş alanların "mahal ismi ve alanını" tablo olarak oluşturan bir lisp paylaşılmış Autdesk forumda. ancak bu lisp alanları (sqfeet-yada başka bir birimde) olarak veriyor. Alan 17,361 kat fazla çıkıyor.
1-Bunu m2 olarak düzenlememiz mümkün müdür? 2- Alan bilgisi yanına çevre bilgisi ekleyebilir miyiz tabloya? Not: istediğim şeyin zorluk derecesini bilmiyorum.. ama birçok metraj işi yapan kişimin çok işine yarayacak bir lisp olduğunu düşünüyorum. emek verip paylaşım yapan tüm üstadlara saygılarımı sunuyorum. mevcut lisp aşağıdaki gibidir. Kod: ;;; Poly-Pts (gile)
;;; Returns the vertices list of any type of polyline (WCS coordinates) ;;; ;;; Argument ;;; pl : a polyline (ename or vla-object) ;;;_gile ;;;http://forums.augi.com/showthread.php?83935-Creating-a-list-Polyline-vertices (defun Poly-Pts (pl / pa pt lst) (vl-load-com) (setq pa (if (vlax-curve-IsClosed pl) (vlax-curve-getEndParam pl) (+ (vlax-curve-getEndParam pl) 1) ) ) (while (setq pt (vlax-curve-getPointAtParam pl (setq pa (- pa 1)))) (setq lst (cons pt lst)) ) ) (defun c:RoomArea ( / AllSlctn pobj pobjArea pobjPoints RoomText RoomTextObj pnt loc cnt) (setq AllSlctn (ssget '((0 . "LWPOLYLINE")))) (if AllSlctn (progn (setq pnt (getpoint "\nPick the point for table: ")) (setq loc (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))) (setq table (vla-AddTable loc (vlax-3d-point pnt) 2 2 1 5)) (vla-settext table 0 0 "Area Table") (vla-settext table 1 0 "Room Label") (vla-settext table 1 1 "Area") (setq cnt 0) (repeat (sslength AllSlctn) (setq pobj (ssname AllSlctn cnt)) (setq vlpobj (vlax-ename->vla-object pobj)) (setq pobjArea (vla-get-area vlpobj)) (setq pobjPoints (Poly-Pts pobj)) (setq RoomTextObj (ssget "_WP" pobjPoints '((0 . "*TEXT")))) (if RoomTextObj (progn (setq RoomText (vlax-ename->vla-object(ssname RoomTextObj 0 ))) (vla-insertrows table (+ 2 cnt) 1 1) (vla-settext table (+ 2 cnt) 0 (vla-get-TextString RoomText)) (vla-settext table (+ 2 cnt) 1 (/(vla-get-area vlpobj)144)) );progn );if (setq cnt ( + cnt 1)) );repeat );progn );if );defun ehya (24.01.2023 07:58 GMT) |
24.01.2023 08:01
ehya |
Alt bölümde aşağıdaki satır var.
(vla-settext table (+ 2 cnt) 1 (/(vla-get-area vlpobj)144)) Alan değeri 144'e bölünmüş.. Çiziminiz cm ve siz m2 görmek istiyorsanız bu 144 değerini 10000.0 olacak şekilde değiştirin.
|
24.01.2023 09:03
alumina |
Alıntı Dikkat edin, lispte buyuk sikinti olabilecek bir eksik var. Secilen polyline nesnelere zoom yapilmadan icerisindeki text nesneleri secilmis. Eger table icin pick point yapilmadan once secilen polyline nesnelerin tamami ekranda gorunur durumda olmazsa gorunmeyenler isleme alinmayacak ve siz bunun farkinda olmayacaksiniz.
|
24.01.2023 23:41
fakir52 |
İlgilendiğiniz için teşekkür ederim. söylediğiniz gibi 144 değerini 10000.0 ile değiştirdim ve m2 olarak sonuç aldım. ancak vigülden sonra 14 haneli bir küsürat var. bunu 2 hane olarak düzeltebilir miyiz?
|
25.01.2023 05:56
ehya |
Alıntı ilk mesajımda belirttiğim satırı aşağıdaki ile değiştirin. sondaki 2 rakamı virgülden sonraki basamak sayısını ifade eder. İstediğinize göre değiştirebilirsiniz. (vla-settext table (+ 2 cnt) 1 (rtos (/(vla-get-area vlpobj)10000.)2 2)) eğer alanın sonuna m2 ifadesi eklemek isterseniz alttaki kodu kullanabilirsiniz. (vla-settext table (+ 2 cnt) 1 (strcat (rtos (/(vla-get-area vlpobj)10000.)2 2) " m2"))
|
25.01.2023 07:25
baha07 |
merhabalar
lispi kullandigimda resimdeki gibi oluyor . tabloda alan ve mahal no olusmuyor neyi yanlis yapiyorum Kod: ;;; Poly-Pts (gile) ;;; Returns the vertices list of any type of polyline (WCS coordinates) ;;; ;;; Argument ;;; pl : a polyline (ename or vla-object) ;;;_gile ;;;http://forums.augi.com/showthread.php?83935-Creating-a-list-Polyline-vertices (defun Poly-Pts (pl / pa pt lst) (vl-load-com) (setq pa (if (vlax-curve-IsClosed pl) (vlax-curve-getEndParam pl) (+ (vlax-curve-getEndParam pl) 1) ) ) (while (setq pt (vlax-curve-getPointAtParam pl (setq pa (- pa 1)))) (setq lst (cons pt lst)) ) ) (defun c:RoomArea ( / AllSlctn pobj pobjArea pobjPoints RoomText RoomTextObj pnt loc cnt) (setq AllSlctn (ssget '((0 . "LWPOLYLINE")))) (if AllSlctn (progn (setq pnt (getpoint "\nPick the point for table: ")) (setq loc (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))) (setq table (vla-AddTable loc (vlax-3d-point pnt) 2 2 1 5)) (vla-settext table 0 0 "Area Table") (vla-settext table 1 0 "Room Label") (vla-settext table 1 1 "Area") (setq cnt 0) (repeat (sslength AllSlctn) (setq pobj (ssname AllSlctn cnt)) (setq vlpobj (vlax-ename->vla-object pobj)) (setq pobjArea (vla-get-area vlpobj)) (setq pobjPoints (Poly-Pts pobj)) (setq RoomTextObj (ssget "_WP" pobjPoints '((0 . "*TEXT")))) (if RoomTextObj (progn (setq RoomText (vlax-ename->vla-object(ssname RoomTextObj 0 ))) (vla-insertrows table (+ 2 cnt) 1 1) (vla-settext table (+ 2 cnt) 0 (vla-get-TextString RoomText)) (vla-settext table (+ 2 cnt) 1 (rtos (/(vla-get-area vlpobj)10000.)2 3)) );progn );if (setq cnt ( + cnt 1)) );repeat );progn );if );defun
|
25.01.2023 07:40
ehya |
baha 07
polyline içine bir mahal adını kendin yazmalısın..
|
25.01.2023 09:28
baha07 |
tesekkur ederim calisti ...... sonuclar 1011236.5821 alani > tabloda 101.124 veriyordu ,,,,,,
assidaki gibi degistirince duzeldi . Kod: (vla-settext table (+ 2 cnt) 1 (rtos (/(vla-get-area vlpobj)10000.)2 3)) Kod: (vla-settext table (+ 2 cnt) 1 (rtos (/(vla-get-area vlpobj)1.)2 3))
|
25.01.2023 17:29
fakir52 |
Teşekkür ederim Ehya hocam. Uzun süredir çalıştığım bir konuyu sayenizde çözmüş oldum. Bu tabloya bir de alan ilave edilebilirse kaplama metrajlarında vazgeçilmez bir lisp olacak.. Umarım bu konuya da bi el atabilirsiniz..
|
26.01.2023 05:51
baha07 |
Alıntı orjinal lispde tablo zaten alan yaziyor . senin alandan kastin . yanlis yazdin ve cevre uzunlugunu istiyorsan bu kodu dene (kod metrik ve ondalik 3 haneye ayarlanmistir . dinzim 0 otomatik ayarlar ) turkce yapmak istiyorsan kodun icinde bulunan assagidaki satirlardaki " ..." icindeki yazilarin yerlerini degistir (vla-settext table 0 0 "Area Table") ; "Alan Tablosu" (vla-settext table 1 0 "Room Label") ; "Mahal No" (vla-settext table 1 1 "Area") ; "Alan" (vla-settext table 1 2 "length") ; "uzunluk" Kod: ;;; alanlari,cevre uzunlugunu ve mahal isimlerini tabloya yazdirir (mahal ismi manuel onceden verilecek )
;;; Poly-Pts (gile) ;;; Returns the vertices list of any type of polyline (WCS coordinates) ;;; ;;; Argument ;;; pl : a polyline (ename or vla-object) ;;;_gile ;;;http://forums.augi.com/showthread.php?83935-Creating-a-list-Polyline-vertices (defun Poly-Pts (pl / pa pt lst) (setvar "dimzin" 0) (vl-load-com) (setq pa (if (vlax-curve-IsClosed pl) (vlax-curve-getEndParam pl) (+ (vlax-curve-getEndParam pl) 1) ) ) (while (setq pt (vlax-curve-getPointAtParam pl (setq pa (- pa 1)))) (setq lst (cons pt lst)) ) ) (defun c:RoomArea ( / AllSlctn pobj pobjArea pobjPoints RoomText RoomTextObj pnt loc cnt) (setq AllSlctn (ssget '((0 . "LWPOLYLINE")))) (if AllSlctn (progn (setq pnt (getpoint "\nPick the point for table: ")) (setq loc (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))) (setq table (vla-AddTable loc (vlax-3d-point pnt) 2 3 1 40)) (vla-settext table 0 0 "Area Table") ; "Alan Tablosu" (vla-settext table 1 0 "Room Label") ; "Mahal No" (vla-settext table 1 1 "Area") ; "Alan" (vla-settext table 1 2 "length") ; "uzunluk" (setq cnt 0) (repeat (sslength AllSlctn) (setq pobj (ssname AllSlctn cnt)) (setq vlpobj (vlax-ename->vla-object pobj)) (setq pobjArea (vla-get-area vlpobj)) (setq pobjPoints (Poly-Pts pobj)) (setq RoomTextObj (ssget "_WP" pobjPoints '((0 . "*TEXT")))) (if RoomTextObj (progn (setq RoomText (vlax-ename->vla-object(ssname RoomTextObj 0 ))) (vla-insertrows table (+ 2 cnt) 1 1) (vla-settext table (+ 2 cnt) 0 (vla-get-TextString RoomText)) (vla-settext table (+ 2 cnt) 1 (rtos (/(vla-get-area vlpobj)1.)2 3)) (vla-settext table (+ 2 cnt) 2 (rtos (/(vla-get-length vlpobj)1.)2 3)) );progn );if (setq cnt ( + cnt 1)) );repeat );progn );if );defun baha07 (26.01.2023 06:13 GMT) |
26.01.2023 07:57
fakir52 |
orjinal lispde tablo zaten alan yaziyor . senin alandan kastin . yanlis yazdin ve cevre uzunlugunu istiyorsan
bu kodu dene (kod metrik ve ondalik 3 haneye ayarlanmistir . dinzim 0 otomatik ayarlar ) haklısınız. baha07 benim istediğim Çevrenin tabloya eklenmesiydi. Tıpkı yaptığınız gibi. değerli katkılarınız için çok teşekkür ederim. lisp tam olarak istediğim formatta oldu. tablo sütun genişliği gereğinden fazla sadece. ama bu önemli bir konu değil. Harikasınız. Elinize emeğinize sağlık.
|
26.01.2023 08:53
baha07 |
genisligi istedigin gibi ayarlamak icin sondaki 40 yazan yeri degistirebilirsin .
Kod: (setq table (vla-AddTable loc (vlax-3d-point pnt) 2 3 1 40))
|
27.01.2023 08:27
fakir52 |
394954-room-area--ornek-cizim.dwg
roomarea lispi bazı çizimlerde çalışmıyor. tablo ya boş çıkıyor ya da çizimdeki 3-4 tane mahali alıyo sadece. Alumia'nın dikkat çekmeye çalıştığı konu bu olsa gerek. lispin çalışmadığı bir çizimi yükledim. Hata sebebini ve varsa çözüm önerilerinizi paylaşabilir misiniz?
|
27.01.2023 09:19
ehya |
fakir52
Polyline düğüm noktaları üstüste olursa hata verir. Çizimi OVERKILL ile temizlersen sorun ortadan kalkacaktır.
|
27.01.2023 11:50
baha07 |
Alıntı fakir52 1- evet ust uste noktalar var cizimde mesela KORİDOR NK-07 nolu mahalde 2 ayri noktada var 2- mahalden tasan textlerin var mesela NK-06 İŞLİK mahalden disari tastigi icin yine hata veriyor . text tam icinde olmasi lazim overkill yaparken , senin cizimine uygun olan (ust uste mahal cizildigi icin ) `do not break polylines ` secmeyi unutma ---- polyline cizimlerinde mahalleri kapanislarini c (closed) ile yap . isaretleyerek yapma . her cizimde hatayla karsilasabilirsin
|
ehya |
Yada bu kadar sorunla karşılaşmak istemiyorsanız bu konuda bütçe ayırarak sorunsuz bir program sahibi olabilirsiniz.
|