Senaryo, lisp, makro ve eylemler: hangi farklılıklar?

ing.dir

Guest
Konu zaten ele alındıysa her şeye iyi olacak ama hem burada hem de net olarak aradım ve mesele hakkında net bir fikir yapamıyordum.
Kendimi aynı operasyonların bir dizi dosya üzerinde çalışırken buluyorum, bu yüzden her şeyi otomatikleştirmek ve optimize etmek için bir yol aradım. Şimdi, benim durumumda, borsadaki klasör dosyalarını açmak ve yaratılan makro çalıştırmak için stok kaydedici ve bir senaryoyu çözebileceğimi fark ettim.

Ancak genel olarak, çeşitli özellikler arasındaki farkı anlamadım. Yaptığım fikir:
- senaryolar en basit versiyondur, sıra sıralarında koşmak için bir komut listesidir
- lisp en karmaşık araçtır ve onları daha sanatsal işlemler yaratmanıza izin veren belirli bir bilgisayar dili aracılığıyla geçmenizi sağlamak.
- makrolar daha ayrıntılı senaryolara eşdeğer görünüyor, örneğin operasyonlarda mesajları eklemek için. Bir eylem dizisinden yapılır ve yönetim panelinde kaydedilen sesle veya yapıyı görsel temel temel olarak yazılabilir.

Şimdiye kadar yaptığım fikrini doğruluyor musunuz?
Ancak her şeyden önce, çeşitli araçları kullanırken beni anlamama yardımcı olur mu?
Teşekkür ederim.
 
lisp bir programlama dilidir (gerçekte tam adı otolisp olurdu, otocad için özel bir lisp çeşidi).
lisp daha karmaşık makrolar gerçekleştirmez, tasarım veritabanı ile etkileşime girer ve dwg'nin her bireysel nesnesinin özelliklerini elde edebilirsiniz.
Ve bu hesaplamalarla, seçimler, ekstralar vs.
Size çok kaba bir örnek veriyorum:
x dereceleri arasında iki eğimli çizginiz var ( videoya orada olduğunu bilmiyorsunuz).
Her birinin 1/5'ine tam olarak iki eğimi birleştiren 4 satır oluşturmak için görüntüler. Yasalar her çizginin başlangıcı ve sonu, onu 5 için bölmek, eğimli hatların her birinin 1/5'inde noktaları hesaplamak, her birinin ilk beşincisinde hattı oluşturmak, sonra ikinci, üçüncü o zaman.
Tabii ki 1/5 değişken olabilir, bu yüzden rutinin 5 parçaya bölünebileceğini sorabilirsiniz, 7 parçaya bölünmelidir.

