CADsite

  • zo 18 11 2018, 22:29:23
  • Welkom, gast
Log in of registreer jezelf.

Login met gebruikersnaam, wachtwoord en sessielengte
Geavanceerd zoeken  

Nieuws:

Pagina's: [1]   Omlaag

Auteur Topic: vla-activate  (gelezen 320 keer)

gery

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 427
    • Bekijk profiel
vla-activate
« Gepost op: di 23 10 2018, 13:47:35 »

Code
(vla-activate (vla-item (vla-get-documents (vlax-get-acad-object)) "262842.dwg"))om vanuit een geopende tekening een andere geopende tekening te activeren, werkt op de commando-regel maar niet in een script.
Iemand een idee wat er mis kan zijn?
Gelogd
AutoCAD 2012 - Windows 7

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1425
  • BricsCAD 18
    • Bekijk profiel
    • www.b-k-g.nl
Re: vla-activate
« Reactie #1 Gepost op: wo 24 10 2018, 11:46:04 »

Op het eerste gezicht lijkt het vreemd om deze code in een SCR-bestand te gebruiken. Kun je de inhoud van dat bestand geven?
Gelogd

gery

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 427
    • Bekijk profiel
Re: vla-activate
« Reactie #2 Gepost op: wo 24 10 2018, 14:03:23 »

Ik ben bezig met het schrijven van een LISP routine die een script maakt die op zijn beurt één voor één de geopende tekeningen activeert en daarin een LISP routine draait, en daarbij de tekeningen geopend laat. Met de vermelde code dacht ik het één voor één activeren van de geopende tekeningen te realiseren, maar in een script blijkt dit niet te werken, wel als ik de code rechtstreeks op de commandoregel kopieer.
Een gegenereerde script kan er bijv. als volgt uitzien:
(vla-activate (vla-item (vla-get-documents (vlax-get-acad-object)) "262841.dwg"))
(load "lisp.lsp")
_.QSAVE
(vla-activate (vla-item (vla-get-documents (vlax-get-acad-object)) "262842.dwg"))
(load "lisp.lsp")
_.QSAVE
(vla-activate (vla-item (vla-get-documents (vlax-get-acad-object)) "262843.dwg"))
(load "lisp.lsp")
_.QSAVE
Gelogd
AutoCAD 2012 - Windows 7

EddyBeerke

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 2306
  • 1d CADSITE.be niet bezoeken = 1 dag niet geleefd!
    • Bekijk profiel
    • Mijn site
Re: vla-activate
« Reactie #3 Gepost op: wo 24 10 2018, 16:55:00 »

Gelogd

gery

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 427
    • Bekijk profiel
Re: vla-activate
« Reactie #4 Gepost op: wo 24 10 2018, 18:05:35 »

Bedankt voor de tips Eddy maar het is niet wat ik zoek.
Gelogd
AutoCAD 2012 - Windows 7

EddyBeerke

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 2306
  • 1d CADSITE.be niet bezoeken = 1 dag niet geleefd!
    • Bekijk profiel
    • Mijn site
Re: vla-activate
« Reactie #5 Gepost op: do 25 10 2018, 09:22:20 »

Ik ben bezig met het schrijven van een LISP routine die een script maakt die op zijn beurt één voor één de geopende tekeningen activeert en daarin een LISP routine draait,...
Dit is wat BaBe doet!
Je kiest dan ook voor een lisp die uitgevoerd moet worden.
De tekeningen saven kan ook.
De tekening afsluiten moet je dan zelf uit het script halen... al begrijp ik nog echt waarom je ze dan nog geopend wil laten. -> find and replace gebruiken.
en daarbij de tekeningen geopend laat.
Gelogd

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1425
  • BricsCAD 18
    • Bekijk profiel
    • www.b-k-g.nl
Re: vla-activate
« Reactie #6 Gepost op: do 25 10 2018, 09:43:31 »

In BricsCAD werkt de voorgestelde code wel. Maar soms zijn in BC dingen mogelijk die in AutoCAD niet werken.

Wellicht kun je de bewerking helemaal uitvoeren zonder script met Visual Lisp functies. Dan hoef je vla-activate niet eens te gebruiken.

Andere suggesties:
1.
Gebruik in het script het commando _Open om de al geopende tekeningen te activeren (werkt niet in BC i.v.m. alert-dialoog die niet te onderdrukken lijkt).
2.
Laat het script de tekeningen één voor één sluiten (waarschijnlijk ongewenst).
3.
Heel misschien werkt zoiets:
(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "(vla-activate (vla-item (vla-get-documents (vlax-get-acad-object)) \"262841.dwg\")) ")
« Laatst bewerkt op: do 25 10 2018, 09:51:41 door roy_043 »
Gelogd

gery

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 427
    • Bekijk profiel
Re: vla-activate
« Reactie #7 Gepost op: do 25 10 2018, 14:13:53 »

Om één of andere reden werkt het activeren nu wel, maar het laden van de LISP in de geactiveerde tekening lukt niet. Die LISP wordt wel geladen in de brontekening nadat ik die brontekening terug manueel activeer.
Dus de loads van de LISP worden telkens in de brontekening uitgevoerd.
Gelogd
AutoCAD 2012 - Windows 7

roy_043

  • forumverslaafde
  • ******
  • Offline Offline
  • Berichten: 1425
  • BricsCAD 18
    • Bekijk profiel
    • www.b-k-g.nl
Re: vla-activate
« Reactie #8 Gepost op: do 25 10 2018, 22:08:56 »

In theorie kun je op het activeren van een document met een reactor reageren. Maar die code moet dan in alle tekeningen al geladen zijn. De reactor werkt permanent maar zal alleen in bepaalde situaties taken opstarten. Dit kun je bijvoorbeeld regelen met vl-bb-set/vl-bb-ref. Al met al niet gemakkelijk, maar waarschijnlijk te doen.

Problematisch is wel dat het script, dat dan nog slechts documenten activeert, niet wacht op het einde van de door de reactor gestarte taken. Er kunnen dus meerdere (te veel?) processen tegelijk gaan plaatsvinden.

Ik raad sterk aan om naar een Visual Lisp oplossing te streven.
« Laatst bewerkt op: do 25 10 2018, 22:11:11 door roy_043 »
Gelogd
Pagina's: [1]   Omhoog