CADsite forum

AutoCAD => AutoCAD probleem => Topic gestart door: Jacobusje op vr 29 01 2021, 22:39:59

Titel: Tekenen vanuit Exel
Bericht door: Jacobusje op vr 29 01 2021, 22:39:59
Goedenavond,

Heb een oude hobby van stal gehaald.
Met waarden uit Excel tekenen in Auto-cad.

Ik loop ergens tegenaan wat ik toen niet op kon/wilde lossen.

Bijgevoegd bestand bevat een macro die lijnen zet in Auto-cad met waarden uit het 2e tabblad.
Dat heeft altijd goed gewerkt en werkt nu ook nog zolang alle waarden maar afrond op hele cijfers.
En eigenlijk wil ook lijnen tekenen met cijfers achter de komma.

Kan iemand mij helpen hoe ik dit op kan lossen?
Wellicht moet ik de code in VBA aanpassen....

Vast bedankt voor het meedenken
VrGr JieBie
Titel: Re: Tekenen vanuit Exel
Bericht door: EddyBeerke op wo 03 02 2021, 08:41:36
Begin eerst eens met deze regel boven aan je code:
Option Explicit

Hierdoor wordt je gedwongen om je vars te benoemen, bv:
Dim commando as String
Titel: Re: Tekenen vanuit Exel
Bericht door: Jacobusje op wo 03 02 2021, 22:45:12
Dag Eddy,

Als ik "Option Explicit" bovenaan mijn code zet loopt hij vast bij KanaalNr van de Sub Rollaag en krijg de volgende melding:
Een variabele is niet gedefinieerd.

Deze melding krijg ik ook als ik
"Option Explicit
Dim commando As String"
Bovenaan de code zet.

Ook als ik "Dim commando As String" bij Sub lijn en bij Sub maten zet.

Waarschijnlijk komt het nogal precies waar de bepaalde codes staan.
Maar ik beheers dit niet genoeg om dat te bevatten  :?

Waar zou de code "Dim commando As String" precies moeten staan?
Titel: Re: Tekenen vanuit Exel
Bericht door: bart op do 04 02 2021, 11:47:31
ik heb niet veel kaas gegeten van vba
maar autocad lust geen komma in een cijfer en voor zover ik weet is het ook niet mogelijk om dat in te stellen

toe ik nog veel tekende en ook het nodige vanuit excel werkte met autocad had ik mijn landinstellingen aangepast tot een punt als decimaalteken
Titel: Re: Tekenen vanuit Exel
Bericht door: EddyBeerke op di 09 02 2021, 10:02:12
Citaat van: Jacobusje op wo 03 02 2021, 22:45:12
Dag Eddy,

Als ik "Option Explicit" bovenaan mijn code zet loopt hij vast bij KanaalNr van de Sub Rollaag en krijg de volgende melding:
Een variabele is niet gedefinieerd.

Deze melding krijg ik ook als ik
"Option Explicit
Dim commando As String"
Bovenaan de code zet.

Ook als ik "Dim commando As String" bij Sub lijn en bij Sub maten zet.

Waarschijnlijk komt het nogal precies waar de bepaalde codes staan.
Maar ik beheers dit niet genoeg om dat te bevatten  :?

Waar zou de code "Dim commando As String" precies moeten staan?
De code "Dim commando As String" is een voorbeeld.

Met de code "Option Explicit" verplicht je jezelf om de vars vooraf in je sub te definieeren.
Dan wet je wat er in een var kan komen en sluipen er minder fouten in het coderen.
Zo weet je bv dat bij een "Dim int As Integer" altijd een heel getal komt zonder decimalen.
Bij "Dim commando As String" is er dus altijd sprake van een string -> letter, woord of zin.

Dim Punt(2) As Double
Heeft een soort verdieping dus eigelijk drie vars in één:
Punt(0), Punt(1) en Punt(2) allemaal van het type Double.
Dit kun je bv gebruiken als je een punt opvraagt in AutoCAD, alleen dan geef je geen nummer op.
Hier een simpel voorbeeld:

Option Explicit

Sub GeefPunt()
Dim Punt() As Double ' dit had ook zo kunnen staan: Dim Punt() As Variant -> Voor alles te gebruiken
' Vraag een punt op in het active acad window
Punt() = ThisDrawing.Utility.GetPoint(, "Geef punt op: ")

' Toon de opgevraagde waardes
Debug.Print "X: " & Punt(0)
Debug.Print "Y: " & Punt(1)
Debug.Print "Z: " & Punt(2)
End Sub


Door je code op die manier aan te passen kun je ook makkelijker weten wat de code doet.
Neemt niet weg dat opmerkingen (gedefinieerd voorafgaande met een ') de code nóg beter leesbaarder maken zoals in het voorbeeld.
Titel: Re: Tekenen vanuit Exel
Bericht door: Jacobusje op wo 10 02 2021, 22:38:53
Eddy,

Ik weet niet of ik het goed begrijp....
Bart zegt dat Acad geen komma's lust.
Dat zou voor mijn gevoel betekenen dat die komma's omgezet moeten worden in punten. (met vba-code)

Als ik jou code goed interpreteer dan stel je daarmee de eigenschap van de output vast....?

Maar daarmee veranderd de input toch niet? (komma's in Excel)

Of zit ik te moeilijk te denken of op de verkeerde weg?
Titel: Re: Tekenen vanuit Exel
Bericht door: EddyBeerke op do 11 02 2021, 09:12:27
Citaat van: Jacobusje op wo 10 02 2021, 22:38:53
Eddy,

Ik weet niet of ik het goed begrijp....
Bart zegt dat Acad geen komma's lust.
Dat zou voor mijn gevoel betekenen dat die komma's omgezet moeten worden in punten. (met vba-code)

Als ik jou code goed interpreteer dan stel je daarmee de eigenschap van de output vast....?

Maar daarmee veranderd de input toch niet? (komma's in Excel)

Of zit ik te moeilijk te denken of op de verkeerde weg?
Ik heb allen een verbetervoorstel gedaan voor de leesbaarheid voor de code.
Gewoon een tip als je verder gaat met coderen. Je zou dat ook kunnen weglaten (wat mij aleen onverstandig lijkt).
De uitdaging met punten en comma's kun je met het volgendet stukje code misschien oplossen:


Dim CV As String, CT As String, S As String, P As Long, Obj As AcadEntity
  ' Waar moet naar gezocht worden
  CV = ","
  ' Wat moet daarvoor in de plaats
  CT = "."
  ' Er wordt van een Obj (een MText of een Text) de TextString opgevraagd
  S = Obj.TextString
    ' Als het een ander object betreft dan is er een error, zo niet ga dan verder
    If Not Err Then
      ' zoek de CV in S, vervolgens check of gevonden (P), dan vervangen door CT
      P = InStr(S, CV): If P <> 0 Then Mid(S, P, 1) = CT
      Obj.TextString = S
    Else
      Err.Clear
    End If


De aanpassing die je moet doen hier is het getal dat je opvraagt in var S zetten i.p.v. S = Obj.TextString
Dan wordt er van een "," een "." gemaakt

Zoals je ziet zijn alle vars gedeclareerd wat een vereiste is als je "Option Explicit" gebruikt.
Lees dit ook eens door voor de voordelen wat geld voor Excel-VBA is voor alle VBA dus ook voor AutoCAD-VBA:
https://wellsr.com/vba/excel/vba-option-explicit/
Titel: Re: Tekenen vanuit Exel
Bericht door: cadtools@gmail.com op do 11 02 2021, 10:24:18
Kijk ook even naar deze video.
https://www.youtube.com/watch?v=J0kZR6ptwG4