CADsite forum

AutoCAD => VBA => Topic gestart door: marcelmaas op do 07 05 2009, 20:27:36

Titel: welk commando voor insert block (opgelost)
Bericht door: marcelmaas op do 07 05 2009, 20:27:36
Hi,

Ik heb een formulier gemaakt waarop je de keuze maakt uit verschillende blocken.
Als je de keuze hebt gemaakt wil je dat block invoegen en druk je de OK button in.

Nou is mijn vraag wat is de code die achter de OKbutton moet komen.

Ik had dit gedaan met thisdrawing.sendcommand, maar heb gelezen dat je dat niet moet gebruiken.

Wie kan mij vertellen hoe de code er dan uit zou moeten zien?
Ik wil het block niet schalen en ook niet roteren, dus die waarden moeten ook vast komen staan.

Groeten, Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op vr 08 05 2009, 13:44:21
Beste Marcel.

Je bedoelt de InsertBlock method.
RetVal = object.InsertBlock(InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation [, Password])
Misschien heb je iets aan het voorbeeld Make_Ins_Blk in de bijlage,
waarbij het aanmaken en invoegen(via de InsertBlock methode en de AddMInsertBlock methode)
van een block wordt getoond.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op vr 08 05 2009, 15:00:37
Hi Hofcad,

ik heb dus een keuze formulier met 8 optionbuttons, als je een van de keuzebuttons hebt aangeklikt wil je via de OKbutton het Block invoegen.

Wat vul ik dan in ipv "Name" ?
Want dat is toch afhankelijk van de keuze op het formulier.

Groeten, Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op vr 08 05 2009, 15:21:23
Beste Marcel,

Hoe ziet er je Userform uit, als je blocknamen resp. Blk1 t/m Blk8 zijn?

Private Sub UserForm_Click()
Dim strName As String
If OptionButton1.Value = True Then strName = "Blk1"
If OptionButton2.Value = True Then strName = "Blk2"
If OptionButton3.Value = True Then strName = "Blk3"
If OptionButton4.Value = True Then strName = "Blk4"
If OptionButton5.Value = True Then strName = "Blk5"
If OptionButton6.Value = True Then strName = "Blk6"
If OptionButton7.Value = True Then strName = "Blk7"
If OptionButton8.Value = True Then strName = "Blk8"
MsgBox strName
Dim blockRefObj As AcadBlockReference
insertionPnt(0) = 20#: insertionPnt(1) = 20#: insertionPnt(2) = 0
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, strName, 1#, 1#, 1#, 0)
End Sub


Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op za 09 05 2009, 11:14:41
Hi Hofcad,

Ik heb de code nu tot zover dat alles werkt.
Het enige wat ik nu nog zou willen is dat er een loop in zit die pas stopt als je op de esc/spatie of enter drukt.
Is dat mogelijk?

Ik heb al verschillende dingen geprobeerd, maar steeds bleef hij maar loopen, en kon ik autocad opnieuw opstarten.
Hoe zou ik dat moeten doen?

Groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op ma 11 05 2009, 08:53:12
Beste Marcel,

Heb je aan CommandButtons gedacht?
Misschien heb je iets aan de bijlage HofCAD01.dvb, waarin je kan
zien dat de tweede manier( DVB_Insert02) met  SendCommand  methode
t.o.v. de InsertBlock methode ( DVB_Insert01) het voordeel heeft van een preview.
De derde methode (DVB_Insert03) kan op je systeem mis gaan(landinstellingen).

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op ma 11 05 2009, 10:16:22
Hi Hofcad,

Wat bedoel je met commandbuttons?

Ik had het commando vbKeyEscape al geprobeerd, maar misschien in een verkeerde zinsbouw ofzo.
Of zijn er nog andere mogelijkheden die ik nog niet gevonden heb?

Groeten, Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op ma 11 05 2009, 10:47:25
Citaat van: marcelmaas op ma 11 05 2009, 10:16:22
Hi Hofcad,

Wat bedoel je met commandbuttons?

Ik had het commando vbKeyEscape al geprobeerd, maar misschien in een verkeerde zinsbouw ofzo.
Of zijn er nog andere mogelijkheden die ik nog niet gevonden heb?

Groeten, Marcel..

Beste Marcel,

Mijn OKE knop in mijn macro's  (DVB_Insert01 t/m  DVB_Insert03)
is een voorbeeld van een CommandButton.
Je kan deze (net als de OptionButtons) halen uit de toolbox van
de Visual Basic Editor.

Met vriendelijke groet, HofCAD CSi.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op ma 11 05 2009, 11:13:05
Hi Hofcad,

Ja maar natuurlijk heb ik er een cmdOK button op staan, en ook al een cmdCancel button.
Maar wat ik zou willen is, dat als ik klaar ben met invoegen ik op de esc/spatie of enter toets zou kunnen klikken om af te breken.

Is dat wel mogenlijk?

En ik zou er een loop in willen bouwen die stopt wanneer je op de esc/spatie of enter drukt.

Ben zelf natuurlijk al vollop overal aan het zoeken, maar over een loop vind ik niet zo veel, ook niet in dit forum.

Heb jij hier een idee voor?

Groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op ma 11 05 2009, 12:42:05
Beste Marcel,

