Diğerinde polilines bir seçimle bulun

  • Konuyu başlatan Konuyu başlatan x11start
  • Başlangıç tarihi Başlangıç tarihi

x11start

Guest
Çeşitli tablolarda baskı yapmak için alışkanlık olarak kullandığım bir lisp yarattım (bir4 ve a3), model uzayda düzenlenmiştir.
Temel olarak komut, baskı yapmayı planladığım masaları ve baskı koordinatları, panes (lwpoliline) kullanarak "zz_format" tabakaları bulur.

(setq selpol(sget; varlıkları seçin)
(list)
(cons.<and") "and="" "lwpolyline")="" "zz_formato"="" "zz_formato")="" (cons="" -4="" ...="" 0="" 8="" ;="" entita'="" lascia="" le="" passare="" piano="" polilinea="" poste="" solo="" sul="">" " ""
)
)

Sorun yanlış olduğunda ortaya çıkıyor, iki çakışan kareler var ya da biri başka bir yerde: e.g. the framework of the format that is located on the "zz_formato" katmanı, yerine başka bir tabakada göz ardı edilir.
Bu durumlarda tasarımım yanlışlıkla 2 kez basılı, doğru format alıyor ve diğer çerçeveyi biraz daha küçük alıyor.

Bu nedenle hatayı bulmak için bir yol bulmak istiyorum, bu da lispimi durdurmamı ve yanlış pane bildirmemi sağlar... güzel bir çemberle!

Kullandığım iş akışı aşağıdaki gibidir:

- Tüm seçilmiş polilines tarafından birini yönetiyorum ve "zz_formato" tabakasında buldum.
Her polilinen topları içeren bir liste yaratıyorum.
- Baricentro'yu içeren ikinci bir liste yaratıyorum (İlkinin 3. zirve ve 4. ile 2. noktası).
- Bir baricentres tarafından birini görüyorum ve bunun içeride olup olmadığını doğrulıyorum, sadece puanların listesi dikkate alınmaz
Ama aynı zamanda başka bir liste. Eğer öyleyse, bu noktanın içsel olduğu anlamına gelir, sadece merkezi olduğu figürü değil,
Ama aynı zamanda başka: Bu yüzden bir hata.

Bunun doğru akış olup olmadığını bilmiyorum veya daha hızlı çözümler varsa: sayfalar ve kod sayfaları yazmaktan kaçınmak istiyorum, çünkü
Daha sonra her şeyi yapabileceğiniz 4 vl-xx komutlarıyla keşfedin!</and")>
 
Ancak a4 ve a3 format her zaman aynı boyutta mı?

Polylinea’yı dışlayabilirsin,Farklı alan dai valori:
21x29.7xscala için
29.7x42xscala Tarafından a3.
 
Şirketde, düzeni kullanamıyoruz ( patron onları nasıl kullanacağınızı bilmiyor ... bu yüzden kullanmıyorsunuz!), bu nedenle tahtaların tüm çizimlerini model alanına koyduk.
Bunlar a3 veya a4'te basılacak formatlardır, ancak elementin temsil edilmesine bağlı olarak farklı boyutlara sahiptir: 30 m uzunluğunda bir viski veya bir viski ya da bir
1 m panel, farklı ölçeklerle yazdırılacaktır (3 veya a4), formatta ne kadar boyuta bağlı olarak.
Açıkçası, küçük bir sayfaya yazdırılan bir viskide neyin görünmez olacağını görünür hale getireceğiz.
Detaylar (geleri kullanamıyor!), onları bloklar yaparak alıyoruz ve onları tırmanıyoruz.
Çizimler sadece yukarıdaki sebepten dolayı ölçeklenmiyor.

Mükemmel çakılmış polilines bir overkill ile ortadan kalkacaktır, ancak daha sık 2 format vardır: bir kutuyu dikey A3'te yazdırın ve bir tampon panelinin zırhını ve 1'i sadece bir peçete yazdırmasına izin verir.
Bu son format bunu başka bir katmana koyduk... ama aynı tabakada bitirmek yanlış olur ... Bu nedenle, overkill ile a3 ile örtüşen kısımda ortadan kaldırmak istemiyoruz.

