Copyright © 2004-2022 SQL: 1.428 saniye - Sorgu: 104 - Ortalama: 0.01373 saniye
27.11.2016 20:02
122105asd |
Merhaba , ilginiz için çok teşekkür ederim. Kapalı 100 adet pollyline var ve 100 adet pollyline için 100 adet attribute var
bu attributelerde kapalı alanın ismi ve başka özellikleri yazıyor . Ben bu attributeye kapalı pollylineların alan ve çevre özelliklerini eklemek istiyorum. Mevcutta var olana attributelerde yeni girdi için satır olmadıgı için yeni satır açıp değeleri yazması gerekebilir , yeni satır açamıyorsada sorun değil mevcut attributenin 5 satıra sahip diyelim son 2 satırına istediğim değerleri yazsa benim işimi görecektir. daha iyi anlatabilmek adına örnek bir lisp paylaşıyorum http://www.lee-mac.com/areafieldtoattribute.html bu adresteki lisp kapalı polyline seçiyoruz alan bilgisini alıyor seçtiğimiz attributedeki seçtiğimiz satıra ekliyor ben bu lispin çevre bilgisini eklemesinide istiyorum eğer yapabilirseniz çok ama çok işime yarayacak ilginize tekrar teşekkür ederim kolay gelsin
|
27.11.2016 20:05
122105asd |
biraz karışık anlattığımı farkettim toparlamak istiyorum
kapalı polyline nin alan ve çevre bilgisini herhangi bir attributeye yazdırmak istiyorum önce alan ve çevre bilgisini alacağım kapalı pollyline'a tıklayacagım sonrada yazılmasını istediğim attributenin yazılmasını istediğim satırına tıklayacağım ve yazacak. şu şekildede yazabilir 1000(alan)-150(çevre) şeklinde araya ''-'' atarsa ben excelden o sütunu ayırıp alan ve çevre bilgilerine ayrı ayrı ulaşabilirim saygılar.
|
29.11.2016 08:03
munurbabayigit |
Merhaba, forumda biraz gezdim bulamadım bana sırayla numara verebilen lisp lazım numaranın başında, RN= sabit kalacak şekilde seçtiğim text'lere numara verecek.
Örn : AAAA Textini seçtiğim zaman RN=001 BBBB ----> RN=002 şeklinde. RN sabit kalacak şekilde
|
29.11.2016 10:51
Travaci |
|
29.11.2016 11:59
grapher |
Herkese kolay gelsin. Sitenin içeriğini gerçekten çok beğendim. İçinde bulunduğum durumun aciliyetinden dolayı eğer daha önce böyle bir lisp mevcut ve ben görememişsem lütfen uyarın lakin ben bulamadım.
1 örnek üzerinden anlatırsam daha anlaşılır olur diye düşünüyorum. Örneğin benim elimde 1 polyline var ve kapalı şekilde. Bu polyline'ın hali hazırda özelliklerinde(PROP), alanını ve uzunluğunu görebiliyorum. Rica ettiğim lisp ise şu şekilde ; Komutu girdiğim anda bana seçtiğim polyline'ın içinde kalan alanın adını yazabileceğim bir seçenek sunacak. Örneğin ben oraya Kutu1 yazdım. Daha sonra bu polyline'ın çevre ve alan bilgilerini otomatik olarak alacak ve 3 ünü de alt alt'a yazacak. Yine örnek: Kutu1 3 m 4,2 m2 gibi. Tabii olarak lispi tekrar tekrar kullansamda yazdırma işlemini yaparken her birini ayrı 1 Attribute olarak kaydetmeli ve hepsini 1 Block altında toplamalı ki ben bunları Excel dosyasına çıkartabileyim. Umarım derdimi anlatabilmişimdir. Yardımcı olursanız çok sevinirim, herkese iyi çalışmalar. grapher (29.11.2016 12:41 GMT) |
29.11.2016 12:19
munurbabayigit |
Alıntı Teşekkür ederim. Tam aradığım program
|
30.11.2016 09:58
grapher |
Yukarıda bi istekte bulunmuştum. Aşırı ihtiyacım var. Bilen varsa bir yol göstersin lütfen.
|
30.11.2016 13:18
utkub1084 |
Herkese merhaba,
Ekteki LISP bir nesne (line, circle, arc, polyline, spline, vb.) üzerinde seçilen iki nokta arasındaki mesafeyi hesaplıyor. Hesaplanan mesafenin ikinci noktanın üzerine yazdırılmasını sağlayabilir miyiz? Yardımlarınız için şimdiden teşekkür ederim. 222704-distancebetweenpoints.rar
|
30.11.2016 14:18
Travaci |
Kod: utkub1084 Alert kısmının altına command satırını eklersin. (alert ..... (command "_.text" p2 "" "" (rtos (abs (- d1 d2))))
|
30.11.2016 14:33
utkub1084 |
|
30.11.2016 23:01
alumina |
Alıntı Secilen polyline nesnenin isim, cevre ve alan bilgileri gosterilen noktaya attribute olarak yazilir. Cizim birimi mm olarak kabul edilir. Kod: (defun c:plt (/ ss st pt dz dc ls ns tg) (vl-load-com)
(defun *error* (msg) (if (not (wcmatch (strcase msg t) "*cancel*,*exit*")) (princ (strcat "\nError: " msg))) (if ss (redraw (ssname ss 0) 4)) (setq *error* nil) ) (defun m1 (p1 p2 p3 /) (vla-addattribute (vla-get-modelspace dc) 10 acAttributeModeVerify "" p1 p2 p3) (setq ls (cons (vlax-ename->vla-object (entlast)) ls))) (if (setq ss (ssget ":s" '((0 . "lwpolyline") (70 . 1)))) (progn (redraw (ssname ss 0) 3) (if (setq st (getstring "\nPolyline name:")) (if (setq pt (getpoint "\nInsertion point:") dz (getvar 'dimzin)) (progn (vla-startundomark (setq dc (vla-get-activedocument (vlax-get-acad-object)))) (if (not (tblobjname "block" "pl-data")) (progn (m1 (vlax-3d-point pt) "AREA" "0.00 m²") (m1 (vlax-3d-point (polar pt (/ pi 2) 20)) "PERIMETER" "0.00 Mt") (m1 (vlax-3d-point (polar pt (/ pi 2) 40)) "NAME" "Name") (vla-CopyObjects dc (vlax-safearray-fill (vlax-make-safearray vlax-vbObject (cons 0 (1- (length ls)))) ls) (vla-add (vla-get-blocks dc) (vlax-3d-point pt) "pl-data")) (foreach m ls (vla-delete m)) ) ) (vla-InsertBlock (vla-get-modelspace dc) (vlax-3d-point pt) "pl-data" 1 1 1 0) (setvar 'dimzin 0) (foreach m (vlax-safearray->list (vlax-variant-value (vla-GetAttributes (vlax-ename->vla-object (entlast))))) (setq ns (vlax-ename->vla-object (ssname ss 0)) tg (vla-get-Tagstring m)) (vla-put-Textstring m (cond ((= tg "NAME") st) ((= tg "PERIMETER") (strcat (rtos (/ (vla-get-Length ns) 1000) 2 2) " Mt")) ((= tg "AREA") (strcat (rtos (/ (vla-get-Area ns) 1000000) 2 2) " m²"))) ) ) (vla-endundomark dc) (setvar 'dimzin dz) ) ) ) (redraw (ssname ss 0) 4) ) ) (setq *error* nil) (princ) )
|
01.12.2016 11:25
grapher |
Alıntı Öncelikle ilgilendiğiniz için çok çok teşekkür ederim. Cahilliğimi mazur görün bir kaç sorum olacaktı. Ben bunu bir text dosyasına kaydedip .lsp uzantılı bir dosyaya çevirdim. Lisp'i AutoCAD'e yükledim. PLT komutuyla çalıştırdım ve benden 1 obje seçmemi istiyor. Polyline'ı seçiyorum ve komut bitiyor. Kısacası kodu çalıştıramadım acaba bir şeyi yanlış mı yaptım? 2. si Çizim birimini değiştirmek istesem kodun hangi bölümünü değiştirmeliyim? CM cinsine çevirme şansımız var mı? Son olarak polyline'ın ismini biz mi giriyoruz? İlgilendiğiniz için tekrar tekrar teşekkür ediyorum. alumina (01.12.2016 12:17 GMT) |
01.12.2016 12:27
alumina |
plt komutunu calistirdiginizda nesne secmeniz istenecek. polyline i sectikten sonra enter tusuna basmayin ve komut satirina bakin, "Polyline name:" iletisini goreceksiniz. Buraya kutu1 diye tanimladiginiz yaziyi yazin ve enter tusuna basip tekrar kout satırına bakın, "Insertion point:" iletisini goreceksiniz, ekranda blogun insert edilecegi noktaya tiklayin. Bu kadar. Cizim birimi cm olarak duzenlendi.
Kod: (defun c:plt (/ ss st pt dz dc ls ns tg) (vl-load-com)
(defun *error* (msg) (if (not (wcmatch (strcase msg t) "*cancel*,*exit*")) (princ (strcat "\nError: " msg))) (if ss (redraw (ssname ss 0) 4)) (setq *error* nil) ) (defun m1 (p1 p2 p3 /) (vla-addattribute (vla-get-modelspace dc) 10 acAttributeModeVerify "" p1 p2 p3) (setq ls (cons (vlax-ename->vla-object (entlast)) ls))) (if (setq ss (ssget ":s" '((0 . "lwpolyline") (70 . 1)))) (progn (redraw (ssname ss 0) 3) (if (setq st (getstring "\nPolyline name:")) (if (setq pt (getpoint "\nInsertion point:") dz (getvar 'dimzin)) (progn (vla-startundomark (setq dc (vla-get-activedocument (vlax-get-acad-object)))) (if (not (tblobjname "block" "pl-data")) (progn (m1 (vlax-3d-point pt) "AREA" "0.00 m²") (m1 (vlax-3d-point (polar pt (/ pi 2) 20)) "PERIMETER" "0.00 Mt") (m1 (vlax-3d-point (polar pt (/ pi 2) 40)) "NAME" "Name") (vla-CopyObjects dc (vlax-safearray-fill (vlax-make-safearray vlax-vbObject (cons 0 (1- (length ls)))) ls) (vla-add (vla-get-blocks dc) (vlax-3d-point pt) "pl-data")) (foreach m ls (vla-delete m)) ) ) (vla-InsertBlock (vla-get-modelspace dc) (vlax-3d-point pt) "pl-data" 1 1 1 0) (setvar 'dimzin 0) (foreach m (vlax-safearray->list (vlax-variant-value (vla-GetAttributes (vlax-ename->vla-object (entlast))))) (setq ns (vlax-ename->vla-object (ssname ss 0)) tg (vla-get-Tagstring m)) (vla-put-Textstring m (cond ((= tg "NAME") st) ((= tg "PERIMETER") (strcat (rtos (/ (vla-get-Length ns) 100) 2 2) " Mt")) ((= tg "AREA") (strcat (rtos (/ (vla-get-Area ns) 10000) 2 2) " m²"))) ) ) (vla-endundomark dc) (setvar 'dimzin dz) ) ) ) (redraw (ssname ss 0) 4) ) ) (setq *error* nil) (princ) )
|
01.12.2016 12:47
grapher |
Cevabıma teşekkür ederek başlıyorum.
PLT komutunu girdiğim zaman objeyi seçtiğim anda komut bitmiş kabul ediyor. =( Enter tuşuna basmadığım halde aynı malesef. Komutu giriyorum polyline ı tıklıyorum ve komut listesinde hiçbir yazı gelmiyor. komut listesinin akışı şöyle ; Command: plt Select objects: Command: Acad 2017 kullanıyorum. Acaba onunla ilgili bi problem mi. Aklıma geldi diye söylüyorum acaba ben kodu siteden kopyalarken mi bi hata oluyor? hazır bir lsp dosyası üzerinden deneyebilme şansımız var mı? grapher (01.12.2016 13:00 GMT) |
01.12.2016 13:35
alumina |
Alıntı Autocad 2017 bazi lisp kodlarinda problem cikarabiliyor. Onceki surumlerde deneyin. asagidaki videoyu inceleyin. https://cizimokulu.com/datas/users/333661-pl-att.rar
|
01.12.2016 13:43
alumina |
simdi 2017'de de denedim, calisiyor !!!!
|
01.12.2016 20:55
grapher |
Bu üzerimdeki şanssızlık mı artık bilemiyorum ama kafayı yemek üzereyim. Sayın alumina ilginiz için çok teşekkür ederim videoyu izledim ama yok yok yok yok bi türlü olmuyor. Sizde polyline seçtikten sonra komut satırında yazan Polyline name bende çıkmıyor. Sizde çalışan lsp dosyasını direk yollayabilir misiniz? belki kopyalamada bi sıkıntı oluyor?
Evdeki AutoCAD 2016'da da denedim onda da olmadı kodun aktarımı sırasında bi problem yaşıyorum sanırım. Ya da işim acele olduğundan aksilik yakamı bırakmıyor. grapher (01.12.2016 21:10 GMT) |
02.12.2016 05:27
alumina |
Secmeye calistiginiz nesnenin kapali polyline olduguna emin misiniz? Propertiesten kontrol edin, kapali olmayabilir.
|
02.12.2016 05:56
given |
Iyi gunler,
Kopyalamak istedigim bir objeyi ornegin 2000 mesafe girdigimde surekli olarak 4000, 6000, 8000 diye katlayacak sekilde ben istedikce kopyalayacak bir lisp ariyorum. Not : 2000 i ornek olarak yazdim bu bazen 400000 veya 100000 da olabiliyor. Yardimci olabilir misiniz?
|
Travaci |
given Array
|