FastFiber

VBA programma werkt niet meer in autocad 2016 (OPGELOST)

Gestart door Rudy, za 28 11 2015, 18:10:29

Vorige topic - Volgende topic

Rudy

Tot voor kort had ik met autocad 2013 geen problemen om bijgaande VBA programma's te gebruiken.
Sinds ik overgeschakeld ben naar acad2016 ik volgende fout "command: execution error"
Ik ben ook maar gebruiker en heb in feite geen programmeerkennis.
Wie kan helpen om het probleem met de programma's in bijlage op te lossen...

Rudy

Autocad 2013 / 2016

sschevers

Even snel gekeken wat het kan zijn. Volgens mij staan je blokken niet in de zoekpaden van autocad. Waardoor je een error krijgt

groeten stephan

Rudy

Beste Stephan volgens mij staat alles in de zoekpaden maar foutmelding blijft.
Toch bedankt om te willen helpen!
Autocad 2013 / 2016

Rudy

Hier nog wat uitgebreidere informatie over de foutmeldingen:

command: _-vbarun Initializing VBA System...
Macro name: C:/Users/RS/Documents/Drawings/VBA/kader+titelhoek-rsa.dvb!ThisDrawing.schaal
Command: grid

Specify grid spacing(X) or [ON/OFF/Snap/Major/aDaptive/Limits/Follow/Aspect] <10.00>: 20

Command: Execution error


En bij de andere:

Command: _-vbarun
Macro name: C:/Users/RS/Documents/Drawings/VBA/layouttitelhoek-rsa.dvb!ThisDrawing.schaal
Command: filedia

Enter new value for FILEDIA <1>: 0

Command: Execution error
**** System Variable Changed ****
1 of the monitored system variables has changed from the preferred value. Use SYSVARMONITOR command to view changes.


Ik hoop dat dit iets duidelijker is...
Autocad 2013 / 2016


Rudy

Autocad 2013 / 2016

Rudy

Autocad 2013 / 2016

sschevers

Rudy,

De laatste melding los je op door mijn eerdere post. De foutmelding
**** System Variable Changed ****
1 of the monitored system variables has changed from the preferred value. Use SYSVARMONITOR command to view changes.

Wijst hier namelijk expliciet op dat je een sysvar (fileDia) die gemonitord wordt gaat wijzigen.

stephan

Rudy

Stephan,

Ik heb filedia uit de monitoring gehaald, maar fout blijft enkel melding is anders.
Volgens mij is er bij vba in acad 2016 iets gewijzigd waardoor deze niet meer hetzelfde werkt als in 2013.

Hier nogmaals de foutmelding met de nieuwe instelling

Command: _-vbarun
Macro name: C:/Users/RS/Documents/Drawings/VBA/layouttitelhoek-rsa.dvb!ThisDrawing.schaal

Command: filedia

Enter new value for FILEDIA <0>: 0

Command: Execution error


Ik denk dat de programma's niet worden afgewerkt maar weet niet hoe dit komt  :?:

Autocad 2013 / 2016

Rudy

#9
Hier nog 2 tekstbestanden met verloop van de programma's in acad 2013.
Daaronder het programma zelf.
Autocad 2013 / 2016

roy_043

Het is jou blijkbaar niet duidelijk dat de twee macro's nog meer variabelen aanpassen.
Ik zou allereerst eens proberen die 'Sys Var Monitor' helemaal uit te zetten.

Rudy

Citaat van: roy_043 op wo 02 12 2015, 15:22:25
Het is jou blijkbaar niet duidelijk dat de twee macro's nog meer variabelen aanpassen.
Ik zou allereerst eens proberen die 'Sys Var Monitor' helemaal uit te zetten.

Dat heb ik dus gedaan maar fout blijft zoals hierboven beschreven.
Het is dus wel degelijk zo dat deze programma's in autocad 2013 werken op deze moment
en als ik ze laad in 2016 doen ze het niet meer.
Autocad 2013 / 2016

Rudy

#12
Ben nog wat aan het experimenteren geweest en heb de macro aan de praat gekregen door hem te runnen vanuit het programma zelf (afb.1).
Als ik het echter opstart vanuit autocad (afb.2) krijg ik de fout in zoals de zien in (afb.3).
Dus denk ik dat er in de 2016 iets gewijzigd is wat invloed heeft op het runnen van een macro...

Iemand enig idee wat er hier fout loopt  :?:
Autocad 2013 / 2016

Rudy

Autocad 2013 / 2016

roy_043

#14
Google kan nuttig zijn:
Als ik zoek op:
AutoCAD 2016 VBA invalid execution context
Dan staat dit bovenaan:
https://forums.autodesk.com/t5/forums/forumtopicprintpage/board-id/33/message-id/98679/print-single-message/false/page/1

De oplossing zou dus kunnen zijn:
Maak stap voor stap een lange string en zend die in 1x met ThisDrawing.SendCommand.

Voorbeeld (ongetest):
Public Sub schaal()

TEKENAAR = "RSA"
a = VBA.InputBox("Geef het papierformaat")
b = 1
c = 10 * b
a = UCase(a)

sendStr = ""
sendStr = sendStr & "filedia" & vbCr & "0" & vbCr
sendStr = sendStr & "-layout" & vbCr & "T" & vbCr & a & vbCr & a & vbCr
sendStr = sendStr & "layout" & vbCr & "D" & vbCr & "Layout1" & vbCr
sendStr = sendStr & "layout" & vbCr & "D" & vbCr & "Layout2" & vbCr
sendStr = sendStr & "layout" & vbCr & "S" & vbCr & a & vbCr
sendStr = sendStr & "attdia" & vbCr & "0" & vbCr

Select Case True

Case a = "A4"
x = 201.5
y = 8.5
v = 210
w = 297

Case a = "A3"
x = 411.5
y = 8.5
v = 420
w = 297

Case a = "A2"
x = 585.5
y = 8.5
v = 594
w = 420

Case a = "A1"
x = 832.5
y = 8.5
v = 841
w = 594


Case a = "A0"
x = 1180.5
y = 8.5
v = 1189
w = 841


End Select

x = b * x
y = b * y
v = b * v
w = b * w

bstr = Str(b)
bstr = LTrim(bstr)
xstr = Str(x)
xstr = LTrim(xstr)
ystr = Str(y)
ystr = LTrim(ystr)
vstr = Str(v)
vstr = LTrim(vstr)
wstr = Str(w)
wstr = LTrim(wstr)

bstr = "1/" + bstr
dstr = xstr + "," + ystr
estr = vstr + "," + wstr

sendStr = sendStr & "-insert" & vbCr & "titelhoek" & vbCr & dstr & vbCr & b & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & vbCr & TEKENAAR & vbCr & Date & vbCr & vbCr & vbCr & a & vbCr & bstr & vbCr
sendStr = sendStr & "zoom" & vbCr & "extents" & vbCr
sendStr = sendStr & "filedia" & vbCr & "1" & vbCr
sendStr = sendStr & "attdia" & vbCr & "1" & vbCr
ThisDrawing.SendCommand sendStr

End Sub