Bu, lisp'in çalıştığı şeyin tüm özelliklerini elde ettiğini anlamanızı sağlamak için, bu yüzden bize sebep olabilirsiniz.
Makros ve senaryolarla bu size izin verilmez.
Bir senaryo aslında birden çok hat üzerinde bir dizi makro, dış bir dosyada kapalıdır.
Bir makro tek bir çizgide ve sadece bir ikondan çağırabilirsiniz.
scriptler ve makrolar kullanıcı ile çok az etkileşime girer ve tekrarlanan eylemler için kullanılabilir (p>a'dan nesneyi sıralayın ve sonra onları 0.0 ve renk değiştirir) .
Aksine genel kriteri kurmak ve bizi hesaplamalar yapmak (eğer nesne o zaman renk değiştirmek ve hareket ederse, ne kadarını merak edin; eğer parçalarda kırık bir çizgiyse ve her biri için bana soracaksınız).

Üzgünüm büyük post
 
Ben sadece bir metin editörü (tip blok notları) tarafından yazılabilir olan otolisp "base" olduğunu eklemek istiyorum. Autocad 14 (eğer erro!), yeni bir versiyon tanıtıldı, bu yeni versiyonla, görsellisp tanıtıldı; programlamaya büyük ölçüde yardımcı oluyor, adım adım adım adım programı çalıştırmanıza izin veriyor ... programlama hataları olduğunu görmek için. Aynı zamanda komutlar aynı şeyleri gerçekleştirmenize izin veriyor (ve daha fazla şey) ... önemli ölçüde daha yüksek bir hızda.
Dcl adlı bir dil de tanıtıldı, bu da seçmek için düğmeler ve seçeneklerle etkileşimli pencereler oluşturmanıza olanak sağlar.
Aktifxtan bahsetmeyin... Bu, hayal edilemez şeyler yapmanıza izin verir... ama kesinlikle karmaşık: sadece deneyimli programcılar için.
 
Son düzenleme:
... ve bunu nereye koyduğumuz dizel? Ayrıca bu dil var.:

(defun c:acadmode ( )
(setvar "modemacro"
(sing)
" " "" [imath](substr.[/imath](getvar,clayer),1.8)
" " ""[imath](eğer,[/imath](getvar,hoorthomode), orto)
" " ""[imath](eğer,[/imath](Snapmode, snap)
OSM:[imath](substr.[/imath](getvar,osmode),1,3)
" $ (getvar,dimstyle)"
" " ""[imath](eğer,[/imath](=,$(getvar,mode),0)
" " ""[imath](eğer,[/imath](=,$(getvar,cvport),1), p)
" " ""
)
)

)

Bu, ayarlayan dizel dilinin bir örneğidir (örneğin lisp), modmacro değişkeni.
Özellikle bu komut, daha düşük soldaki veya modda aktif osnap durumuna sahip olmanızı sağlar.

Birkaç versiyon daha önce yararlı olduğunu söylüyoruz ... otocad doslarda döndü ve kullanıcıya daha az bilgi vardı. ... ama sadece bir örnek yapmaktı.

Dizel dil ayrıca "data alanlarında" ifade edilen değerler için de yararlı olabilir:

Bir tasarımım a-nomeclient-23-800.dwg olarak adlandırılan bir veri alanı koyarsam:
[imath](substr.[/imath](Getvar, Dwgname)[imath](-,[/imath](strlen,$(getvar,dwgname)), 9,6)

“23-800” alıyorum, böylece dosya adının geri kalanını siliyorum ve masalarımın içine kolayca ekleyebilirim, müşteriyi değiştirirken güncellemenizi sağlayın.

ps.
Bu sadece tamlık içindi... belli değil karışıklık yaratmak için @ing.dir. !!!
 
Tüm cevaplarınız için teşekkürler, her şeyi sakin bir şekilde yeniden hazırlamalıyım ama şimdi durumun net bir resminim olduğunu söyleyebilirim.
Günler için kartografik veritabanı oluşturmaya karar verdim ve çeşitli dosyaların bloklarını patlamam gerekiyor. Kendimi çok fazla dosya için her zaman farklı operasyonlar yapıyorum ve bir mule gibi çalışmayı nasıl optimize edeceğini anlamak için bundan faydalanıyorum.
 
Harika, teşekkür ederim, Onu indirdim, kesinlikle gelecekte en azından temelleri öğrenmeye çalışmak istiyorum.
 
Gelecekte en azından temelleri öğrenmeye çalışmak istiyorum.
Öğrenmeye başlarsanız, onun gücü için ve açtığı beklentiler için sizi yakalayacaktır.

Size bir lisp yazmanın oldukça önemsiz olduğunu söyledim, açık bir dosyada başlatılan:
Dosya adını alın;
Bu dosyadaki tüm blokları arayın.
Biri onları patladı;
Orijinal blokları ortadan kaldırır;
Dosyayı, adın sonunda ek "-patlama" adını ekleyerek kurtarır.
:
 
Öğrenmeye başlarsanız, onun gücü için ve açtığı beklentiler için sizi yakalayacaktır.

Size bir lisp yazmanın oldukça önemsiz olduğunu söyledim, açık bir dosyada başlatılan:
Dosya adını alın;
Bu dosyadaki tüm blokları arayın.
Biri onları patladı;
Orijinal blokları ortadan kaldırır;
Dosyayı, adın sonunda ek "-patlama" adını ekleyerek kurtarır.
:
Tam olarak yapmaya çalıştığım şey ve birkaç gün süren bir savaştan sonra, bir lisp yazmanın başka bir yolu olmadığını anladım.
Bir senaryo ile benzer bir şey yapmayı başardım ama blokları patlayabilirim çünkü “önemli” komut satırında yazıp çalışır, ancak senaryo içinde değil, halüsinating. Tüm şey, ilk önce tüm blokları yeniden tanımlamak zorunda olduğum için karmaşıktır 0 (burst patlamak için daha fazla zaman alır ve xplode'yi neden bilmiyorum ama bazı blokların hepsini sıfırda göndermesi gerekir; ek olarak onlara katıldım.

Bana sadece başlangıç üssü olarak kullanabileceğim herhangi bir geçerli örnek olup olmadığını söyleyebilir misiniz?
 
Küçük bir güncelleme, konudan biraz öteye gidiyorsanız bile: Etrafımda bulunan bazı kodlar aslında doğru bir şekilde çalışır, onların basitliğinde şaşırtıcıdır.
Son zamanlarda python ile yeniden başlayan minimum programlama üslerim var, bu yüzden kendimi yönlendirebileceğim, ancak şimdilik sadece kodlar yaratarak hareket edebilirim.
Bununla birlikte, memnuniyet çok büyük, zaten indirdiğinizde, hayatınızı basitleştirmek için bir yol düşünün, ancak elinizi koyduğunuzda, muazzam potansiyelini fark edersiniz.
 
Değilse, autocad (gstarcad, progecad veya zwcad değil), aynı zamanda python kodları gerçekleştirebilir...
Ama işte bunu söylüyorum ve burada bunu inkar ediyorum...
Ancak, zaten bu dilin yetersizliği varsa, onu derinleştirmeye çalışın.
 
Kendimi bilgilendirmeye çalışacağım, ancak hala çok sınırlı bir bilgi, çoğunlukla etrafta yapılmış kodlara bakmak zorunda kalacağım, çünkü oldukça sık yazamam, ama en azından yaptığım şey hakkında bir fikrim var.
Geri kalanı için, burada bildirilen rehberden biraz okumaya değer olduğunu düşünüyorum, hatta etrafta olan senaryolarda yazılanları anlamak için bile.
 
Değilse, autocad (gstarcad, progecad veya zwcad değil), aynı zamanda python kodları gerçekleştirebilir...
Ama işte bunu söylüyorum ve burada bunu inkar ediyorum...
Ancak, zaten bu dilin yetersizliği varsa, onu derinleştirmeye çalışın.
Bunu düşünmüyorum. Ya da en azından yerli değil. Belki ek bir eklenti ile
 

Forum İstatistikleri

Konular
58,521
Mesajlar
499,056
Kullanıcılar
104,110
Son Üye
ChristianR

Çevrimiçi Üyeler

Şu anda çevrimiçi üye yok.
Geri
Üst