Dynamisch blok programmeren

Status
Niet open voor verdere reacties.

charimal

Nieuwe gebruiker
Lid geworden
6 mrt 2009
Berichten
4
Hallo,

Iemand die weet wat ik verkeerd programmeer? Hij wil mijn dynamisch blok niet in de tekening plaatsen. Hieronder bijgevoegde code.




Private Sub cmdOK_Click()
Dim x As Double
Dim y As Double

x = txt2.Value
y = txt1.Value



Call PlaatsDynamischblok(blokLivkast3, 0, 0, linear, breedte)

End Sub




Option Explicit
Sub tekenen()
UserForm1.Show

End Sub
Sub PlaatsDynamischblok(Bloknaam, x, y, Parameter, waarde)

Dim objBlokReferentie As AcadBlockReference
Dim invoegpunt(0 To 2) As Double

invoegpunt(0) = x
invoegpunt(1) = y


Set objBlokReferentie = ThisDrawing.ModelSpace.InsertBlock(invoegpunt, Bloknaam, 1, 1, 1, 0)
Variabelen = objBlokReferentie.GetDynamicBlockProperties
For i = LBound(Variabelen) To UBound(Variabelen)
If Parameter = Variabelen(i).PropertyName Then
Variabelen(i).Value = waarde
End If

Next i
objBlokReferentie.Update

End Sub
 
Met autocad heb ik nog nooit gewerkt, laat staan geprogrammeerd.

Maar ik zie wel:

- dat variabelen slechts gedeclareerd worden
-
Code:
x = txt2.Value
kan veel beter als:

Code:
x = CDbl(txt2.Text)

Analoog voor y.

- Plaats ook code tags rondom de code als je code post op het forum hier.

Wigi
 
Ik betwijfel of je enig idee hebt van de code (gezien de inconsistenties en invoerfouten). Mij lijkt dit wat te hoog gegrepen.

Code:
Private Sub cmdOK_Click()
  PlaatsDynamischblok(blokLivkast3, txt2.value, txt1.value, linear, breedte)
End Sub


Code:
Sub tekenen()
  UserForm1.Show
End Sub

Code:
Sub PlaatsDynamischblok(Bloknaam, x, y, Parameter, waarde)
  with ThisDrawing.ModelSpace.InsertBlock(x,y, Bloknaam, 1, 1, 1, 0)
    For each bp in .GetDynamicBlockProperties
      If Parameter = bp.PropertyName Then bp.Value = waarde
    Next 
    .Update
  end with
End Sub
 
Ik betwijfel of je enig idee hebt van de code (gezien de inconsistenties en invoerfouten). Mij lijkt dit wat te hoog gegrepen.

Code:
Private Sub cmdOK_Click()
  PlaatsDynamischblok(blokLivkast3, txt2.value, txt1.value, linear, breedte)
End Sub


Code:
Sub tekenen()
  UserForm1.Show
End Sub

Code:
Sub PlaatsDynamischblok(Bloknaam, x, y, Parameter, waarde)
  with ThisDrawing.ModelSpace.InsertBlock(x,y, Bloknaam, 1, 1, 1, 0)
    For each bp in .GetDynamicBlockProperties
      If Parameter = bp.PropertyName Then bp.Value = waarde
    Next 
    .Update
  end with
End Sub
 
Bedankt voor de hulp. Nog een vraagje, is het ook mogelijk een tweede waarde toe te kennen in je code? Omdat ik met 2 lineare parameters werk namelijk breedte en hoogte. Of moet dit afzonderlijk gebeuren?
 
Ik ken de eigenschappen van InsertBlock niet.
 
In bijlage stuur ik eens mijn block door.
 
Laatst bewerkt:
Dan zul je eerst ook nog een gratis versie van Autocad moeten leveren.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan