FastFiber

Tekst in voeren via vba

Gestart door Berre, zo 14 10 2007, 15:38:02

Vorige topic - Volgende topic

Berre

Kan er iemand mij een module geven die werkt, om tekst in te voeren in autocad?
Ik ben mijn cursus Autocad'vba' van vroeger nog eens aan het doornemen en ik zit vast. Ik wil tekst in voeren maar er zit ergens een fout in mijn module denk ik.

Ik heb als module:
Sub vaste_tekst(ByVal regel As String, ByVal x As Double, ByVal y As Double, ByVal h As Double)
    Dim inserteerpnt(0 To 2)
    Dim tekstobject As AcadText
    inserteerpnt(0) = x
    inserteerpnt(1) = y
    inserteerpnt(2) = 0
   
Set tekstobject = ThisDrawing.ModelSpace.AddText(regel, inserteerpnt, h)
    tekstobject.Update


en bij autocad objects -> thisdrawing heb ik:

tekenen.vaste_tekst "Een beetje tekst", 50, 80, 15



Als ik de procedure overloop met F8, dan geeft vba een fout bij de regel die hierboven in het rood staat, en de foutmelding is de volgende:

Run-time error '5':
Invalid procedure call or argument

Kan iemand mij vertellen wat ik verkeerd doe?
Alvast bedankt.

Kenny H

#1
Beste,

Volgens mij ontbreek je nog iets.

CiteerPrivate Sub cmdbtekentekst_Click()
    Dim punt(1 To 3) As Double
    Dim hoogte As Double
    Dim willekeurige_tekst As AcadText
        If txt29.Text = "" Or txt30.Text = "" Or txt31.Text = "" Or cbotekst.Text = "" Then
            MsgBox " U vergat een waarde in te geven", vbQuestion, "AANDACHT GEVRAAGD !!!"
        Else
            punt(1) = Val(txt29)
            punt(2) = Val(txt30)
            punt(3) = 0
            hoogte = Val(txt31)
            Set willekeurige_tekst = ThisDrawing.ModelSpace.AddText(cbotekst.Text, punt, hoogte)
            willekeurige_tekst.Update
            ZoomExtents
            txt29 = ""
            txt30 = ""
            'txt31 = ""
            'txt32 = ""
            cbotekst.Text = ""
        End If

End Sub

Als je wil mail ik u men bestand eens door (DVB), er staan ook nog wat andere zaken bij.
Ik kan het hier niet plaatsen bestand is iets te groot.

Hopelijk heb je er iets aan.

Mvg

Kenny
8) Volvo 4 Life 8)

Kenny H

Set tekstobject = ThisDrawing.ModelSpace.AddText(regel.Text, inserteerpnt, h)

Volgens mij moet dit nu gaan.  :wink:
Je moest enkel uw regel nog definieren als text.
Had het ook ni direct gezien hoor.
8) Volvo 4 Life 8)

Berre

Citaat van: Kenny H op zo 14 10 2007, 16:12:40
Set tekstobject = ThisDrawing.ModelSpace.AddText(regel.Text, inserteerpnt, h)

Volgens mij moet dit nu gaan.  :wink:
Je moest enkel uw regel nog definieren als text.
Had het ook ni direct gezien hoor.


Het werkt nog steeds niet... Maar 't is wel zo dat ik op die manier tekst invoer zonder userform (ik weet niet of dat relevant is om te weten of niet).
In ieder geval, het maakt niet zoveel uit want als ik een beetje verder blader in de cursus, waar je die tekst met userform moet imbrengen, lukt het wel... dusja.. ik zal er wel eens op uitkomen.
Toch vriendelijk bedankt ;-)

Handig om weten dat hier zo snel gereageerd wordt.  :wink:

Greetz Berre

Kenny H

Mss nog een kleine tip,

Vermijd eens woorden zo als object ,Type enz want autocad kan daar soms tilt op slaan.  :wink:
Dat heb ik al gemerkt tijdens het programeren.

Mvg

Kenny
8) Volvo 4 Life 8)

Kenny H

#5
Beste,

vaste_tekst(ByVal regel As String, ByVal x As Double, ByVal y As Double, ByVal h As Double)
    Dim inserteerpnt(0 To 2)
...
..
.

Verander het vorige eens door dit

vaste_tekst(ByVal regel As AcadText, ByVal h As Double)
    Dim inserteerpnt(0 To 2)
...
..
.
8) Volvo 4 Life 8)

Berre

Nog steeds niets...

Maar nu geeft hij wel een andere foutmelding onder de procedure van "thisdrawing"

Bij "Een beetje tekst" geeft hij nu de foutmelding :

Compile error:
Type mismatch



Ik zal mijn dvb file'tje ff in de bijlage stoppen.
Maar je hoeft je tijd er niet in te steken als je niet wilt hoor.

Toch bedankt;)

greetz Berre

Kenny H

Hey Berre,

Heb u bestandje eens geprobeerd.
Bij mij gaat dit zonder probleem, op acad2005 en acad2007.

CiteerSub vaste_tekst(ByVal regel As String, ByVal x As Double, ByVal y As Double, ByVal h As Double)
   
        Dim tekstobject As AcadText
        Dim inserteerpnt(0 To 2) As Double
    inserteerpnt(0) = x
    inserteerpnt(1) = y
    inserteerpnt(2) = 0
   
Set tekstobject = ThisDrawing.ModelSpace.AddText(regel, inserteerpnt, h)
    tekstobject.Update

End Sub 'einde vaste_tekst zonder userform

Ps: Ik heb echt 30min zitten zoeken achter dit foutje ze.
VBA is voor mij al iets te lang geleden.  :oops:
Hopelijk gaat het bij u nu ook.  8)
En het is graag gedaan!
8) Volvo 4 Life 8)

Berre

Ah idd.

Merciekes voor de hulp ;-)

Ik zal deze site zeker onthouden!
Greetz Berre

yoin