Copyright © 2004-2022 SQL: 1.752 saniye - Sorgu: 98 - Ortalama: 0.01788 saniye
23.12.2013 08:56
ProhibiT |
"böyle bir lispim var" demişsiniz. Değişken isimlerinden biçim özelliklerine kadar her şeyinden benim yazdığım bir kod olduğu anlaşılıyor.
Fonksiyon, seçilen bir veya daha çok Text nesnesinin sayısal içeriğinin toplamının Field olarak seçilen tek bir CARPAN attribute'üne atanması için yazılmış. Verdiğiniz örnekte, tek bir text seçip birden fazla Attribute'e field olarak atanması söz konusu. Tek bir Text nesnesi seçilip, birden çok Attribute nesnesiyle mi ilişkilendirilecek. İstenen bu mu? Yoksa birden çok Text nesnesi ve gene birden çok Attribute nesnesi mi söz konusu?
|
23.12.2013 09:10
Travaci |
ProhibiT Alıntı
|
23.12.2013 09:21
pulp fiction |
Alıntı böyle bir lispim var derken hocam bendeki lisplerin %90'ını saolasınız ya siz yaptınız ya da travaci arkadaşımız zaten :=) aman yanlış anlaşılma olmasın :=) Tek bir Text nesnesi seçilip, birden çok Attribute nesnesiyle ilişkilendirilecek.
|
23.12.2013 13:42
ProhibiT |
Kusuruma bakmayın bende Alzheimer belirtileri başladı galiba :)
Kod: (defun c:aTTas (/ Ats ID Ip L n p PvT)
(setvar "cmdecho" 0) (command "_.undo" "group") (vl-load-com) (while (not (setq Ip (ssget ":S" (list (cons 0 "*TEXT")))))) (redraw (setq Ip (ssname Ip 0)) 3) (setq ID (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object Ip))) ">%).TextString>%")) (princ "\nPoz'ları Seçiniz: ") (setq Ats (ssget (list (cons 0 "Insert") (cons 66 1))) n -1) (redraw Ip 4) (while (< (setq n (1+ n)) (sslength Ats)) (setq PvT (ssname Ats n)) (while (not (and (= (cdr (assoc 0 (entget (setq PvT (entnext PvT))))) "ATTRIB") (= (cdr (assoc 2 (entget PvT))) "CARPAN")))) (setq PvT (entget PvT) PvT (subst (cons 1 ID) (assoc 1 PvT) PvT) PvT (entmod PvT) PvT (entupd (cdr (assoc -1 PvT))) PvT (command "_.UpdateFieLd" PvT ""))) (command "_.undo" "e") (prin1))
|
23.12.2013 14:04
pulp fiction |
hocam çok teşekkür ederim saolasınız...
|
23.12.2013 15:10
Travaci |
ProhibiT Estağfurullah hocam, ben birşey sorayım ; Kod: (entupd (cdr (assoc -1 PvT))) Yukarıdaki satırı kullanmasamda ekran görüntüsünü güncelliyor, İstisnai durumlar mı var bunun için ?
|
24.12.2013 10:57
ProhibiT |
Eskiden kalma alışkanlıkla entupd işlevini her durumda kullanıyorum. Eski sürümlerde regenauto açık değilken entupd kullanmak gerekiyordu. Yeni sürümlerde böyle bir problem yok. İstisnai durumlar var elbette. Alt nesneleri (sub entities) olan Ana nesnelerde (complex entities), alt nesneler entmod ile işlenmişse, ana nesne entupd ile işleme alınmadan ekran görüntüsü (otomatik veya zorlanmış regenerate işlemine kadar) güncellenmez. Örneğin, bir Polyline nesnesinin alt nesnesi olan Vertex entmod ile işlenip değiştirildiğinde, ana nesne olan polyline entupd ile işleme alınıncaya (ya da regen işlemi gerçekleşinceye) kadar ekranda görüntü güncellenmez.
|
24.12.2013 12:34
kerem1453 |
ustalarımızdan bir ricam olcak çapını verdigim daire içindeki yazıları ve çapı verilen daireleri seçmek için bir lisp yazmak mümkümüdür.(bu istedigim lisp betonarme projelerde poz numaralarını tek seferde silmek için kullanabilcek bir lisp)
|
24.12.2013 14:51
ProhibiT |
Kod: ;|===========================================================================|
| CrSc: Circles Selection | | Belirlenen bir Circle nesnesi ile aynı Layer'da ve aynı Çapta Circle | | nesneleri ve bunların içindeki Text, Mtext ve Insert Nesneleri seçilir. | | M. Şahin Güvercin - www.cizimokulu.com 24.12.2013 | |---------------------------------------------------------------------------|; (defun c:CrSc (/ Cmb m n nk1 nk2 prS PvT Pzn) (princ "\nÖrnek Çember Seçiniz: ") (while (not (setq Cmb (ssget ":S" (list (cons 0 "Circle")))))) (if Cmb (progn (setq Cmb (ssname Cmb 0)) (redraw Cmb 3))(exit)) (princ "\rÇember ve Poz Numaraları seçiniz: \r") (setq Cmb (entget Cmb) n -1 Pzn (ssadd) Cmb (ssget (list '(0 . "Circle") (assoc 8 Cmb) (assoc 40 Cmb)))) (while (< (setq n (1+ n)) (sslength Cmb)) (setq PvT (entget (ssname Cmb n)) nk1 (polar (cdr (assoc 10 PvT)) (* 1.25 pi) (cdr (assoc 40 PvT))) nK2 (polar nK1 (* 0.25 pi) (* (cdr (assoc 40 PvT)) 2.0)) prS (ssget "f" (list nk1 nk2) (list (cons 0 "*Text,Insert"))) m -1) (while (< (setq m (1+ m)) (sslength prS)) (ssadd (ssname prS m) Pzn))) (setq n -1)(while(<(setq n (1+ n))(sslength Pzn))(ssadd(ssname Pzn n) Cmb)) (sssetfirst nil Cmb) (prin1))
|
24.12.2013 15:17
kerem1453 |
şahin hocam çok tşk ederim zahmet edip ilgilendiginiz için.yalnız lisp bazen çalışıyo bazende şu şekilde bir hata veriyo
; error: bad argument type: lselsetp nil bunun nedeni ne olabilir ? düzeltme şansınız olurmu ?
|
24.12.2013 15:38
ProhibiT |
Bahsedilen hatanın nedenini bilmiyorum. Belirlenen bölgede, örnek çemberin kriterlerine uygun Circle nesnesi bulunamamasından, yani seçim setinin boş olmasından kaynaklanıyor olabilir. ikinci sebep te, çember içinde nesne bulunamadığında prS seçim seti tanımsız kalacağından hata oluşabilir. Bu tür hata kontrollerine gerek görmemiştim açıkçası.
Bahsedilen ve öngörülmeyen durumların kontrol mekanizması eklenmiş hali; Kod: ;|===========================================================================|
| CrSc: Circles Selection | | Belirlenen bir Circle nesnesi ile aynı Layer'da ve aynı Çapta Circle | | nesneleri ve bunların içindeki Text, Mtext ve Insert Nesneleri seçilir. | | M. Şahin Güvercin - www.cizimokulu.com 25.12.2013 | |---------------------------------------------------------------------------|; (defun c:CrSc (/ Cmb m n nk1 nk2 prS PvT Pzn) (princ "\nÖrnek Çember Seçiniz: ") (while (not (setq Cmb (ssget ":S" (list (cons 0 "Circle")))))) (if Cmb (progn (setq Cmb (ssname Cmb 0)) (redraw Cmb 3)) (exit)) (princ "\rÇember ve Poz Numaraları seçiniz: \r") (setq Cmb (entget Cmb) n -1 Pzn (ssadd) Cmb (ssget (list '(0 . "Circle") (assoc 8 Cmb) (assoc 40 Cmb)))) (if (or (not Cmb) (/= (type Cmb) 'Pickset)) (exit)) (while (< (setq n (1+ n)) (sslength Cmb)) (setq PvT (entget (ssname Cmb n)) nk1 (polar (cdr (assoc 10 PvT)) (* 1.25 pi) (cdr (assoc 40 PvT))) nK2 (polar nK1 (* 0.25 pi) (* (cdr (assoc 40 PvT)) 2.0)) prS (ssget "f" (list nk1 nk2) (list (cons 0 "*Text,Insert"))) m -1) (if Prs (while (< (setq m (1+ m)) (sslength prS)) (ssadd (ssname prS m) Pzn)))) (setq n -1) (while (< (setq n (1+ n)) (sslength Pzn)) (ssadd (ssname Pzn n) Cmb)) (sssetfirst nil Cmb) (prin1)) ProhibiT (25.12.2013 13:29 GMT) |
25.12.2013 15:48
kerem1453 |
23∅8/20 bu tip donatı yazısının ∅ işratinden önceki kısmı(donatı adet kısmı) cizimden toplu bir şekilde silen bir lisp yazmak mümkünmü bunu bir sefer değilde mouse ile seçtigimiz alanda kalan komple yazılara uygulayabilen.şahin hocam crsc lispinde yaptıgınız değişiklik ve emeginiz içinde çok tşk ederim.
|
25.12.2013 22:07
Travaci |
kerem1453 Kod: (defun c:Adel (/ obj dat txt n) (vl-load-com) (if (setq obj (ssget (list (cons 0 "*text")))) (progn (setq n 0) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (repeat (sslength obj) (setq dat (vlax-ename->vla-object (ssname obj n)) txt (vla-get-TextString dat) n (1+ n)) (if (vl-string-search "Ø" txt) (vla-put-TextString dat (substr txt (1+ (vl-string-position (ascii "Ø") txt)))))) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) ) ) (princ) ) Ø işaretinin yazılımı kullandığın font a göre değişiklik gösteriyor %%c, %%d, Ø, ƒ gibi... Yukarıdaki kodda Ø gördüğün yerleri sen hangisini kullanıyorsan onunla değiştir. Bir benzeride burada Travaci (14.01.2015 21:23 GMT) |
26.12.2013 14:26
kerem1453 |
tşk ederim travacı eline saglık...
|
27.12.2013 10:50
CAN123 |
Arkadaşlar merhaba,
Seçeceğimiz dairelerin X,Y koordinatlarını ve çaplarını aşağıdaki formatta text dosyasına yazdıracak bir lispe ihtiyacım var. Satırın başında "H" olması da gerekiyor. H 3305.4 -40.2 17.5 Buradaki 3305.4 X koordinatı, -40.2 Y koordinatı ve 17.5 ise dairenin çapı. şimdiden teşekkürler
|
27.12.2013 12:23
Travaci |
CAN123 Kod: (defun c:Cdata (/ *error* lpr dmz obj dat txt n)
(setq lpr (getvar "luprec") dmz (getvar "dimzin")) (defun *error* (msg) (setvar "luprec" lpr) (setvar "dimzin" dmz) (close txt) (princ msg)) (setq obj (ssget (list (cons 0 "circle"))) n 0) (if obj (progn (setq txt (open (getfiled "" "" "txt" 9) "w")) (setvar "luprec" 1) (setvar "dimzin" 0) (repeat (sslength obj) (setq dat (entget (ssname obj n)) n (1+ n)) (write-line (strcat "H " (rtos (cadr (assoc 10 dat)) 2) " " (rtos (caddr (assoc 10 dat)) 2) " " (rtos (* 2 (cdr (assoc 40 dat))) 2)) txt)) (close txt) (setvar "luprec" lpr) (setvar "dimzin" dmz))) (princ) ) (terpri) (write-line "Hazırlayan: Erkan Travaci") Travaci (29.12.2013 00:44 GMT) |
27.12.2013 12:24
CAN123 |
Travacı arkadaşım çok teşekkürler iyi varsınız.
Küçük bi sorunum var. 0,0 başlangıç noktasını nasıl değiştirebilirim. ucs'den değiştirdim ama olmadı yada ben yapamadım. Programın başında başlangıç noktasını belirleyip daha sonra X ve Y yönünü seçtirmek mümkün mü? teşekkurler
|
27.12.2013 12:58
Travaci |
Ucs ni taşısanda yine 0,0 a göre vericek, oyüzden objelerini 0 koordinatına göre taşı. Herzaman dwg formatında çalışmama olasılığı için kodu tekrar düzenledim.
|
27.12.2013 15:35
CAN123 |
Travacı arkadaşım teşekkürler. Bu işlemi çokça yapacağımdan Ucs'yi taşıyabilseydik çok iyi olacaktı.
eline sağlık
|
Travaci |
Alıntı Travaci (14.01.2015 21:18 GMT) |