CADsite

  • zo 02 10 2022, 21:47:43
  • Welkom, gast
Log in of registreer jezelf.

Login met gebruikersnaam, wachtwoord en sessielengte
Geavanceerd zoeken  

Nieuws:

Pagina's: [1]   Omlaag

Auteur Topic: Commando's via toolpallet (opgelost)  (gelezen 5807 keer)

Jacob

  • ervaren poster
  • ****
  • Offline Offline
  • Berichten: 64
    • Bekijk profiel
Commando's via toolpallet (opgelost)
« Gepost op: wo 22 06 2022, 15:57:42 »

Beste,

Of mijn vraag hier helemaal juist staat weet ik niet....

Wij tekenen hier met Autocad Architecture, hierop is een applicatie (HSB-cad) gebouwd die commando's heeft die niet van Autocad komen.
Er zijn diverse commando's die we via de "Command string" van een knop in de toolpallet starten/activeren.
Bijvoorbeeld:
^C^C_-PURGE;A;*;N;-PURGE;R;*;N;QSAVE (dit is wel van Autocad), dit purgen en opslaan gaat goed omdat alles achter elkaar afgewerkt kan worden, dus 2 commando's achter elkaar.

De volgende 2 regels zijn 2 commando's van de applicatie:
^c^c(DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" "")) palettecommand
^C^C_HSB_DB_ANALYSE
Bij deze commando's moet er een selectie gedaan worden van onderdelen waar vervolgens wat mee gebeurt.
Nu wil ik verschillende/meerdere commando's achter elkaar maken zoals in het Autocad voorbeeld.

Dat heb ik dus ook gedaan:
^c^c(DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" "")) palettecommand;^C^C_HSB_DB_ANALYSE
Maar nu stopt hij na het eerste commando niet om een selectie te kunnen maken en gaat gelijk door naar het tweede commando.

De vraag is nu; kan ik tussen de twee commando's iets (code) neerzetten zodat hij wel wacht tot het eerste commando is afgewerkt?
Bijvoorbeeld:
^c^c(DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" "")) palettecommand;pauze;^C^C_HSB_DB_ANALYSE

Vast bedankt voor alle tips.
« Laatst bewerkt op: wo 29 06 2022, 07:13:17 door Jacob »
Gelogd
Een expert is iemand die steeds meer weet over steeds minder.

bart

  • Forum medewerker
  • forumverslaafde
  • *****
  • Offline Offline
  • Berichten: 2137
    • Bekijk profiel
Re: Commando's via toolpallet
« Reactie #1 Gepost op: do 23 06 2022, 11:58:01 »

een selectie is te kort info.
voor een  oplossing moet je exact uitleggen wat je wilt selecteren.
je kunt via de commandline het e.e.a. doen maar echt handig werkt dat niet

het is een veel logischere/betere oplossing om het selecteren in de tool  HSB_DB_ANALYSE te verwerken


Gelogd
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Jacob

  • ervaren poster
  • ****
  • Offline Offline
  • Berichten: 64
    • Bekijk profiel
Re: Commando's via toolpallet
« Reactie #2 Gepost op: vr 24 06 2022, 06:52:21 »

Beste Bart,

Voor het eerste commando selecteren we een aantal "balken" bij die balken wordt naar het volume/eigenschappen gekeken. Als de doorsnede van die balk niet haaks is moet er een langsbewerking aan komen. Op het moment dat dat wordt geconstateerd wordt er bij de eigenschappen in het vakje "Informatie" een tekst toegevoegd.

Bij het tweede commando selecteren we ook een aantal balken, dat kan een andere selectie zijn dan de eerste keer. Dan word bij de geselecteerde balken gekeken naar de verschillende doorsneden. Elke doorsnede krijgt dan bij de eigenschappen een code.

Het probleem is dat de eerste selectie niet kan plaatsvinden omdat hij gelijk doorgaat naar het tweede commando.

Het gaat ook niet precies om wat het commando doet maar meer om een stop na elk commando en dat het tweede, derde of vierde commando pas verder gaat als de voorgaande klaar is.

Ik hoop dat ik het duidelijk genoeg heb uitgelegd.
Gelogd
Een expert is iemand die steeds meer weet over steeds minder.

gery

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 549
    • Bekijk profiel
Re: Commando's via toolpallet
« Reactie #3 Gepost op: ma 27 06 2022, 21:07:01 »

In LISP gebruik ik deze code direct na het commando waarop gewacht moet worden:(while (= (logand (getvar "CmdActive") 1) 1) (command pause))
« Laatst bewerkt op: ma 27 06 2022, 21:20:00 door gery »
Gelogd
AutoCAD 2020 - Windows 10

Jacob

  • ervaren poster
  • ****
  • Offline Offline
  • Berichten: 64
    • Bekijk profiel
Re: Commando's via toolpallet
« Reactie #4 Gepost op: di 28 06 2022, 07:38:09 »

Beste Gery,

Bedankt voor je reactie.
Jouw code heb ik er nu tussen gezet.
Dat is dan:

^c^c(DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" "")) palettecommand;(while (= (logand (getvar "CmdActive") 1) 1) (command pause));^C^C_HSB_DB_ANALYSE

Nu veranderd er wel wat, halverwege het eerste commando krijg ik de melding:
Command: (DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" "")) C:PALETTECOMMAND
Command: palettecommand
Select a set of beams: (while (= (logand (getvar "CmdActive") 1) 1) (command pause))
Can't reenter LISP.
*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Add/Remove/Multiple/Previous/Undo/AUto/SIngle

Dan kan ik nog wel de selectie doen van het eerste commando en die werkt hij ook goed af.
Nu slaat hij het tweede commando over.

Ook als ik alleen de code "(command pause)" ertussen zet gaat het op dezelfde wijze fout.
Gelogd
Een expert is iemand die steeds meer weet over steeds minder.

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1473
  • BricsCAD 18
    • Bekijk profiel
Re: Commando's via toolpallet
« Reactie #5 Gepost op: di 28 06 2022, 09:22:43 »

Probeer:
^c^c_Select;(DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" ""));palettecommand;_p;_HSB_DB_ANALYSE
Of:
^c^c(ssget);(DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" ""));palettecommand;_p;_HSB_DB_ANALYSE
Gelogd

Jacob

  • ervaren poster
  • ****
  • Offline Offline
  • Berichten: 64
    • Bekijk profiel
Re: Commando's via toolpallet
« Reactie #6 Gepost op: di 28 06 2022, 09:56:13 »

Bij de eerste code gaat hij alles wat in beeld is selecteren en geeft de volgende melding

Command: _Select
Select objects: (DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" ""))
C:PALETTECOMMAND
Select objects: palettecommand
*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Add/Remove/Multiple/Previous/Undo/AUto/SIngle/SUbobject/Object
Select objects: _p
6 found
Select objects: _HSB_DB_ANALYSE
*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Add/Remove/Multiple/Previous/Undo/AUto/SIngle/SUbobject/Object
Select objects: *Cancel*


Bij de 2e code geeft hij onderstaande weer, dan moet ik wel een selectie maken, maar de commando's worden niet gedaan.

Command: Loading AEC Design Center UI...
Loading AEC RoomBook Tool...
Command:
Command:
Command: (ssget)
Select objects: (DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" ""))
Can't reenter LISP.
*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Add/Remove/Multiple/Previous/Undo/AUto/SIngle
Select objects: Specify opposite corner: 6 found
Select objects:
<Selection set: 299>
Command:
Gelogd
Een expert is iemand die steeds meer weet over steeds minder.

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1473
  • BricsCAD 18
    • Bekijk profiel
Re: Commando's via toolpallet
« Reactie #7 Gepost op: di 28 06 2022, 11:51:48 »

Oops. Ik had eerst zelf moeten testen... Er ontbreek een "\" en een ";" in mijn voorstellen.

Dit werkt in BricsCAD (ik heb zelf geen AutoCAD licentie):
^c^c_select;\(c:seltest);_p;;(c:seltest);_p;;
Met deze Lisp code:
(defun c:seltest ( / ss)
  (setq ss (ssget))
  (print (sslength ss))
  (princ)
)

Passen we hetzelfde toe op jouw situatie dan zou dit het resultaat moeten zijn:
^c^c_select;\(DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" ""));palettecommand;_p;;_HSB_DB_ANALYSE
Gelogd

bart

  • Forum medewerker
  • forumverslaafde
  • *****
  • Offline Offline
  • Berichten: 2137
    • Bekijk profiel
Re: Commando's via toolpallet
« Reactie #8 Gepost op: di 28 06 2022, 11:59:07 »

met 1 \ kan je presies 1 element selecteren.
je kan er meerdere achter elkaar plaatsen maar het blijft behelpen als je niet vooraf weet of er 1 of 20 balken geselecteerd moeten worden.

het is m.i veel praktischer om de selectie binnen de lispen te laten maken
of beide lispen vanuit een derde aan te sturen waarmee je de selectie regelt als de lispen niet toegankelijk zijn.

Gelogd
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Jacob

  • ervaren poster
  • ****
  • Offline Offline
  • Berichten: 64
    • Bekijk profiel
Re: Commando's via toolpallet
« Reactie #9 Gepost op: wo 29 06 2022, 07:12:33 »

@Roy,
Die code is juist. de 2 commando's worden allebei correct afgewerkt.
Nu probeer ik dat zelf uit te breiden naar meer commando's
Bedankt   :D

@Bart,
Ik heb zelf ook aan een lisp gedacht, maar daar ben ik niet zo in thuis.
Wellicht kom ik daar alsnog op uit. Ook bedankt.
Gelogd
Een expert is iemand die steeds meer weet over steeds minder.

gery

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 549
    • Bekijk profiel
Re: Commando's via toolpallet
« Reactie #10 Gepost op: wo 29 06 2022, 10:38:50 »

Beste Gery,

Bedankt voor je reactie.
Jouw code heb ik er nu tussen gezet.
Dat is dan:

^c^c(DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" "")) palettecommand;(while (= (logand (getvar "CmdActive") 1) 1) (command pause));^C^C_HSB_DB_ANALYSE

Nu veranderd er wel wat, halverwege het eerste commando krijg ik de melding:
Command: (DEFUN c:palettecommand()(hsb_scriptinsert "WV_T-Langsbewerking" "")) C:PALETTECOMMAND
Command: palettecommand
Select a set of beams: (while (= (logand (getvar "CmdActive") 1) 1) (command pause))
Can't reenter LISP.
*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Add/Remove/Multiple/Previous/Undo/AUto/SIngle

Dan kan ik nog wel de selectie doen van het eerste commando en die werkt hij ook goed af.
Nu slaat hij het tweede commando over.

Ook als ik alleen de code "(command pause)" ertussen zet gaat het op dezelfde wijze fout.
Ik zij "in LISP" gebruik ik die code, niet in "macro".
Zet alle code in een LISP-routine, en laad de LISP-routine via de knop in de TP.
« Laatst bewerkt op: wo 29 06 2022, 11:12:28 door gery »
Gelogd
AutoCAD 2020 - Windows 10

gery

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 549
    • Bekijk profiel
Re: Commando's via toolpallet (opgelost)
« Reactie #11 Gepost op: wo 29 06 2022, 11:24:37 »

Zet deze code in een LISP-bestand, bijv. langsbewerking.lsp, en zet dit LISP-bestand in 1 van de search paths van je AutoCAD sessie.

(hsb_scriptinsert "WV_T-Langsbewerking" "")
  (while (= (logand (getvar "CmdActive") 1) 1) (command pause))
(command "_.HSB_DB_ANALYSE")

In de command string van de knop op de TP, zet je ^C^C(load "test.lsp").
Gelogd
AutoCAD 2020 - Windows 10

Jacob

  • ervaren poster
  • ****
  • Offline Offline
  • Berichten: 64
    • Bekijk profiel
Re: Commando's via toolpallet (opgelost)
« Reactie #12 Gepost op: wo 29 06 2022, 14:50:43 »

We zijn er uit met de code in de TP
Vooralsnog laten we het even zo.

Allen bedankt.
Gelogd
Een expert is iemand die steeds meer weet over steeds minder.
Pagina's: [1]   Omhoog