Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Bitte um Hilfe bei .InsertBlock

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Bitte um Hilfe bei .InsertBlock (818 mal gelesen)
jimbo3
Mitglied



Sehen Sie sich das Profil von jimbo3 an!   Senden Sie eine Private Message an jimbo3  Schreiben Sie einen Gästebucheintrag für jimbo3

Beiträge: 13
Registriert: 21.01.2009

Civil 3D 2009

erstellt am: 02. Feb. 2009 19:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen!

Habe wieder mal ein Problem.

Folgender Code:
Private Sub Anwenden_Click()
Dim Visioblock
Dim min(1 To 10)
Dim max(1 To 10)
Dim insans(0 To 2)
Dim fuege(0 To 2)
Dim unit As Double
Dim ampfak

punktnr = PktNr
punktans = PktAns
punktt = PktTiefe
ampfak = AmpF
If PktNr <> "" Then SearchToPNR Else Call MsgBox("Punktnummer eingeben", vbOKOnly, "Punktnummer fehlt"): Eingabe.Hide: Eingabe.Show

Dim i
For i = 1 To 10
    min(i) = GetSetting("Visio", "Min", "min" & i, min(i))
    max(i) = GetSetting("Visio", "Max", "max" & i, max(i))
Next

i = 1
Do Until ampfak >= min(i) And ampfak <= max(i)
    i = i + 1
Loop
Visioblock = "visio" & i

Call MsgBox(Visioblock)


Bname = "visio" & i
Layersetzen ("visio" & i)
Blocksetzen ("visio" & i)

fuege(0) = GetSetting("Visio", "Einfüge", "insans(0)", insans(0))
fuege(1) = GetSetting("Visio", "Einfüge", "insans(1)", insans(1))
fuege(2) = GetSetting("Visio", "Einfüge", "insans(2)", insans(2))
units

ThisDrawing.ModelSpace.InsertBlock fuege, Bname, unit, unit, unit, 0

End Sub


Bekomme immer die Fehlermeldung: Laufzeitfehler '5': ungültiger Prozeduraufruf oder ungültiges Argument

Ich finde den Fehler nicht.

Bitte um Eure Hilfe

------------------
Danke

Jimbo3

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 02. Feb. 2009 22:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jimbo3 10 Unities + Antwort hilfreich

Hallo Jimbo3,
Muß schon sagen, Dein Programmierstil ist *räusper* *hüstel* etwas ungewöhnlich.
Schon mal was davon gehört, dass man Objekten auch Zuordnungen geben kann?
Einige Anmerkungen wären auch ganz hilfreich, wenn Du hier Hilfe erwartest.
Vermute mal Eingabe ist ein Formular?
Wenn der "Laufzeitfehler '5': ungültiger Prozeduraufruf oder ungültiges Argument" kommt, wo steht der Debugger?
Und was möchtest Du eigendlich machen?
So finde ich den Fehler auch nicht.
Grüße,
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

jimbo3
Mitglied



Sehen Sie sich das Profil von jimbo3 an!   Senden Sie eine Private Message an jimbo3  Schreiben Sie einen Gästebucheintrag für jimbo3

Beiträge: 13
Registriert: 21.01.2009

Civil 3D 2009

erstellt am: 02. Feb. 2009 23:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Klaus,
ja mein stil ist.... (habe erst angefangen zu lernen)

Kannst du mir bitte dass mit den Zuordnungen erklären?

Ja, die Eingabe erfolgt über ein Formular.

Der Debugger bleibt auf thisdrawing.modelspace.insert..... stehen.

Ich möchte dann eben den Block(Bname) am Punkt(fuege)mit den Skalierungsfaktor(unit) und Winkel (0°) einfügen.

Jetzt nochmal der Code mit Kommentaren (sry vergessen)

Private Sub Anwenden_Click()'Schaltfläche aktiviert Programm
Dim Visioblock  '
Dim min(1 To 10)'Min-Werte
Dim max(1 To 10)'Max-Werte
Dim insans(0 To 2)'Werte aus Registry
Dim fuege(0 To 2)'Insertpoint Block
Dim unit As Double'Skalierungsfaktoren
Dim ampfak        'Wert aus Formular

