CADsite

  • vr 25 09 2020, 12:37:34
  • Welkom, gast
Log in of registreer jezelf.

Login met gebruikersnaam, wachtwoord en sessielengte
Geavanceerd zoeken  

Nieuws:

Pagina's: [1]   Omlaag

Auteur Topic: SetSystemVariable en Invoegen Blocks, error in code.  (gelezen 5191 keer)

Bassiemeer

  • regelmatige poster
  • ***
  • Offline Offline
  • Berichten: 47
    • Bekijk profiel
SetSystemVariable en Invoegen Blocks, error in code.
« Gepost op: wo 23 03 2011, 09:46:52 »

Ik heb een probleem met mijn code, de regel met SetLayer geeft een fout.
Application.SetSystemVariable("CLAYER", 0) geeft de error: Expression does not produce a value.

Wat ik wil bereiken is dat als de knop "Invoegen" wordt ingedrukt dat de applicatie de huidige layer (CurrentLayer) ophaalt uit AutoCAD. Dit doet hij ook, gechecked via een MessageBox.
Vervolgens moet de huidige laat naar 0 worden gezet, nu doe ik dit nog met een SendstringToExecute.
En aan het eind moet ik de laag weer terugzetten op de oorspronkelijke laag.

Dim CurrentLayer = Application.GetSystemVariable("CLAYER")
Dim SetLayer = Application.SetSystemVariable("CLAYER", 0)

"Applicatie"

Dim SetLayer = Application.SetSystemVariable("CLAYER", CurrentLayer)

Maar door de foutmelding loop ik een beetje vast.
« Laatst bewerkt op: wo 23 03 2011, 14:02:15 door Bassiemeer »
Gelogd

Bassiemeer

  • regelmatige poster
  • ***
  • Offline Offline
  • Berichten: 47
    • Bekijk profiel
Re:Error: Expression does not produce a value.
« Reactie #1 Gepost op: wo 23 03 2011, 09:57:47 »

Wow.. hoe kom ik erbij om hier een Dim enz. voor te zetten.
Application.SetSystemVariable("CLAYER", 0) moet het gewoon zijn  :oops: :oops:

EDIT:
Met de volgende code krijg ik in AutoCAD zelf een foutmelding, Unhandled exception.
Dim CurrentLayer = Application.GetSystemVariable("CLAYER")
Application.SetSystemVariable("CLAYER", 0)

"Applicatie"

Application.SetSystemVariable("CLAYER", CurrentLayer)

Wat gaat er mis ?
« Laatst bewerkt op: wo 23 03 2011, 10:03:20 door Bassiemeer »
Gelogd

sschevers

  • vaste forumklant
  • *****
  • Offline Offline
  • Berichten: 275
    • Bekijk profiel
Re:Application.SetSystemVariable("CLAYER", 0) Unhandled Exception
« Reactie #2 Gepost op: wo 23 03 2011, 12:13:04 »

Bassie,

Laagnamen zijn van het type string. Wat je nu doet is een integer naar de functie schrijven en dat vind autocad niet zo fijn. Wat je sowieso moet doen is het declareren van je variabelen het type variabele meegeven.

Dus:
Dim CurrentLayer as string = Application.GetSystemVariable("CLAYER")
Application.SetSystemVariable("CLAYER", "0")

<doe je ding.

;; Herstellen van laag instellingen
Application.SetSystemVariable("CLAYER", CurrentLayer)



succes

stephan
Gelogd

Bassiemeer

  • regelmatige poster
  • ***
  • Offline Offline
  • Berichten: 47
    • Bekijk profiel
Re:Application.SetSystemVariable("CLAYER", 0) Unhandled Exception
« Reactie #3 Gepost op: wo 23 03 2011, 13:51:12 »

Ooh nou dan ga ik dat eens proberen.
Waarschijnlijk gaat het alsnog fout omdat ik de blocks op dit moment insert via SendstringToExecute.
En gaat hij al terug naar de CurrentLayer terwijl ik in de "pause" zit van de stringtoexecute.

EDIT: Dit bovenstaande werkte niet. Weer een Unhandled Exception.

Ik ben aan het kijken naar de volgende code:
http://forums.autodesk.com/t5/NET/Insert-block-from-disk/m-p/1932281

Na het wegwerken van een aantal errors, bijvoorbeeld Imports AcDb = Autodesk.AutoCAD.DatabaseServices pakt hij niet. Maar wel Imports ADb = Autodesk.AutoCAD.DatabaseServices omdat anders Imports alias 'AcGe' conflicts with 'Structure AcGe' declared in the root namespace.
Is dit zo goed opgelost ?

En ik houdt uiteindelijk 3 errors over, 2 maal BlockNameToID(blockname) en 1 maal tbl.Item(BlockName)
En deze hebben dan de volgende 2 errors:
Value of type '1-dimensional array of Autodesk.AutoCAD.DatabaseServices.ObjectId' cannot be converted to 'Autodesk.AutoCAD.DatabaseServices.ObjectId'.
en
Value of type 'Autodesk.AutoCAD.DatabaseServices.ObjectId' cannot be converted to '1-dimensional array of Autodesk.AutoCAD.DatabaseServices.ObjectId'.   

Ik hoop hier nog een oplossing voor te vinden.
Ook heb ik geen idee hoe ik dit aan een userinterface te koppelen.
« Laatst bewerkt op: wo 23 03 2011, 14:01:45 door Bassiemeer »
Gelogd
Pagina's: [1]   Omhoog