Şansım, her zaman okçular ve 4 puanla poliklinleri tedavi ettiğimizdir (model a3 to a4), bu yüzden bir haç ve Inters komutunu bulmak zor değildir.
Daha önce yazdığım gibi, çeşitli poliklinlerden biri tarafından geçeceğim, yerçekimi merkezini çıkartacağım ve bu ağırlık merkezini başka bir polilinen içinde de doğrulayacağım. .

Bunu yapabilirsem, bazı kodu aşağı çıkarmaya çalışıyorum.

Yine de dieva'ya teşekkür ederim: cevap vermek için her zaman naziksiniz!
 
Biraz zaman aldı, ama bu yazıda yetiştirilen sorunu çözmenin bir yolunu buldum: şimdi sizinle paylaşıyorum.

Panellerimiz var (bir "zz_formato" katmanında poliline var), bu da model uzayında birçok masayı temsil ediyor ve bu da baskı yapmayı planlıyoruz (bir lisp’in anlamına geliyor) birçok çarşafta şöyle dedi: “Ben, benim şirketimde demiyordum.”

Bazen 2 çakışma paneli çizildi ya da bir poliline yanlışlıkla "zz_formato" katmanına taşındı: sonuç bana birden çok baskıya izin veren lisp'in bana 2 kez aynı sayfayı ya da bir kısmını yazdırdığıydı.

Başlangıçta bir lisp’in, bir noktanın bir poliline iç veya dış olup olmadığını anlamama izin vereceğini düşündüm. Bu lisp'i her seçilmiş formata çevirerek, bu noktalardan biri yanlışlıkla başka bir poliline içinde bitseydi anladım.
Bu işe yaradı, ama çok uzun oldu: kontrol etmeliyim 10 format seçmek
(9+8+7+6+5+4+3+2)*4 = 176 puan!

O zaman bir fikir aldım: İlk polilinea alıyorum, puanları (4 formattan gelenler) alıyorum ve " poliline" ile yeni bir seçim yapıyorum.
Bu şekilde selnew alıyorum: eğer selnew’in 1 tane sadece elementi iyiyse, 2 (veya daha fazla) yanlış bir polilinea olduğu anlamına gelir. ve hatayı vurgulamak için bir daire koyar.

Eklenen gif görüntüsünde bir örnek koydum:
Kontrol etmek için birçok formatta temsil eden 6 kutu yaptım.
"verifsovrap" komutu başlatarak, onları seçmek istedim.
"verifsovrap" aynı zamanda leemac'ın bir dosyayı başlatıyor, bu kolayca bir katman oluşturmanıza izin veriyor: Hatayı vurgulayan çevreleri koymak için onu kullandım.

- kareler 1 - 2 - 4 doğru,
- 3'ün aynı katmanda kısmen biçimlenmiş olan başka bir poliline vardır.
- 5 ekstra poliline, tamamen kutunun içinde
- 6'da mükemmel bir şekilde çakıştı, ancak hala bir hatadır ve aynı zamanda rapor edilir.
Bir çemberle.

Bu lisp aynı zamanda başka bir lisp tarafından da başlatılabilir: başlat (xxx:formsovrap setdiselection) seçim sizi geçmek istediğiniz seçim seti.

Büyük ölçüde lisp "lender" içerecektir:

(If (null xx:formsovrap)
(setq errsov (xx:formsovrap sel)); panes (sel olarak kontrol edilmesi gereken seçim seti)
(Eğer errsov (vl-exit-With-error (alert "yerleşme panes\n(bak çevre bölgesi) 'korreggi ve yeniden başlatılacak')

Eğer errsov nil'den farklıysa, hataları bulduğu anlamına gelir: Bir mesaj gönderir.

Umarım yararlıydı.
 

Ekli dosyalar

  • VerifSovrap.LSP
    VerifSovrap.LSP
    2.9 KB · Görüntüleme: 1
  • VerifSovrap.gif
    VerifSovrap.gif
    111.1 KB · Görüntüleme: 2
Son düzenleme:
Burada koyduğum lisp bir limite sahiptir: analiz etmek için çerçeveler onlar arasında ayrılırsa çalışır. Box 1, aşağıdaki 2 tarafa ve 3'e dokunursa, doğrulama zamanında, panlerin 3 olduğunu kabul edilir, sonra hata.... daha fazla adım hattında olan çerçeveleri dışlamak için alınmalıdır.
 

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