Zobrazit plnou verzi příspěvku: nulový výběr

Ferdinand
16.02.2007, 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?

pavelstyl
16.02.2007, 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

Ferdinand
19.02.2007, 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
    )
  )



pavelstyl
19.02.2007, 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
 
 

Ferdinand
20.02.2007, 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?... funguje to jenom pro jeden výběr(command "_-block" NPF "0,0" (if QVYBER4 (command QVYBER4 "")))
Ferdinand2007-02-20 11:48:17

pavelstyl
20.02.2007, 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