In de boeken van ir. Ronald Boeklagen Computer Ondersteund Ontwerpen
AutoCAD 2009 Computer Ondersteund Ontwerpen ISBN 978-90-72487-58-2
AutoCAD 2008 Computer Ondersteund Ontwerpen ISBN 978-90-72487-54-4
AutoCAD 2007 Computer Ondersteund Ontwerpen ISBN 978-90-72487-49-0
AutoCAD 2006 Computer Ondersteund Ontwerpen ISBN 90-72487-45-1
AutoCAD 2005 Computer Ondersteund ontwerpen ISBN 90-72487-41-9.
AutoCAD 2004 Computer Ondersteund ontwerpen ISBN 90-72487-37-0
AutoCAD 2002 Computer Ondersteund ontwerpen ISBN 90-72487-29-x
In de Engelstalige boeken van Joe Sutphin
AutoCAD 2006 VBA: A Programmer's Reference ISBN10 1590595793 en ISBN13 9781590595794
http://books.google.nl/books?id=8BgC8yNkYvkC&pg=PA15&lpg=PA15&dq=autocad+dvb&source=bl&ots=mHz_ElSHA5&sig=dlOLJ-Z3Fg74Ar3cNq_ME5JK5Q0&hl=nl&ei=3UYISt6XHc3N-Qagl-SPAw&sa=X&oi=book_result&ct=result&resnum=7#PPP1,M1
AutoCAD 2004 VBA—A Programmer's Reference Joe Sutphin
http://visual-basic-dox.net/Apress-AutoCAD.2004.VBA-A.Pr/8879final/LiB0001.html

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op ma 11 05 2009, 13:04:40
Hi Hofcad,

Ik heb in het boek van 2006, 2007 en 2009 gekeken en daarna zoiets geprobeerd.

While not escape Do
--
--
Loop

of

While not vbKeyEscape Do
--
--
Loop

Maar die werken beiden niet.
Zo heb ik nog wat andere dingen geprobeerd, maar blijkbaar zit ik telkens verkeerd te zoeken.
Ja inmiddels ben ik er wel achter dat alle begin moeilijk is.

groeten, Marcel..
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op ma 11 05 2009, 19:42:57
Hi Hofcad,

Die link naar dat engelse boek is gaaf zeg.
Ik heb al een keer getwijfeld of dat boek niet wat voor mij zou zijn.
Nederlandse boeken die alleen over vba binnen autocad gaan zijn er verder niet.
Dus dan is deze engelse wel heel compleet, al is hij dan engels.

Ik ga hier zeker veel gebruik van maken..!!!

Dank je..!!!!   :vreegoe: :vreegoe: :vreegoe:
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op di 12 05 2009, 12:26:53
Hi Hofcad,

Heb jij misschien een voorbeeld van hoe ik een loop zou kunnen maken.

Iedere keer als ik iets probeer, dan blijft hij loopen en krijg ik hem niet gestopt.
Dat is niet de bedoeling natuurlijk, ik moet dan ook steeds autocad afsluiten, niet handig he.

Groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op di 12 05 2009, 18:49:43
Beste Marcel,

In de bijlage vind je HofCAD02.dvb,  waarbij de macro's kan vinden
van DVB_Insert01 t/m  DVB_Insert04.
In deze macro's kun je de blocken Blk01 en Blk02 zovaak als je
maar wil invoegen, totdat je op de Cancel knop klikt.
De derde methode (DVB_Insert03) kan op je systeem mis gaan(landinstellingen).

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op di 12 05 2009, 19:38:18
Hi Hofcad,

Zoals DVB_Insert02 werkt het goed, alleen is het heel irritant dat je iedere keer weer het formulier in beeld krijgt, en dan daar weer op de OK button moet klikken.
Is het niet mogelijk om steeds te blijven klikken (dus steeds ergens een block neer te zetten) todat je op de escape toets drukt.??

Dus een loop die stopt als je op de Escape toets of spatie/enter drukt..!!

Groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op di 12 05 2009, 19:43:33
Beste Marcel,

Heb je ook  DVB_Insert04 bekeken, want daar hoef je niet op de OK knop te klikken.
Een oplossing met "op een  Escape toets of spatie/enter drukken" kan ik je nu nog niet
aanleveren omdat:
1) Lisp mijn geliefde taal is, en ik heb me dus nooit verdiept in VBA.
In de AutoLisp hoek van vele AutoCADforums vind je veel betere
en uitgebreidere programma's dan in de VBA hoek.
2) Ik zelf heb niet zoveel op met dialoogboxen, want ik ben blond :oops:.

Met vriendelijke groet, HofCAD CSI.

PS 1: Heb je in de Visual Basic Editor de knop RESET al gevonden :lol:, want je schreef ooit:
"maar steeds bleef hij maar loopen, en kon ik autocad opnieuw opstarten."
PS 2: Dit http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=12729484&linkID=9240618
stelt mij niet gerust:
What is the status of VBA support in the AutoCAD 2010 product line?
Autodesk has begun the transition of VB customization from VBA to .NET technology. This transition will occur over a few years. During this time, Autodesk will provide documentation and other assistance to help our customers and developers migrate from VBA to this new automation technology.  
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op di 12 05 2009, 20:57:43
Hi Hofcad,

