FastFiber

iNSERT BLOCK

Gestart door martijn, ma 14 05 2012, 08:34:04

Vorige topic - Volgende topic

martijn

Waar ik tegen aan loop is het volgende. :cry:

Ik wil een blok met attributen invoegen en dmv een formulier de attributen van te voren invullen.
Het inserten en het invullen van het blok gaat helemaal goed, alleen insert hij het blok altijd op 0,0.
Met andere woorden, hij doet niets met het invoegpunt. Hier zal vast een logische verklaring voor zijn, maar ik weet het even niet meer.
Kan iemand mij hier mee helpen? Het stukje code waar het omgaat staat hieronder.

Groetjes Martijn

Private Sub btnInvullen_Click()
  Dim objBlok As AcadBlockReference
  Dim dblInvoegpunt(0 To 2) As Double

    dblInvoegpunt(0) = 10: dblInvoegpunt(1) = 2: dblInvoegpunt(2) = 0
   
  Set objBlok = ThisDrawing.ModelSpace.InsertBlock(dblInvoegpunt, "C:\Acad_2012_Scripts\Testfase\Cnc-info.dwg", 1, 1, 1, 0)

  Dim varAttributen As Variant
  Dim varAttribuut As Variant

  varAttributen = objBlok.GetAttributes
  For Each varAttribuut In varAttributen
    Select Case varAttribuut.TagString
    Case "VRAAG_1"
      varAttribuut.TextString = frmCNCinvoerveld.txtBeschrijving.Value
    Case "VRAAG_2"
      varAttribuut.TextString = frmCNCinvoerveld.txtDikte.Value
    Case "VRAAG_3"
      varAttribuut.TextString = frmCNCinvoerveld.txtAantal.Value
   
    End Select
  Next varAttribuut
 
  objBlok.Update
 
End Sub

martijn

Laat ik de vraag proberen op een andere manier te stellen.

Er wordt een VBA programma gestart, waarbij er een selectieset wordt gemaakt. Nu wordt er een kader (polyline) om de selectieset getekend en een tekst van de afmetingen van deze selectie geplaatst.
Vervolgens verschijnt er een formulier, waarop de een aantal dingen kunt invullen.
Door op de ok button van dit formulier te klikken wordt er een blok op de tekening geplaatst met attributen die worden ingevuld door de zojuist ingevulde waarden op het formulier.

Om het kader te kunnen tekenen wordt er door het programma gekeken wat de minimale en maximalen x en y waarden zijn van de selectie.
Voor het plaatsen van de tekst wordt ook gebruik gemaakt van deze waarden.

Graag zou ik deze waarden ook willen gebruiken voor het op de juiste positie plaatsen van het blok. Maar omdat het een apparte sub is, kan ik de vorige waarde niet gebruiken. Hoe kan ik deze toch aanroepen?

Iemand?
Ik heb het programma toegevoegd. Het begint misschien een beetje een rommeltje te worden, maar alle tips zijn welkom.

Martijn

winnes

Ik heb het niet gecheckt, maar probeer eens vooraf het volgende :

ThisDrawing.SetVariable "INSBASE", dblInvoegpunt

Anders moet je achteraf een Move doen...?

EddyBeerke

Citaat van: winnes op di 15 05 2012, 08:39:04
Ik heb het niet gecheckt, maar probeer eens vooraf het volgende :

ThisDrawing.SetVariable "INSBASE", dblInvoegpunt

Als je dit doet moet je wel achteraf weer de "INSBASE" op 0,0,0 zetten.
Als je dat niet doet dan heb je later met je tekening weer andere problemen!!! :auw:
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

winnes


martijn

Ga ik even mee stoeien

HofCAD

#6
Citaat van: martijn op ma 14 05 2012, 08:34:04
Het inserten en het invullen van het blok gaat helemaal goed, alleen insert hij het blok altijd op 0,0.

Groetjes Martijn
Beste Martijn,

Ik snap je probleem niet zo goed! :oops: :oops: :oops: :oops:
Als ik het programma uit Attributen+invullen.dvb gebruik, dan
wordt de blockreferentie van het block 'Cnc-info' netjes
op 100,100 gezet.
Als de waarden in het programma veranderd worden, dan wordt
dit ook bij het uitvoeren gevolgd.

Met vriendelijke groet, HofCAD CSI.

Als je de blockreferentie wil plaatsen op een punt na een vraagstelling,
kun je HofCAD01.dvb bekijken van
http://www.cadsite.be/smf/index.php?topic=3414.msg17310#msg17310
ACADcadabra

martijn

Zo ben er even tussen uit geweest (wat vba betreft dan)
Bedankt voor jullie reacties. Ik kom er alleen nog steeds niet uit.
Wat ik wel vreemd vind is dat hij altijd, ongeacht wat ik invul, het altijd op 100,100 insert.
Ga er nog even mee worstelen. Als er nog ideeen zijn hoor ik het graag.

HofCAD


Beste Martijn,

Ik snap je probleem nog steeds niet zo goed! :oops: :oops: :oops: :oops:
Als ik het programma uit Attributen+invullen.dvb gebruik, dan
wordt de blockreferentie van het block 'Cnc-info' netjes
op 100,100 gezet.
Als de waarden in het programma veranderd worden, dan wordt
dit ook bij het uitvoeren gevolgd.

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

martijn

Laat ik het anders proberen uit te leggen.
Wat ik wil maken is het volgende.
Er wordt gevraagd om een selectie te maken. Om deze selectie wordt dan een rechthoek getekend met een toeslag. De netto maten van de selectie worden links onder in de zojuist getekende rechthoek gezet.
Vervolgens wordt er een menu getoond, waarin je aanvullende informatie kunt invullen. Deze informatie wordt dan dmv een blok met attributen geinsert in de tekening. Dit blok wil ik dan netjes onder de tekst van de netto maten.

Het programma maakt twee variable aan. (varExtendMin en varExtendMax) hierin staat het minimale en het maximale bereik van de selectie.
Nu wordt varExtendMin variabele gebruikt om de netto maat tekst te positioneren.
Nu weet ik niet hoe ik dit nogmaals kan gebruiken bij het inserten van een blok?

Hoop dat het probleem nu een beetje duidelijk wordt, en misschien moet de volgorde waarin ik nu het programma gescheven heb wel anders.

Groetjes Martijn