Copyright © 2004-2022 SQL: 1.266 saniye - Sorgu: 102 - Ortalama: 0.01241 saniye
29.02.2012 13:46
Travaci |
Abi desteğin için teşekkürler. Buarada lispte önceden nasıl yaptığımı bilemediğim bi özellik : )
ilk ve son donatıyı seçtiğimde çizim yapıyordu artık yapmıyor, çünkü herzaman ara donatılara line çizmiyoruz. Birde çizim kuralları hakkında yazdıkların doğru ama maalesef çalıştığın yerde bu böyle deil doğrusu bu artık böyle çalışalım diemiyoruz. Travaci (03.03.2012 13:23 GMT) |
14.03.2012 19:53
Travaci |
Merdiven çizimi için bi program yazdım fakat çizim yapacağım yere uzaktan baktığımda saçma sapan şeyler çiziyor yakından baktığım da ise gayet duzgun çalışıyor sorun nedir acaba ?
|
15.03.2012 07:15
ehya |
"Travacı"
osnap seçeneklerini kapatıp dene...
|
15.03.2012 07:55
Travaci |
Alıntı Oldu ama alakasını çözemedim.
|
15.03.2012 08:00
ehya |
Çizilecek yerlerin koordinatlarını hesapladığınızda bu noktalardan çizim yapmaya başlarken eğer o bölgede yada yakınında nesne var ise osnap seçeneklerinden dolayı otomatik nesnenin referans noktaları tutulur. Lisp ile bir çizim yapılacağı zaman osnap seçeneklerinin kapatılması gerekir.
|
25.03.2012 09:53
Travaci |
Ya abiler ben buna hala çözüm bulamadım bi el altın lütfen
Aşağıda progamdaki dimension style ların hepsi .dwg içinde mevcut fakat dwg içinde mesela sadece 1-100 İÇ_M style ı ile çizim yaptım diğerlerini kullanmadım kullanmadıklarım için Unknown command "OLA". Press F1 for help. Unknown command "P". Press F1 for help. Unknown command "LA". Press F1 for help. Unknown command "DIŞ ÖLÇÜ_MAVİ". Press F1 for help. Unknown command "OLA". Press F1 for help. Unknown command "OLA". Press F1 for help. Unknown command "P". Press F1 for help. Unknown command "LA". Press F1 for help. Unknown command "ETKİ ALANI_MAVİ". Press F1 for help. Unknown command "OLA". Press F1 for help. Unknown command "OLA". Press F1 for help. Unknown command "P". Press F1 for help. Unknown command "LA". Press F1 for help. Unknown command "OK_MAVİ". Press F1 for help. Unknown command "OLA". Press F1 for help. Hatalarını alıyorum ama kullandığım style ı layerına geçiriyor yani çalışıyor her style ı kullanıyım çizim içinde hata vermiyor, bu hatalardan nasıl kurtulabilirim. Kod: ;***** Ölçüleri ve Lader'ı İlgili Layer ına Geçiren Program *****; (defun c:Ola (/) (setvar "cmdecho" 0) (command "_.undo" "group") (command "change" (ssget "x" '( (-4 . "<OR") (3 . "1-100 İÇ_M") (3 . "1-100 DE 50 İÇ_M") (3 . "1-50 İÇ_M") (3 . "1-50 DE 25 İÇ_M") (3 . "1-25 İÇ_M") (-4 . "OR>") ) ) "" "p" "La" "İÇ ÖLÇÜ_MAVİ" "") (command "change" (ssget "x" '( (-4 . "<OR") (3 . "1-100 DIŞ_M") (3 . "1-100 DE 50 DIŞ_M") (3 . "1-50 DIŞ_M") (3 . "1-50 DE 25 DIŞ_M") (3 . "1-25 DIŞ_M") (-4 . "OR>") ) ) "" "p" "La" "DIŞ ÖLÇÜ_MAVİ" "") (command "change" (ssget "x" '( (-4 . "<OR") (3 . "1-100 OK_M") (3 . "1-50 OK_M") (3 . "1-25 OK_M") (-4 . "OR>") ) ) "" "p" "La" "ETKİ ALANI_MAVİ" "") (command "change" (ssget "x" '( (0 . "LEADER") ) ) "" "p" "La" "OK_MAVİ" "") (command "_.undo" "e") (princ) ) TEŞEKKÜRLER
|
26.03.2012 08:20
ProhibiT |
Her şeyden önce bazı konularda uyarmak zorundayım.
- Filters ile seçim yapıp Properties değiştirerek kolayca yapılabilecek bir iş için neden fonksiyon yazılır? - Böyle hiç bir mantık (Logic) işlemi olmayan fonksiyon olmaz! - Çizimlerinizde, AutoCAD Tables bölümünde yer alan (LayerName, LinetypeName, BLockName,..,.) Tables Object isimlerde Türkçe karakterler ve/veya boşluk karakteri kullanırsanız, eninde sonunda size problem olarak döneceğinden hiç şüpheniz olmasın. - AutoLisp fonksiyonlar içinde mecbur kalınmadıkça (command ... kullanılmaz. İllede kulanacağım derseniz, en iyimser ihtimalle AutoCAD sürüm farkından gene problem yaşarsınız. (command ... kullanacaksanız, neden Lisp yazıyorsunuz ki, DIESEL yazın gitsin. Ya da Macro Recorder ile asker gibi Macro kaydedin bitsin. Yukarıda listesini verdiğiniz hataların tümü, AutoCAD Command'in beklediği Parametre Listesine uymayan parametreler girilmesinden kaynaklanıyor. Yazmaya çalıştığınız fonksiyonu, Kod: (defun ChgLy (SseT LyR / PvT) şeklinde yazmak daha doğrudur. Hoş böyle bir fonksiyon yazmak başlı başına anlamsız da. Bu fonksiyon ActiveX kullanarak,(if SseT (setq n (sslength SseT)) (setq n 0)) (while (not (minusp (setq n (1- n)))) (setq PvT (entget (ssname SseT n)) PvT (subst (cons 8 LyR) (assoc 8 PvT) PvT) PvT (entmod PvT) PvT (entupd (cdr (assoc -1 PvT)))))) (defun c:OLa (/) (setvar "cmdecho" 0) (command "_.undo" "group") (ChgLy (ssget "x" (list '(-4 . "<OR") '(3 . "1-100 İÇ_M") '(3 . "1-100 DE 50 İÇ_M") '(3 . "1-50 İÇ_M") '(3 . "1-50 DE 25 İÇ_M") '(3 . "1-25 İÇ_M") '(-4 . "OR>"))) "İÇ ÖLÇÜ_MAVİ") (ChgLy (ssget "x" (list '(-4 . "<OR") '(3 . "1-100 DIŞ_M") '(3 . "1-100 DE 50 DIŞ_M") '(3 . "1-50 DIŞ_M") '(3 . "1-50 DE 25 DIŞ_M") '(3 . "1-25 DIŞ_M") '(-4 . "OR>"))) "DIŞ ÖLÇÜ_MAVİ") (ChgLy (ssget "x" (list '(-4 . "<OR") '(3 . "1-100 OK_M") '(3 . "1-50 OK_M") '(3 . "1-25 OK_M") '(-4 . "OR>"))) "ETKİ ALANI_MAVİ") (ChgLy (ssget "x" (list '(0 . "LEADER"))) "OK_MAVİ") (command "_.undo" "end") (prin1)) Kod: (defun ChgLy (SseT LyR /) daha sade yazmak mümkün...(if SseT (setq n (sslength SseT)) (setq n 0)) (while (not (minusp (setq n (1- n)))) (vlax-put-property (vlax-ename->vla-object (ssname SseT n)) 'Layer LyR))) (defun c:OLa (/) (setvar "cmdecho" 0) (command "_.undo" "group") (vl-load-com) (ChgLy (ssget "x" (list '(-4 . "<OR") '(3 . "1-100 İÇ_M") '(3 . "1-100 DE 50 İÇ_M") '(3 . "1-50 İÇ_M") '(3 . "1-50 DE 25 İÇ_M") '(3 . "1-25 İÇ_M") '(-4 . "OR>"))) "İÇ ÖLÇÜ_MAVİ") (ChgLy (ssget "x" (list '(-4 . "<OR") '(3 . "1-100 DIŞ_M") '(3 . "1-100 DE 50 DIŞ_M") '(3 . "1-50 DIŞ_M") '(3 . "1-50 DE 25 DIŞ_M") '(3 . "1-25 DIŞ_M") '(-4 . "OR>"))) "DIŞ ÖLÇÜ_MAVİ") (ChgLy (ssget "x" (list '(-4 . "<OR") '(3 . "1-100 OK_M") '(3 . "1-50 OK_M") '(3 . "1-25 OK_M") '(-4 . "OR>"))) "ETKİ ALANI_MAVİ") (ChgLy (ssget "x" (list '(0 . "LEADER"))) "OK_MAVİ") (command "_.undo" "end") (prin1)) Burada verdiğim fonksiyonları nev-i şahsına münhasır Layer düzeninizi kurarak test etmedim elbette. Amacım yukarıda yazdığım uyarıları örneklemek, mantığını açıklamakla sınırlıdır. Herkese kolay gelsin.
|
26.03.2012 13:20
exedesign |
Sorun çözüldü !
"Copy with base point" komutu gibi "cut base komutu" yapmak istiyorum. Copy with base point komutunun lisp'i yandaki gibi ^C^C_copybase mantık olarak önce copy with base point'in çalışması sonra seon seçimin silimesini istiyorum. kullanmam gereken komutlar şöyle; ^C^C_copybase | _erase _p komutları. bunu lisp olarak yazacak bir arkadaş varmı defalarca denedim bir türlü beceremedim işte uğraştığım kodlar. ^C^C(command "_copybase" bp ob "")(command "_erase" ob "") ^C^C(command "_copybase"),(command "_erase" ob "") ^C^C(command _erase p (^C^C_copybase "")) bilen arkadaşlar komik bulacaktır ama bu işte pek profesyonel sayılmam şimdiden teşekkür ederim. Birkaç saatlik çabadan sonra basitçe kodu üretebildim aşağıdaki lisp işe yarıyor ^C^C_copybase \\_e p;; exedesign (26.03.2012 14:15 GMT) |
01.04.2012 08:03
Travaci |
Hala bilmiyorum
(setq osmode_old (getvar "osmode" )) (setvar "osmode" 0) Dedipmizde programı çalıştırdıktan sonra escape dediğimizde "setq osmode_old" ayarlarına döndürebiliyormuyuz. Travaci (01.04.2012 08:10 GMT) |
01.04.2012 15:32
ProhibiT |
Bu tür durumlarda fonksiyon içinde error trap (hata kapanı diye tercüme etmenin alemi yok!) kurmalısınız.
Linkleri görebilmek için ÜYE olmalısınız. linkinde ve burada paylaştığım fonksiyonların hemen hepsinde bu error trap fonksiyonunu görebilirsiniz. Verdiğim örneklerde olduğu gibi *error* error trap fonksiyonunu ana fonksiyon içinde tanımlar ve ana fonksiyonun Parameter List'i içinde *error* symbol name'ini Local Variable olarak tanımlarsanız, başka fonksiyonların error trap fonksiyonlarıyla karışıp kargaşaya sebep olmaz. Kod: (defun c:ett2 (/ *error* oL dnt1 tanim dnt2 obje yc1 bn1 yc2 bn2 yc3 bn3)
(command "_.undo" "group") (setq oosm (getvar "osmode")) (setvar "osmode" 0) ;;; Undo group başlattık ve osmode değişkeninin eski değerini saklayıp sıfırladık. (defun *error* (msg) (princ msg) (command "_.undo" "e") (setvar "osmode" oosm)) ;;; Fonksiyonun anormal çıkışında undo group'u sonlandırdık ve ;;; osmode değişkenini eski değerine set etmek için error trap kurduk. (if (not (tblsearch "Layer" "Ok_Mavi")) (entmake (list '(0 . "Layer") '(2 . "Ok_Mavi") '(62 . 11) '(6 . "Continuous")))) . . . (command "_.undo" "e") (setvar "osmode" oosm) (prin1) ;;; Fonksiyonun normal çıkışında undo group'u sonlandırdık ve ;;; osmode değişkenine eski değerini set ettik )
|
01.04.2012 16:08
as1986 |
slm kolay gelsin
arkadaşlar ben bir lisp yazmaya çalışıyorum da yalnız ufak bir problemim war lispteki değişken sayısı başka bir değişken tarafından kontrol edilecek yani ilk değişken için değer istendiğinde eğer cevap 10 gelirse 10 adet değişken yaratıp mesela bunlar a1, a2, a3 .... a10 diye isimler verip sonra bunların her biri için değer girilmesini isteyecek nasıl bir döngü veya komut ile bunu sağlayabilirim
|
01.04.2012 18:20
Travaci |
Alıntı
|
03.04.2012 20:20
Travaci |
(setq dgr (getreal "\nBir değer giriniz: )
Dediğimizde birdahaki sefere bu değeri aklında tutması için gerekli kod nedir ? Bi kaç lispten buldum ama birşey anlamadım kopyalıyıp yapıştırmak istemiyorum Birde (defun c:komut (/) ---> Burdaki parantez kullanımını hala bılmıyorum slash ın sagına yazınca ne oluyor soluna yazınca ne oluyor yada yazınca ne oluyor yazmayınca ne oluyor ? Birşeyler ters gittiğinde burdaya koşuyorum kesin diorum sorun burada : ) deneme yanılma yöntemi sağına yaz soluna yaz boş bırak..... anlıcağınız rezillik : )
|
04.04.2012 03:27
ProhibiT |
öncelikle (defun c:komut (/) şeklinde düşünmek yanlış. Genel ifade;
(defun [c:]Symbol ([Argument List] [/] [Local Variables]) şeklindedir. Köşeli parantez içinde yazdıklarım seçimliktir, ihtiyaca göre yazılabilir ya da yazılmayabilirler. - ilk seçimlik bölüm yani c: kullanılırsa, tanımlanan fonksiyon AutoCAD komut satırından adıyla (Symbol) çağırılıp çalıştırılabilir. Yani sizin düşündüğünüz gibi fonksiyon komut haline gelir. c: kullanılmazsa, fonksiyon AutoCAD komut satırından yazılarak çalıştırılamaz. Başka fonksiyonlar içinden çağırılabilir. Ya da komut satırından (Symbol) şeklinde parantez içinde yazılarak çalıştırılabilir. - Argument List, adından da anlaşılacağı gibi fonksiyonun beklediği argümanlardır. - Local Variables bu değişkenlere yalnızca, tanımladıkları fonksiyon içinden ulaşılabilir, başka yerden (Visual Lisp Editor, AutoCAD komut satırı veya başka bir Fonksiyon) ulaşılamaz. Kod: (defun Test-1 (Argument-1 Argument-2 / Local-1 Local-2) (setq Local-1 (+ Local-3 Local-4) ;;; yazamazsınız Local-3 ve Loca-4 Test-2'nin Yerel Değişkeleri'dir burada tanımsızdırlar. (setq Local-2 (+ Argument-1 Argument-2) ;;; Test-2'nin Yerel değişkenleri Local-3 ve Local-4 Test-1'de böyle kullanılabilirler. ) (defun c:Test-1 (/ Local-3 Local-4) (Test-1 Local-1 Local-2) ;;; şeklinde Test-2'yi çağıramazsınız, bunlar Test-1'in yerel değişkenleridir ve burada tanımsızdırlar. (Test-1 Local-3 Local-4) ;;; yazarak Test-1'i çağırırken Local-3 ve Local-4 yerel değişkenlerini Argument-1 ve Argument-2 olarak göndermiş olursunuz. ) Buradan önemli bir sonuç çıkarmalısınız; c: kullanılan fonksiyon yani, AutoCAD komut satırından doğrudan çağırılacak komut tanımında /'dan önce Argument List kullanılamaz. Nedenini çözmeye çalışın. AutoCAD komut satırından nasıl Argüman göndereceksiniz? Burada paylaştığım pek çok fonksiyonda kullandığım bazı değerlerin hatırlanması için kullandığım yöntem; Kod: (defun Fnctn (/ Deger) (if (setq Deger (getreal (strcat "\n Değer giriniz <" (if EskiDeger (rtos EskiDeger)) ">:"))) (setq EskiDeger Deger) (setq Deger EskiDeger) ) ) Dikkat edilmesi gereken nokta, EskiDeger değişkeni Local Variable List'te yer almamalıdır. Aksi halde fonksiyondan çıkılınca tanımsız kalır, unutulur.
|
14.04.2012 21:16
Travaci |
.fas ile .vlx in birbirinden farkı nedir ?
Travaci (14.04.2012 21:46 GMT) |
16.04.2012 07:58
ProhibiT |
- AutoLisp veya VisualLisp kaynak kodları AutoCAD ortamında yüklendiklerinde, her satır ve komut anında makine diline çevrilerek uygulanırlar (interpretitive form). Bu tür dosyalar Ascii Text formatından olduklarından kullanıcı tüm içeriği görebilir ve değiştirebilir.
-.fas: AutoLisp veya Visualisp Source Code dosyalarının compile edilmiş (makine dili için derlenmiş) executable (çalıştırılabilir) şeklidir. Değişkenleri kullanışı ve -.dcl gibi harici dosyaları kullanışı Lisp Source Code (Lisp Kaynak Kod) dosyaları ile aynıdır. Kaynak kod'lardan daha hızlı yüklenir ve zaten makine diline çevrilmiş olduklarından daha hızlı çalışırlar. Bu formattaki dosyalar derlenmiş (compiled) olduklarından kullanıcı tarafından görülemez ve değiştirilemez. -.vLx: AutoLisp veya VisualLisp Source Code dosyalarının compile edilmiş halidir. -.fas dosyalarından farklı olarak, değişkenler farklı bir NameSpace'de tutulduklarından, birden fazla drawing dosyasında çalışma imkanı sağlarlar. Lisp Source Code yanında -.vba, -.dvb ve -.dcl gibi dosya türleri Lisp Kaynak Kod ile birlikte compile edildiklerinde tek bir dosya halinde içinde barındırırlar. -.vlx dosya formatı, -.fas formatının daha komplex ve gelişmiş halidir.
|
20.04.2012 20:16
Travaci |
Herkeze merabalar, buarada Mehmet Abi herzaman ki desteklerin için teşekkür ederim.
Bugünki sorum şu, yazıdığım lisplerde beş altı tane değer isteyen komutlar var, geçen değerleri hafızada tutması için istediğim kod pek yararlı olmuyor, her nekadar hafızada tutsada beş altı kere space e basmak zorunda kalıyorum. İstediğim şu bu soruları başka bir komuta bağlamak, oda o değerleri sanırım bir text dosyasına yazdırcak, lispte ordan okuyacak yada başka nasıl olursa. Böyle birşey nasıl yapılabilir ? Çokmu detaylı birşey sordum bilmiyorum, hali hazırda bir örnek varmı ? Onunda yardımı dokunabilir.Teşekkürler. Travaci (20.04.2012 21:53 GMT) |
20.04.2012 21:39
Travaci |
Kod: (defun c:calismalar (/) (setq n1 (getpoint "\nBirinci nokta.") n2 (getpoint n1 "\nİkinci nokta.") di (distance n1 n2) os (rtos di 2 0 )) (prompt os) ) Os nin yanına mesela mm yazıdrmak istiyorum nasıl yapabilirim ? Birde yukarıdaki haliyle yaptğımda verdiği ölçünün hemen yanında nil yazıyor "1453nil" gibi sebebi nedir ? Teşekkürler. Travaci (20.04.2012 21:52 GMT) |
21.04.2012 06:16
ehya |
Travaci
strcat komutu ile iki string olan değeri birleştirebilirsin. os değerin sayısal ancak tırnak içinde. yani bir string olduğuna göre (prompt (strcat os " mm")) şeklinde bir komut ile sorunu çözebilirsin. Sondaki nil uyarısı için ise en sondaki kapatma parantezinden önce (princ) ifadesini yazarsan nil uyarısı vermez. ehya (21.04.2012 06:53 GMT) |
Travaci |
Kod: (defun c:zzz (/) (setq n1 (getpoint "\nBirinci nokta.") n2 (getpoint n1 "\nİkinci nokta.") di (distance n1 n2) os (rtos di 2 0 )) (prompt (strcat "os" " mm")) ) Yanlış anlamadıysam bu şekil yaptım olmadı yine
|