FastFiber

welk commando voor insert block (opgelost)

Gestart door marcelmaas, do 07 05 2009, 20:27:36

Vorige topic - Volgende topic

marcelmaas

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..

HofCAD

#1
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.
ACADcadabra

marcelmaas

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..

HofCAD

#3
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.
ACADcadabra

marcelmaas

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..

HofCAD

#5
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.
ACADcadabra

marcelmaas

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..

HofCAD

#7
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.
ACADcadabra

marcelmaas

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..

HofCAD

#9
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.
ACADcadabra

marcelmaas

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..

marcelmaas

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:

marcelmaas

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..

HofCAD

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.
ACADcadabra

marcelmaas

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..