Diskuzní fórum, poradna
CAD diskuze, rady, výměna zkušeností |
Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion 360, 3ds Max a s dalšími CAD aplikacemi.
Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy Arkance Systems (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
Skript pro výběr více bloků a jejich smazání |
Odpovědět | Stránka 12> archiv |
Autor | |
PepaR
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
CAD/BIM manager Přihlášen: 29.lis.2004 Lokalita: ČR (ZL) Používám: ruky a hlavu (občas ;) Stav: Offline Bodů: 6187 |
Téma: Skript pro výběr více bloků a jejich smazání Zasláno: 30.čvc.2007 v 15:13 |
Dobrý den,
potřebuji zapsat do skriptu sekvenci, která vybere blok A, blok B, blok C vymaže je a vyčistí výkres na bloky. Nejsem bohužel u AutoCADu a neznám nazpamět klíčová slova, pomůže někdo prosím?
Předem děkuji
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 31.čvc.2007 v 13:51 |
;;vyber vsech Bloku s nazvem AAA v hl. HL :
(setq QS1 (ssget "X" '((0 . "insert") (2 . "AAA") (8 . "HL")))) ;;vyber dvou Bloku - A, B :
(setq QS6 (ssget "X" '((0 . "INSERT") (-4 . "<OR")(2 . "A*")(2 . "B*")(-4 . "OR>") ) )) ;;vymaz Bloku A, B :
(command "_erase" QS6 "")
;;vycisteni Vykresu od Bloku A, B :
(command "_-purge" "_B" "" "_N")
|
|
-FerTh-
|
|
Vladimír Michl
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Dodáváme produkty Autodesk Stav: Offline Bodů: 21526 |
Zasláno: 31.čvc.2007 v 14:16 |
Lépe: |
|
PepaR
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
CAD/BIM manager Přihlášen: 29.lis.2004 Lokalita: ČR (ZL) Používám: ruky a hlavu (občas ;) Stav: Offline Bodů: 6187 |
Zasláno: 31.čvc.2007 v 14:19 |
Děkuji mnohokráte.
|
|
PepaR
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
CAD/BIM manager Přihlášen: 29.lis.2004 Lokalita: ČR (ZL) Používám: ruky a hlavu (občas ;) Stav: Offline Bodů: 6187 |
Zasláno: 01.srp.2007 v 07:20 |
Stále laboruji s tou výběrovou množinou, kdy mi to hlásí:
Příkaz: cisti_vn
; chyba: chybný typ argumentu: stringp <Selection set: 32> Pomůžete prosím?
[QUOTE=cisti_vn.lsp]
(defun c:cisti_vn ( / sezn_soub sez_togg sez_eb p_s CR I adr_es co_cistit KONEC
vychozi_adresar) ****************************
(setq vychozi_adresar "c:/" ) **************************** (defun scri_pt ( / Pis_demo I )
(setvar "FILEDIA" 0)
(setq p_atr (cdr (nth 0 sez_eb)))
(setq Pis_demo (open (strcat adr_es "cisti_vn.scr") "w")) (write-line (setq QS1 (ssget "_X" '((0 . "INSERT") (2 . "Podpis_*,Remes")))) Pis_demo) (write-line (strcat "_erase" QS1 "") Pis_demo) (write-line (strcat "_purge " co_cistit " * _n" ) Pis_demo) (write-line "_qsave" Pis_demo) (setq I 1)
(repeat (- (length sezn_soub) 1) (if (= (cdr (nth I sez_togg)) "1")
(progn (write-line (strcat "_open \"" adr_es (car (nth I sez_eb)) "\"") Pis_demo) (write-line (setq QS1 (ssget "_X" '((0 . "INSERT") (2 . "Podpis_*,Remes")))) Pis_demo) (write-line (strcat "_erase" QS1 "") Pis_demo) (write-line (strcat "_purge " co_cistit " * _n" ) Pis_demo) (write-line "_qsave" Pis_demo) (if (> (atoi(substr(getvar "ACADVER") 2 1)) 4) (write-line "_close" Pis_demo) ) ) ) (setq I (+ 1 I)) ) (write-line "_new " Pis_demo)
(write-line "FILEDIA 1 " Pis_demo) (write-line "" Pis_demo) (close Pis_demo)
(command "_script" (strcat adr_es "cisti_vn.scr"))
);defun
[\QUOTE]
|
|
Vladimír Michl
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Dodáváme produkty Autodesk Stav: Offline Bodů: 21526 |
Zasláno: 01.srp.2007 v 10:15 |
Aha, to je principiální (ale zajímavá) chyba - nemůžete do scriptu dávat výsledek výběru (výběrovou množinu) - ten výběr (ssget) musíte provést až ve scriptu, tedy až v daném výkresu. Výběrová množina z jednoho výkresu nemá v jiném výkresu smysl.
|
|
PepaR
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
CAD/BIM manager Přihlášen: 29.lis.2004 Lokalita: ČR (ZL) Používám: ruky a hlavu (občas ;) Stav: Offline Bodů: 6187 |
Zasláno: 26.srp.2007 v 09:15 |
Sakreš, nějak jsme si s tím neporadil. Jde o to, že v razítkách dávám bloky s podpisy, kdo který výkres vyhotovil (což je cca 20 bloků, které ovšem nejsou v každém výkrese). Jelikož výkresy pak potřebuji zazálohovat a zaslat dále bez podpisů, tak potřebuji aby se mi vytvořil skript, který vyběre ze zadaného seznamu názvů bloků podpisů ty které se ve výkrese nachází a pak výkres vyčistí i uloží.
Bohužel nejsem tak zdatný programátor abych to přidal do toho LISPu a na studování příručky momentálně taky není čas neboť termín odevzdání dokumentace neskutečně hoří ;) a práce je na ní habaděj.
Najde se prosím nějaká dobrá duše?
|
|
Vladimír Michl
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Dodáváme produkty Autodesk Stav: Offline Bodů: 21526 |
Zasláno: 26.srp.2007 v 13:21 |
Zásadní problém je v tom vytváření výběrové množiny - nemůžete do skriptu zapsat hodnotu proměnné, je potřeba tam dát onen LISP výraz (aby se vyhodnotil až při běhu scriptu). Tedy:
(write-line (setq QS1 ...
-->
(write-line "(setq QS1 ...
Když tak sem pošlete část obsahu výsledného SCR souboru - z něj se problém pozná nejsnadněji.
|
|
PepaR
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
CAD/BIM manager Přihlášen: 29.lis.2004 Lokalita: ČR (ZL) Používám: ruky a hlavu (občas ;) Stav: Offline Bodů: 6187 |
Zasláno: 26.srp.2007 v 15:56 |
Nu, pokoušel jsme se to implenetovat jako další položku (radiobutton) do následujího LISPu (přikládám výchozí soubor):
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 16.říj.2007 v 09:47 |
Ještě bych se zeptal: jak vyselektuji blok určitého jména (v daném případě je to jméno uchováno v proměnné NPF), abych s vybraným blokem mohl provést nějakou operaci? Pokud napíšu
(setq QS1 (ssget "X" '((0 . "insert") (2 . NPF))))
tak mi hlásí
; error: bad SSGET list value
Řekl bych, že by to mohlo být něco jako
(if (tblsearch "block" NPF)...
ale nevím jak dál.
|
|
-FerTh-
|
|
Seiner
CAD/BIM manager Přihlášen: 01.říj.2004 Lokalita: ČR (PA) Používám: Mechanical 2017, Inventor 2017 a starší Stav: Offline Bodů: 1662 |
Zasláno: 16.říj.2007 v 09:59 |
ten seznam se musí IMHO složit nějak jako
(ssget "X"(list(cons 0 "INSERT")(cons 2 NFP))))
|
|
Vítězslav Seiner
Chrudim |
|
Vladimír Michl
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Dodáváme produkty Autodesk Stav: Offline Bodů: 21526 |
Zasláno: 16.říj.2007 v 10:02 |
Ano, resp.:
(setq QS1 (ssget "_X" '((0 . "INSERT") (cons 2 NPF))))
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 16.říj.2007 v 10:54 |
Nojo, mohlo mne to napadnout. Díky.
|
|
-FerTh-
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 18.říj.2007 v 18:09 |
Podotýkám, že jsem se prvně přesvědčil, že ve výkresu opravdu existuje ten blok. Přesto:
Command: (setq QS1 (ssget "_X" '((0 . "INSERT") (cons 2 NPF))))
; error: bad SSGET list |
|
-FerTh-
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 18.říj.2007 v 18:14 |
Podotýkám, že jsem se prvně přesvědčil, že ve výkresu opravdu existuje ten blok. Přesto:
Command: (setq QS1 (ssget "X"(list(cons 0 "INSERT")(cons 2 NPF))))
nil Upravil Ferdinand - 18.říj.2007 v 18:15 |
|
-FerTh-
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 15.lis.2007 v 15:14 |
Nebudete tomu věřit, ale pořád s tím bojuji. Tak nějaký jiný nápad, prosím?
|
|
-FerTh-
|
|
Martin Bielina
Zasloužilý člen Přihlášen: 04.led.2007 Lokalita: ČR (Pha) Používám: AutoCAD True view 2016 Stav: Offline Bodů: 100 |
Zasláno: 15.lis.2007 v 15:53 |
(setq QS1 (ssget "_X" '((-4 . "<AND") (0 . "INSERT") (2 . "NPF") (-4 . "AND>"))))
|
|
Ferdinand
TOP uživatel Přihlášen: 01.říj.2004 Lokalita: ČR (JM) Používám: AutoCAD2004 (EN) na Windows XP Stav: Offline Bodů: 1904 |
Zasláno: 15.lis.2007 v 17:02 |
No to mne podržte - najednou je to OK!
Command: (setq NPF (cadr (fnsplitl (getvar "dwgname"))))
"POKUS8"
Command: (setq QS1 (ssget "X"(list(cons 0 "INSERT")(cons 2 NPF))))
<Selection set: 3>
To M.Bielina: To jsem zkoušel též, ale taky mi to nechtělo brát...
Command: (setq QS1 (ssget "_X" '((-4 . "<AND") (0 . "INSERT") (2 . "NPF") (-4 . "AND>")))) nil Upravil Ferdinand - 15.lis.2007 v 17:04 |
|
-FerTh-
|
|
Pro technickou podporu CAD
kontaktujte Helpdesk
Odpovědět | Stránka 12> archiv |
Přejít na fórum | Oprávnění fóra Nemůžete vytvářet nová témata v tomto fóru Nemůžete odpovídat na témata v tomto fóru Nemůžete vymazávat vaše příspěvky v tomto fóru Nemůžete upravovat vaše příspěvky v tomto fóru Nemůžete vytvářet ankety v tomto fóru Nemůžete hlasovat v anketách v tomto fóru |
Stránka byla vygenerována za 1,254 sekund.