Ik had de reset knop al wel gevonden, maar die hielp me ook niet te stoppen.
In dacht dat jij ook wel goed thuis was in vba.
Maar in ieder geval bedankt voor de hulp tot zover.!!!

Ook bedankt voor de link, daar wordt ik eigenlijk ook helemaal niet blij van.
Ik ga namelijk over twee weken starten met de vba training bij cadcollege.
Nou is het natuurlijk nooit verkeerd om ergens te beginnen binnen de programmeer wereld.
Ik denk dat als je vba redelijk kent, het waarschijnlijk ook makkelijker is om een andere taal te leren.
Zeker als je vba kent zal de stap naar vb.Net niet zo moeilijk zijn.
Maar zeker wel jammer dat het zo moet lopen.

Bedankt voor de info.. :vreegoe: :vreegoe: :vreegoe:
Ik ga zelf wel verder zoeken naar een oplossing voor mijn formuliertje.. :wink:

Groeten, Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op wo 13 05 2009, 18:35:00
Citaat van: marcelmaas op di 12 05 2009, 20:57:43
Ik had de reset knop al wel gevonden, maar die hielp me ook niet te stoppen.

Beste Marcel,

Kun je de oneindige lus met Ctrl + Break stoppen?

Met vriendelijke groet, HofCAD CSI

