Vytisknout stránku | Zavřít okno

nulový výběr

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=4007
Datum vytištění: 13.kvě.2026 v 09:15


Téma: nulový výběr
Odeslal: Ferdinand
Předmět: nulový výběr
Datum odeslání: 16.úno.2007 v 14:14
Potřebuji vyloučit nulový výběr, tj.
...
(setq QVYBER6 (ssget "X" (list (cons 8 "OEZ_*VYK"))))
(setq QVYBER3 (ssget "X" (list (cons 8 "OEZ_*OSY"))))
(setq QVYBER4 (ssget "X" (list (cons 8 "OEZ_*NEH"))))
(command "_-block" NPF "0,0" QVYBER6 QVYBER3 QVYBER4 "")
...

pokud ve výkresu není jeden z hl. OEZ_*VYK anebo OEZ_*OSY anebo OEZ_*NEH, tak se blok nevytvoří. Jak neex. hl. vyloučit?

-------------
-FerTh-



Odpovědi:
Odeslal: pavelstyl
Datum odeslání: 16.úno.2007 v 14:39
Nešlo by toto ?
 
(command "_-block" NPF "0,0")
(if QVYBER6 (command QVYBER6))
(if QVYBER3 (command QVYBER3))
(if QVYBER4 (command QVYBER4))
(command "")
 
Pavel Štyl


Odeslal: Ferdinand
Datum odeslání: 19.úno.2007 v 09:44
Takovou formulaci jsem ještě neviděl... To může fungovat? Pokud teda tomu dobře rozumím: pokud existuje výběr QVYBERx tak proveď příkaz "_-block".
To platí pro všechny kombinace? Tj.
a./ QVYBER6 existuje + QVYBER3 existuje + QVYBER4 existuje
b./ QVYBER6 existuje + QVYBER3 existuje + QVYBER4 neexistuje
c./ QVYBER6 existuje + QVYBER3 neexistuje + QVYBER4 existuje
d./ QVYBER6 neexistuje + QVYBER3 existuje + QVYBER4 existuje
e./ QVYBER6 existuje + QVYBER3 neexistuje + QVYBER4 neexistuje
f./ QVYBER6 neexistuje + QVYBER3 neexistuje + QVYBER4 existuje
g./ QVYBER6 neexistuje + QVYBER3 neexistuje + QVYBER4 neexistuje

To bych ještě podmínil výběr existencí hladiny daného názvu:

  (if (tblobjname "layer" "OEZ_*VYK")
    (progn
      (setq QVYBER6 (ssget "X" (list (cons 8 "OEZ_*VYK"))))
      (command "_chprop" QVYBER6 "" "_C" "_Byblock" "_LA" 0 "")
      (command "_-block" NPF "0,0")
      (if QVYBER6 (command QVYBER6))
      (if QVYBER3 (command QVYBER3))
      (if QVYBER4 (command QVYBER4))
      (command "")
      (command "_-wblock" NPF NPF) ;potrebuju vytvoreny blok ulozit do samost.vykresu

    )
  )




-------------
-FerTh-


Odeslal: pavelstyl
Datum odeslání: 19.úno.2007 v 15:33
Funguje to takto:
 - spustím příkaz _block, zadám jméno a vkládácí bod
 - autocad teď očekává výběr objektů
   - když existuje výběr QVYBER6, tak mu ho dám
   - když existuje výběr QVYBER3, tak mu ho dám
   - ...
 - nakonec dám ENTER (""), který ukončí příkaz _block
 
Asi by bylo potřeba ještě minimálně ošetřit, aby byl alespoň jeden výběr (QVYBER6 nebo QVYBER3 atd.) byl platný. Jinak to pochopitelně nic neprovede.
 
Pavel Štyl
 
 


Odeslal: Ferdinand
Datum odeslání: 20.úno.2007 v 11:15
Děkuji za vysvětlení. Když to napíšu do těla příkazu:
(command "_-block" NPF "0,0" (if QVYBER6 (command QVYBER6 "")) (if QVYBER3 (command QVYBER3 "")) (if QVYBER4 (command QVYBER4 "")))
tak to bude taky fungovat?
...Cool funguje to jenom pro jeden výběr
(command "_-block" NPF "0,0" (if QVYBER4 (command QVYBER4 "")))


-------------
-FerTh-


Odeslal: pavelstyl
Datum odeslání: 20.úno.2007 v 12:23
Ta první varianta určitě nemůže fungovat. Už třeba jenom proto, že ty dvoje úvozovky končí příkaz block ... a co když bude více výběrů platných ?
 
Ale taky asi nebude moc košér to if uvnitř command ...
 
Pavel Štyl



Vytisknout stránku | Zavřít okno