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.
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
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.
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
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
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)
...
..
.
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
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!
Ah idd.
Merciekes voor de hulp ;-)
Ik zal deze site zeker onthouden!
Greetz Berre