PS 1. Misschien kan http://www.fontstuff.com/vba/vbatut07.htm met het
bestand Excel Calendar Workbook.zip (http://www.fontstuff.com/downloads/Excel%20Calendar%20Workbook.zip) 
een oplossing voor je probleem geven.
PS 2. Als je de oplossing voor je formuliertje gevonden hebt, wil ik die graag zien.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op wo 13 05 2009, 20:10:35
wat bedoel je met ctrl + break?

ctrl + enter..?

groeten, Marcel...
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op wo 13 05 2009, 20:16:43
Citaat van: marcelmaas op wo 13 05 2009, 20:10:35
wat bedoel je met ctrl + break?
Beste Marcel,

Heb je onder de Pause toets geen Break zitten?
Dus men zal wel bedoelen Ctrl+Shift+Pause.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op wo 13 05 2009, 20:30:02
Hi Hofcad,

Stop werkt niet, pause of break zoals ik nu net pas zie ook niet.
Er is helemaal niks wat dan werkt, alles is geblokkeerd tot je op stop zou drukken, maar die werkt ook niet.

Je bedoelt toch in de visual basic editor op pause drukken toch.?

Groeten, Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op wo 13 05 2009, 20:59:49
Beste Marcel,

Heb je onder de Pause toets op je toetsenbord geen Break zitten?
Dus men zal wel bedoelen Ctrl+Shift+Pause.

Met vriendelijke groet, HofCAD CSI.

PS Zet in HofCAD02.dvb in de UserForm2 bij  CommandButton2 de waarde bij Cancel op True,
want ik denk(???????????) dat dan de Escape(Esc) toets in de dialoogbox gaat  werken.
Morgen hopelijk meer.

Titel: Re:welk commando voor insert block
Bericht door: HofCAD op do 14 05 2009, 19:06:04
Beste Marcel,

Ik heb het vorige bestand HofCAD02.dvb aangepast naar HofCAD02b.dvb,
zodat je na een keuze van een block deze herhaald kan invoegen tot dat
je bijv. de Escape of de Enter toets gebruikt.
Na deze onderbreking komt het dialoogscherm weer op, en kan je bijv. een
ander block herhaaldelijk invoegen.
Het dialoogscherm voorgoed afsluiten kan met de CANCEL knop of met
de Escape toets.

Met vriendelijke groet, HofCAD CSI.

PS.1: De sprong met GoTo MissedPick is niet echt fraai.
PS.2: Ik ben benieuwd naar jouw *.dvb.

Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op do 14 05 2009, 21:17:18
Hi Hofcad,

Ik heb inmiddels verschillende dingen gecombineerd, en heb nu bijgevoegde code.
Daarin werkt het al aardig zoals het zou moeten.
Als ik namelijk een optionbutton kies veranderd ook de afbeelding links op het formulier.
Optionbutton 4 staat op true ingesteld omdat we die het meest gebruiken.
Maar nu is het zo dat welke optionbutton je ook aanklikt de afbeelding wel mee veranderd, maar als je hem in wil voegen, toch blijkt dat het block van optionbutton 4 ingevoegd word.!!

Misschien dat jij het begrijpt.

Groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op vr 15 05 2009, 13:26:25
Beste Marcel,

Je gebruikt de variabelen strName en BlockNaam, maar BlockNaam moet
dezelfde inhoud krijgen als strName met .dwg.
Dat laatste zie ik nergens geschieden.
Door je initialisatie
Private Sub UserForm_Initialize()
  BlockNaam = "c:\AanvoerO.dwg"
  optbutton4.Value = True
End Sub

wordt dus de tekening AanvoerO.dwg altijd ingevoegd.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op vr 15 05 2009, 15:18:20
Hi Hofcad,

Dank je, maar daar was ik inmiddels ook achter.
Ik krijg nu dus alle previews, en kan de juiste blocken invoegen.

Het probleem wat ik nu nog zou willen verhelpen is dat de blocken niet op de goede laag binnenkomen.
Wel als ik ze explodeer met:
Blok.Explode

Maar het probleem wat ik dan krijg is dat er over het blok een soort van polylijn getekend wordt die in de actieve laag komt te staan.
De blocken staan dan wel in de goede laag, maar er zit een lijn overheen die dat niet is.

RaRa..?

Ik snap er niks van..

Groeten, Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op vr 15 05 2009, 15:57:56
Citaat van: marcelmaas op vr 15 05 2009, 15:18:20
Hi Hofcad,

Dank je, maar daar was ik inmiddels ook achter.
Ik krijg nu dus alle previews, en kan de juiste blocken invoegen.

Het probleem wat ik nu nog zou willen verhelpen is dat de blocken niet op de goede laag binnenkomen.
Wel als ik ze explodeer met:
Blok.Explode

Maar het probleem wat ik dan krijg is dat er over het blok een soort van polylijn getekend wordt die in de actieve laag komt te staan.
De blocken staan dan wel in de goede laag, maar er zit een lijn overheen die dat niet is.

RaRa..?

Ik snap er niks van..

Groeten, Marcel..
Beste Marcel,

Kan ik zo ook niet volgen, of je moet een tekening sturen.

Je blockreferenties worden op de aktieve laag geplaatst,
waarbij alleen het uiterlijk van het block verandererd als
de elementen van het block op laag 0 getekend of als
de kleur bijv. niet ByLayer maar ByBlock staat.
Dat je de blockreferenties moet exploderen, lijkt mij sterk.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op vr 15 05 2009, 16:19:31
Hi Hofcad,

Ik heb twee tekeningen bijgevoegd.

RetourO is het block wat ik gebruik om in te voegen.
RetourO_ingevoegd is de tekening nadat ik hem heb ingevoegd.

zoals je in RetourO_ingevoegd kunt zien is er een soort polylijn bijgekomen.

Ik weet niet hoe dit kan.

Misschien dat jij een idee hebt.?

Groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op vr 15 05 2009, 16:34:49
Citaat van: marcelmaas op vr 15 05 2009, 16:19:31
Hi Hofcad,

Ik heb twee tekeningen bijgevoegd.

RetourO is het block wat ik gebruik om in te voegen.
RetourO_ingevoegd is de tekening nadat ik hem heb ingevoegd.

zoals je in RetourO_ingevoegd kunt zien is er een soort polylijn bijgekomen.

Ik weet niet hoe dit kan.

Misschien dat jij een idee hebt.?

Groeten Marcel..

Beste Marcel,

In RetourO_ingevoegd 4 objecten(1 Line, 1 Lwpolyline, 1 Text en 1 Blockreference.
Voeg je block niet 2x in, want ik zie zowel in de procedure cmdOK_Click
    Set Blok = ThisDrawing.ModelSpace.InsertBlock(InspntBlok, BlockNaam, Schaal, Schaal, Schaal, Rotation)
    ThisDrawing.Regen (acActiveViewport)

en ik zie in de procedure UserForm_Click
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, strName, 1#, 1#, 1#, 0).
Waarschijnlijk heb je in de tekening RetourO_ingevoegd een van de twee blockreferenties
geexplodeerd.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op vr 15 05 2009, 19:26:21
Hi Hofcad,

Ik heb inderdaad bij userform_click de code uitgezet en nu werkt het nog steeds, dus die stond er dubbel/teveel in.
Dank je voor de tip.!!

Ik heb ook besloten dat ik het block niet vooraf wil exploderen, dat is eigenlijk beter.
Alleen moet ik nu nog de blocken in de goede laag laten invoegen.
Ik het 8 verschillende blocken, 4 moeten er in de laag HH_R_AANVOER komen en 4 in de laag HH_R_RETOUR

Ik kan een block op de een bepaalde laag laten invoegen middels:
Blok.Layer = "HH_R_AANVOER"

Maar in mijn geval is dit afhankelijk van welke optbutton je aan aangeklikt hebt.

Weet jij hoet ik dat zou kunnen doen.
Ik begrijp dat het met een array zou kunnen maar daar begrijp ik nog niet veel van.




Groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op ma 18 05 2009, 11:27:18
Beste Marcel,

Misschien heb je iets aan de bijlage.
In HofCAD03.dvb worden nl de blocks en de lagen aangemaakt.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op ma 18 05 2009, 12:48:16
Hi Hofcad,

WAUW.....!!!!!

Mooi gedaan zeg, dit was mij voorlopig zelf nog niet gelukt.
Ik hoop over enkele weken als ik de 4 daagse vba training heb gehad van ir. R. Boeklagen, dat mij dit soort dingen ook lukt.

In ieder geval weer heel erg bedankt voor de goeie hulp.

Groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op ma 18 05 2009, 14:08:42
Hi Hofcad,

Nu ik aan het testen ben, kom ik er achter dat er iets nog niet helemaal goed gaat.

Het is namelijk zo dat als ik mijn tekening een beetje verdraai met USC Object (wat ik veel gebruik), dat dan het block wat ik invoeg niet geplaatst wordt zoals op de preview van het formulier, maar wel ten opzichte van USC World goed geplaatst word.

Dus als ik nieuwe tekening open dan gaat het goed, maar verdraai ik de tekening wat met de klok mee of tegen de klok in, dan staat het block er niet recht in.

Groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op ma 18 05 2009, 14:25:16
Beste Marcel,

In de AutoCAD Help kun je dit vinden:
Sub Ch8_TranslateCoordinates()
    ' Create a polyline in model space.
    Dim plineObj As AcadPolyline
    Dim points(0 To 14) As Double

    ' Define the 2D polyline points
    points(0) = 1: points(1) = 1: points(2) = 0
    points(3) = 1: points(4) = 2: points(5) = 0
    points(6) = 2: points(7) = 2: points(8) = 0
    points(9) = 3: points(10) = 2: points(11) = 0
    points(12) = 4: points(13) = 4: points(14) = 0

    ' Create a light weight Polyline object in model space
    Set plineObj = ThisDrawing.ModelSpace.AddPolyline(points)

    ' Find the X and Y coordinates of the
    ' first vertex of the polyline
    Dim firstVertex As Variant
    firstVertex = plineObj.Coordinate(0)

    ' Find the Z coordinate for the polyline
    ' using the elevation property
    firstVertex(2) = plineObj.Elevation

    ' Change the normal for the pline so that the
    ' difference between the coordinate systems
    ' is obvious.
    Dim plineNormal(0 To 2) As Double
    plineNormal(0) = 0#
    plineNormal(1) = 1#
    plineNormal(2) = 2#
    plineObj.Normal = plineNormal

    ' Translate the OCS coordinate into WCS
    Dim coordinateWCS As Variant
    coordinateWCS = ThisDrawing.Utility.TranslateCoordinates _
          (firstVertex, acOCS, acWorld, False, plineNormal)

    ' Display the coordinates of the point
    MsgBox "The first vertex has the following coordinates:" _
           & vbCrLf & "OCS: " & firstVertex(0) & ", " & _
           firstVertex(1) & ", " & firstVertex(2) & vbCrLf & _
           "WCS: " & coordinateWCS(0) & ", " & _
           coordinateWCS(1) & ", " & coordinateWCS(2)
End Sub

Verder moet je ook nog je teksten in de juiste tekststijl plaatsen:
Function newStyle(StyleName)
Dim StyleObj As AcadTextStyle
Dim currStyle As AcadTextStyle
Set styleColl = ThisDrawing.TextStyles
Set currStyle = ThisDrawing.ActiveTextStyle
On Error Resume Next
Set StyleObj = ThisDrawing.TextStyles.Item(StyleName)
If Err Then
Set StyleObj = styleColl.Add(StyleName)
Err.Clear
End If
StyleObj.SetFont "Arial", False, False, 0, 34
ThisDrawing.ActiveTextStyle = StyleObj
End Function

Met vriendelijke groet, HofCAD CSI.

PS In de bijlage boven is HofCAD03.dvb aangepast met newStyle en
textObj.StyleName = "Standard"
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op ma 18 05 2009, 16:28:36
Hi Hofcad,

Ik heb de bovenste code in de cmdOK_click gezet en uitgeprobeerd, maar waarschijnlijk denk ik weer te makkelijk.
Het werkt zo namelijk nog niet.
Moet er nog iets gewijzigd worden aan de code, of doe ik iets fout?

groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op ma 18 05 2009, 17:51:09
Beste Marcel,

Je bedoelt waarschijnlijk TranslateCoordinates, kijk daarvoor naar bijv.:
http://discussion.autodesk.com/forums/message.jspa?messageID=5314936
http://www.cadforums.net/ftopic6881.html
en http://www.cadtutor.net/forum/showthread.php?t=23468 met Sub InsertWithReference
Sub InsertWithUcs()
Dim varInsertPt As Variant
Dim varInsertPtTran As Variant
Dim entInsert As AcadBlockReference
Dim dblOr(2) As Double
Dim dblX(2) As Double
Dim dblZ(2) As Double
Dim varZ As Variant
Dim varX As Variant
Dim dblAngle As Double
dblX(0) = 1#: dblZ(2) = 1#
With ThisDrawing
varZ = .Utility.TranslateCoordinates(dblZ, acUCS, acWorld, 1)
varInsertPt = .Utility.GetPoint(, Chr(10) & "Voer het Invoegpunt in:")
varX = .Utility.TranslateCoordinates(dblX, acOCS, acUCS, 1, varZ)
dblAngle = .Utility.AngleFromXAxis(dblOr, varX)
Set entInsert = .ModelSpace.InsertBlock(varInsertPt, "AanvoerO", 1#, 1#, 1#, -dblAngle) 'adjust block name as needed
End With
End Sub

want in de bijlage boven is HofCAD03.dvb aangepast met newStyle en
textObj.StyleName = "Standard".

Met vriendelijke groet, HofCAD CSI.

PS Probeer de Sub InsertWithUcs eens uit in een tekening waarin
het block AanvoerO aanwezig is en het coordinatenstelsel bijv. 30 graden
gedraaid is.
Laat me het AUB weten of dit het is, want dan verander ik HofCAD03.dvb
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op ma 18 05 2009, 20:28:44
Hi Hofcad,

Ik kan je bestand niet openen, het is niet de goede extensie ofzo.
Ik heb al geprobeerd het .bas bestand op te slaan als .dvb bestand maar dat werkte niet.
Zou je het opnieuw er op willen zetten.?

groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op di 19 05 2009, 09:24:53
Beste Marcel,

Een *.bas bestand kan je in de Visual Basic editor importeren(VBAIDE->File->'Import File...').
Het bas bestand is eigenlijk een tekstbestand wat met Notepad is aangemaakt, en gebruikt
werd bij de voorganger van Visual Basic.
In het bestand staan twee sub's die je kan gebruiken als in de tekening het block AanvoerO zit.
Bij de sub InsertWithReference (http://www.cadtutor.net/forum/showthread.php?t=23468)
kan je het block bij het invoegen verdraaien.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op di 19 05 2009, 09:47:29
Hi Hofcad,

Ik heb: 'Sub InsertWithReference()' geprobeerd en die werkt wel, alleen moet ik daar een keer klikken om het block neer te zetten, en dan nog een keer voor een angle aan te geven waarin het block geplaats moet worden.

Ook heb ik:  'Sub InsertWithUcs()' geprobeerd, en die werkt zonder problemen, dus als we die kunnen gebruiken zou dat helemaal top zijn.!!

Groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op di 19 05 2009, 10:22:53
Beste Marcel,

Probeer eens.
Vraag 1: Hebben de tekeningen altijd dezelfde schaal, want anders zou je
bijv. de invoegschaal afhankelijk van de AutoCAD variabele Dimscale.
Vraag 2: Vind je het niet gevaarlijk de tekststijl Standard te gebruiken met
het font Arial, daar de naam Standard niet opvalt als een eigen stijl.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op di 19 05 2009, 11:33:14
Hi Hofcad,

Nu komt het block er in zoals het zou moeten, perfect!!

Inderdaad werkt het nu wel bij een tekening waar deze blocken al in staan, maar gaat het niet goed als ik een nieuwe tekening open.
Dan komt het block er veel te groot in.!!

1. Wij tekenen altijd 1:1 en meestal drukken we af op schaal 1:50

2. De tekststyle mag standard zijn, met het font romans.shx
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op di 19 05 2009, 13:40:34
Beste Marcel,

Met alle medewerkers van de tekenkamer is daarover normaal gesproken een afspraak.
Bijv. dat je alle symbolen met de Dimscale verschaalt en dat bijv. de tekststijl naar
de firmanaam is genoemd.
De naam Standard voor tekststijl of voor bijv. een dimstijl vind ik gevaarlijk,
omdat anderen deze stijlnaam ook kunnen toepassen in een programma of in
een block met een andere definitie.
Als je de symbolen altijd met de Dimscale verschaalt, dan zal de definitie
in het programma waarschijnlijk 50 keer zo klein moeten zijn.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op di 19 05 2009, 13:49:19
Hi Hofcad,

Ik had het hier nog eens nagevragen en wij kwamen hier tot de conclusie dat we nog niet echt een bedrijfs dimstyle hebben, maar dat het inderdaad wel beter is als we die wel gaan toepassen.

De dimstyle gaan we dan HCKP noemen en de font romans.


Groeten Marcel..

Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op di 19 05 2009, 14:30:08
Hi Hofcad,

Jij zegt:

Als je de symbolen altijd met de Dimscale verschaalt, dan zal de definitie
in het programma waarschijnlijk 50 keer zo klein moeten zijn.

Wat bedoel je daar precies mee..??

De blocken die ik met dit programma wil invoegen zouden toch gewoon 1:1 getekend kunnen worden.?

groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op di 19 05 2009, 15:14:05
Beste Marcel,

In het programma heeft de tekst een teksthoogte van resp. 100 en 90 en dat wordt
bij 50x verkleinen 2 en 1.8.
Als ik een tekst  van 2 in een block bij het invoegen 50x zo groot invoeg, zal de
tekst dus weer 100 zijn.
Bij het plotten met een plotschaal 1:50 zal de tekst op papier 2 hoog zijn.

Als je de tekening bij het plotten 50x verkleint, houdt dat in dat de bemating 50x zo groot getekend
moet als bij het 1:1 plotten.
Inplaats van alle dimstyle instellingen die iets met grootte (Bijv. DIMASZ, DIMEXE, DIMEXO en DIMTXT)
te maken te wijzigen, kun je ook in de dialoogbox bij het tabblad Fit bij 'Scale for dimension features'
de scale veranderen.
In feite verander je dan de Dimscale in je DimStyle.

Ik maak een verschil tussen blocken van symbolen en blocken van objecten.
Een block van een bed met ware afmetingen zie ik als een block van een object
en deze plaats altijd 1:1, omdat ik de kamer ook 1:1 teken.
Een block van een windroos zie ik als een block van een symbool en deze plaats
ik in afhankelijkheid van de plotschaal.

Als iedereen op de tekenkamer de discipline heeft om bij aanvang van een tekening
de Dimscale op de omgekeerde plotschaal te zetten (1:50 geeft 50), dan kan je
in je programma zetten:
Schaal = ThisDrawing.GetVariable("DIMSCALE") :    Rotation = 0
Een andere oplossing is dat je in de dialoogbox een instelmogelijkheid geeft voor
de schaal.



Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op di 19 05 2009, 16:01:30
Hi Hofcad,

jij zegt:
Inplaats van alle dimstyle instellingen die iets met grootte (Bijv. DIMASZ, DIMEXE, DIMEXO en DIMTXT)
te maken te wijzigen, kun je ook in de dialoogbox bij het tabblad Fit bij 'Scale for dimension features'
de scale veranderen.

Wij werken meestal met tekeningen van derden, dus voor ons zou het denk ik het makkelijkst zijn als de blocken er gewoon 1:1 in zouden komen.

Hoe kan ik dat het makkelijkst voor elkaar krijgen.?

groeten Marcel..

Titel: Re:welk commando voor insert block
Bericht door: HofCAD op di 19 05 2009, 18:46:04
Citaat van: marcelmaas op di 19 05 2009, 16:01:30
Hi Hofcad,

jij zegt:
Inplaats van alle dimstyle instellingen die iets met grootte (Bijv. DIMASZ, DIMEXE, DIMEXO en DIMTXT)
te maken te wijzigen, kun je ook in de dialoogbox bij het tabblad Fit bij 'Scale for dimension features'
de scale veranderen.

Wij werken meestal met tekeningen van derden, dus voor ons zou het denk ik het makkelijkst zijn als de blocken er gewoon 1:1 in zouden komen.

Hoe kan ik dat het makkelijkst voor elkaar krijgen.?

groeten Marcel..


Beste Marcel,

Je wilt kiezen om de blocks InvoerX en RetourX met schaal 1 in te voegen,
wat voor mij eigenlijk het minst logisch is als bijv. kijkt naar StabiCAD
en Nordined.
Als je dat wilt bereiken dan moet je voor iedere schaal een block aanmaken.
Je zou dat kunnen bereiken door een Setup programma te maken, wat alle
benodigde blocks aanmaakt bij een bepaalde schaal.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op di 19 05 2009, 18:49:10
Hi Hofcad,

Zoals ik al eerder zei tekenen wij bij gebruik van deze blocks altijd 1:1, en altijd 1:50 plotten.
Dus wij hoeven deze blocken nooit te verschalen, absoluut nooit.
Dus dan maakt het toch niet uit?

groeten Marcel..
Titel: Re:welk commando voor insert block
Bericht door: HofCAD op di 19 05 2009, 19:16:57
Citaat van: marcelmaas op di 19 05 2009, 18:49:10
Hi Hofcad,

Zoals ik al eerder zei tekenen wij bij gebruik van deze blocks altijd 1:1, en altijd 1:50 plotten.
Dus wij hoeven deze blocken nooit te verschalen, absoluut nooit.
Dus dan maakt het toch niet uit?

groeten Marcel..

Beste Marcel,

Je hebt niet eerder gezegd: bij gebruik van deze blocks altijd 1:1, en altijd 1:50 plotten
maar je hebt gezegd:1. Wij tekenen altijd 1:1 en meestal drukken we af op schaal 1:50
en tussen altijd en meestal zit een verschil.
Als het altijd is, dan is het hele vraagstuk van verschaling overbodig en kun je de laatste versie van
het programma gebruiken.
Je hoeft dan alleen eventueel in de Function newStyle de naam Standard  in HCKP te veranderen,
en het font Arial  te veranderen in Romans.
Verder moet je dan in Retour en Aanvoer de regel newStyle ("Standard") en de regel
textObj.StyleName = "Standard" resp. veranderen in newStyle ("HCKP") en in textObj.StyleName = "HCKP".

Indien men niet altijd 1:50 plot, dan is dat men meestal werkt met tekeningen van derden geen argument,
omdat ik in een toegestuurde tekening  heb gezien dat er 569 blockreferenties  waren met een schaal ongelijk 1.


Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block
Bericht door: marcelmaas op di 19 05 2009, 21:02:16
Hi Hofcad,

Het werkt nu inderdaad, en ook met het ucs verhaal erbij is het programma nu denk ik wel compleet.
Ik ga het nu in de praktijk testen, en hoop dan geen gekke dingen meer tegen te komen.
Ik moet wel zeggen dat hier thuis op mijn laptop het plaatsen van een block wel even duurt als ik die 'regen' aan laat staan.
Als ik die regel even uitzet dan gaat het supersnel.
Misschien gaat het op mijn werk morgen toch een stuk sneller, dus ook dat ga ik even testen.

Verder ben ik weer heel blij met dit resultaat, al heb ik het niet helemaal zelf gemaakt.
Ik heb er ook weer veel van geleerd, en dat is ook zeker een van de leuke bijkomstigheden.
Als je je bezig gaat houden met programmeren dan leer je de mogelijkheden van autocad ook beter kennen.!!!

Dank je voor de snelle en goede hulp.. :vreegoe: :vreegoe:

groeten Marcel..
Titel: Re:welk commando voor insert block (opgelost)
Bericht door: marcelmaas op wo 20 05 2009, 08:19:51
Beste Hofcad,

Het werkt hier op mijn werk nog steeds zo als gisteren.
In een tekening waar deze blocken al in staan komen deze blocken er even groot in.

Maar in een lege tekening komen deze blocken er ongeveer 25 keer groter in.!!
Heb ik ergens een instelling fout staan, ik heb al gekeken maar kan het niet vinden.

Weet jij hoe ik dit kan veranderen?

groeten Marcel..
Titel: Re:welk commando voor insert block (opgelost)
Bericht door: HofCAD op wo 20 05 2009, 09:03:57
Beste Marcel,

In de tekening RetourO_ingevoegd staan de blocks, waarbij RetourO een ruit van 125 heeft
en AanvoerO een cirkel van 75 heeft.
In de resp. subs Retour en Aanvoer worden deze blocks en de andere  op deze grootte
aangemaakt, als ze nog niet bestaan in de tekening.
Dus als in je sub cmdOK_Click staat:
    Schaal = 1:    Rotation = 0
    Set Blok = .ModelSpace.InsertBlock(Inspnt, StrName, Schaal, Schaal, Schaal, -dblAngle)
kan het niet anders dat je de resp. afmeting van 125 en 75 krijgt.
Controleer dus in een lege tekening hoe groot de blocks worden.
Heb je een totaal andere versie dan HofCAD03.dvb?

Met vriendelijke groet, HofCAD CSI.




Titel: Re:welk commando voor insert block (opgelost)
Bericht door: marcelmaas op wo 20 05 2009, 10:10:09
Beste Hofcad,

Ik ben er nu achter dat bij mij bij format/units de insertion scale staat ingesteld op inches.
Dit kun je veranderen naar Millimeters en dan staat er rechts onder in de dialoogbox insert voor het inserten van een block, bij blockunit de factor op 1.0000, als de insertionscale op inches staat dan staat daar 0.0394.
Als die op Millimeters staat dan gaat het goed, maar anders natuurlijk niet.


Heb jij een idee waar ik dat kan veranderen zodat de insertion scale standaard op millimeter blijft staan?

groeten Marcel..
Titel: Re:welk commando voor insert block (opgelost)
Bericht door: HofCAD op wo 20 05 2009, 10:35:02
Beste Marcel,

Als je een nieuwe tekening stat met de template Acadiso.dwt staat de AutoCAD
variabele Insunits op 4, en start je hem op Acad.dwt dan staat de Insunits op 1.
Kijk dus naar welke template je gebruikt, en verander deze eventueel.
De Insunits wordt opgeslagen in de tekening en niet in de Registry.

Met vriendelijke groet, HofCAD CSI.

PS Zie bijv. http://www.cadsite.be/smf/index.php?topic=2757.msg14093#msg14093
Titel: Re:welk commando voor insert block (opgelost)
Bericht door: marcelmaas op wo 20 05 2009, 11:08:40
Beste Hofcad,

Inderdaad ik had de verkeerde.!!

Nou werkt het hier ook zoals het hoort.
Ik ben er blij mee, dank je.!!!

Opgelost dus..

groeten Marcel..
Titel: Re:welk commando voor insert block (opgelost)
Bericht door: marcelmaas op ma 25 05 2009, 09:26:28
Beste hofcad,

Ik heb een probleem met mijn Aanvoer_Retour project.
Sinds vandaag krijg ik bijgevoegde foutmelding.

Weet jij wat ik fout doe?

groeten Marcel..
Titel: Re:welk commando voor insert block (opgelost)
Bericht door: HofCAD op ma 25 05 2009, 09:41:25
Beste Marcel,

Heb je soms in de Visual Basic editor bij Tools->References...  een reference
uitgevinkt?
Voor het project zijn onderstaande references (of andere versies) nodig:
1. Visual Basic For Applications
2. AutoCAD 2008 Type Library
3. Microsoft Forms 2.0 Object Library

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block (opgelost)
Bericht door: marcelmaas op ma 25 05 2009, 10:20:32
Beste hofcad,

Er stond daar inderdaad iets niet goed.
Maar dat is ook weer opgelost, dank je voor je snelle hulp.!!!
Maar nou ben ik meteen wel benieuwd naar hoe je dit soort problemen kunt voorkomen als je een project maakt en het dan op meerdere computers verspreid.

Kan ik voorkomen dat collega's bij mij komen met de melding dat er iets niet goed gaat ?
Is dat ook met vba in te stellen, of gaat dat te ver ?

groeten Marcel..
Titel: Re:welk commando voor insert block (opgelost)
Bericht door: HofCAD op ma 25 05 2009, 10:27:35
Beste Marcel,

Daar weet ik niet zo snel een antwoord op :oops:, maar ik denk dat je dan Visual Basic
moet aanschaffen en je dan moet compileren.
Misschien zou je ook voor de werkelijke start kunnen testen of bijv. Chr werkt
met vooraf zoiets als 'On Error Resume Next'.

Met vriendelijke groet, HofCAD CSI.
Titel: Re:welk commando voor insert block (opgelost)
Bericht door: marcelmaas op ma 25 05 2009, 10:39:32
Beste Hofcad,

Ja okay, ik snap het.
Ik ga het zo wel proberen.

Misschien een leuke vraag voor op de cursus van binnenkort!!

groeten Marcel..