punktnr = PktNr  'Wert aus Formular
punktans = PktAns 'Wert aus Formular
punktt = PktTiefe 'Wert aus Formular
ampfak = AmpF    'Wert aus Formular

If PktNr <> "" Then SearchToPNR Else Call MsgBox("Punktnummer eingeben", vbOKOnly, "Punktnummer fehlt"): Eingabe.Hide: Eingabe.Show
'Wenn Punktnummer vorhanden-->mit SearchToPnr suchen

Dim i
For i = 1 To 10 ' Werte aus Registry holen
    min(i) = GetSetting("Visio", "Min", "min" & i, min(i))
    max(i) = GetSetting("Visio", "Max", "max" & i, max(i))
Next

i = 1
Do Until ampfak >= min(i) And ampfak <= max(i) 'Abfrage ob der Wert Ampfak zwischen den    Werten aus dem Formular(Registry) liegt
    i = i + 1
Loop
Visioblock = "visio" & i 'Blocknamen festlegen

Call MsgBox(Visioblock)


Bname = "visio" & i
Layersetzen ("visio" & i)'Programm zum Layersetzen
Blocksetzen ("visio" & i)'Programm zum Blockholen aus anderer Zeichnung

fuege(0) = GetSetting("Visio", "Einfüge", "insans(0)", insans(0))'Einfügepunkt festlegen
fuege(1) = GetSetting("Visio", "Einfüge", "insans(1)", insans(1))
fuege(2) = GetSetting("Visio", "Einfüge", "insans(2)", insans(2))
units

ThisDrawing.ModelSpace.InsertBlock fuege, Bname, unit, unit, unit, 0  'Block einfügen-->FEHLER

End Sub


Kannst du mir noch bitte sagen was an meinem Stil so ***** ist? Will lernen den Stil zu verbessern.

------------------
Danke

Jimbo3

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 03. Feb. 2009 09:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für jimbo3 10 Unities + Antwort hilfreich

Hallo,
Tja, jeder hat seinen eigenen Stil. Du solltest aber daran denken, dass es schön ist wenn man den Code auch nach fünf Jahren sofort verstehen kann. Dazu gehört für mich eine vernünftige Dokumentation und kein Endloscode.
Siehst Du ja an Deinem Code, das:
Blocksetzen ("visio" & i)'Programm zum Blockholen aus anderer Zeichnung
hat mir dann doch ein * AaaaaaaaJaa ?? * entlockt.

Also statt if .. then ..:.. else ..:..:.. schreib ich das gerne untereinander und häng am Ende noch ein end if dran.
Und Variablen gehören definiert (gerade unter AutoCAD solltest Du Dir das angewöhnen)

Also:
Dim myBlockRef As AcadBlockReference ' Blockobjekt zum einfügen
Dim fuege(0 To 2) as double 'Insertpoint Block
Dim BName as string 'Blockname zum Einfuegen

Set myBlockRef = ThisDrawing.ModelSpace.InsertBlock(fuege, BName, 1, 1, 1, 0)

Die Zuweisung sollte schon sein. Mit einem myBlockRef.update wird der Block dann auch gleich gezeichnet. Auf Attribute kannst Du mit myBlockRef.hasattributes und myBlockRef.getattributes zugreifen.
Aber dazu gibt es im Forum genug Beispiele.

Vielleicht hilft's,
Klaus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

jimbo3
Mitglied



Sehen Sie sich das Profil von jimbo3 an!   Senden Sie eine Private Message an jimbo3  Schreiben Sie einen Gästebucheintrag für jimbo3

Beiträge: 13
Registriert: 21.01.2009

Civil 3D 2009

erstellt am: 03. Feb. 2009 09:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo KlaK,

vielen Dank.

Das mit dem Set habe ich komplett vergessen.
Jetzt funktionierts.
Werde an meinem Stil arbeiten.

------------------
Danke

Jimbo3

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz