| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Wert anzeigen (2836 mal gelesen)
|
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 03. Mrz. 2010 14:25 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 03. Mrz. 2010 14:38 <-- editieren / zitieren -->
Hi, Code:
'wenn Deine BlockReference in tBlRef gespeichert ist: dim tPnt as Variant tPnt = tBlRef.InsertionPoint Call MsgBox("X = " & cstr(tPnt(0)) & " / Y = " & cstr(tPnt(1)))
- alfred - ------------------ www.hollaus.at |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 03. Mrz. 2010 15:46 <-- editieren / zitieren --> Unities abgeben:         
Habe es so angelegt! Aber keine Funktion! Private Sub CommandButton10_Click()
Dim tBlRef As AcadBlockReference Dim tPnt As Variant tPnt = tBlRef.InsertionPoint Call MsgBox("Z_Blatt_Schriftfeld = " & CStr(tPnt(0)) & " / BENENNUNG = " & CStr(tPnt(1))) End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Mrz. 2010 15:49 <-- editieren / zitieren -->
Hi, und wo hast Du festgelegt, auf welche BlockReference die Variable <tBlRef> hinzeigen soll? Irgendwie solltest Du schon angeben, von welcher BlockReference Dir der Einfügepunkt angezeigt werden soll! - alfred - ------------------ www.hollaus.at |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 03. Mrz. 2010 15:55 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 03. Mrz. 2010 16:09 <-- editieren / zitieren -->
Hi, ich mach's mal ohne Programmierung: Du möchtest, dass ich Dir aus Deinem Buch vorlese, Du gibst mir aber das Buch nicht! Dim tBlRef as AcadBlockReference .... Du sagst hier, dass die Variable <tBlRef> eine Blockreference sein wird. .... Du sagst mir, es wird ein Buch sein, aus dem ich lesen soll tPnt = tBlRef.InsertionPoint .... und hier soll jetzt der Einfügepunkt der BlockReference an die Variable <tPnt> übergeben werden .... jetzt soll ich in dem Buch Buchstaben erkennen ==> Du hast mir aber das Buch noch nicht gegeben! ==> Du hast der Variable <tBlRef> noch keine BlockReference zugewiesen, willst aber schon den Einfügepunkt haben
Natürlich kann ich jetzt dieses schreiben
Code: Dim tEnt as AcadEntity dim tPnt as Variant ThisDrawing.Utility.GetEntity(tEnt,tPnt) If TypeOf tEnt Is AcadBlockReference Then tPnt = tEnt.InsertionPoint
Aber die BlockReference auszuwählen, wenn Du diese in Deinem Programm eigentlich schon haben solltest, wird wahrscheinlich nichts helfen. - alfred - ------------------ www.hollaus.at [Diese Nachricht wurde von a.n. am 03. Mrz. 2010 editiert.] |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 03. Mrz. 2010 16:24 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 03. Mrz. 2010 16:31 <-- editieren / zitieren -->
Hi, >> Gibt doch kein Buch ;-) Und gibt auch keine Blockreference, von der etwas auszugeben wäre :-) >> Tool spuck mir aus: von Block xy das attribut yx!
von welcher Blockreference? - alfred - ------------------ www.hollaus.at |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 03. Mrz. 2010 16:34 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 03. Mrz. 2010 16:40 <-- editieren / zitieren -->
Hi, wenn ich frage 'welche Blockreference', dann meine ich damit: Du hast einen oder mehrere Blöcke (Blockreferenzen) in Deiner Zeichnung eingesetzt, sei es im Modellbereich, sei es in verschiedenen Layouts. Dann musst DU dem Programm mitteilen, von welchem der vielen Einfügungen Du jetzt Werte ausgegeben haben willst, das kann das Programm nicht wissen. Wenn der Zeichner einen Stücklistenblock einfügt, dann muss der Zeichner auch wissen, wo er diesen einfügt, wenn Der Zeichner dann Eigenschaften dieses Elements haben will, dann muss der Zeichner das Element selektieren. Und genauso musst Du in Deinem Programm die BlockReference wählen, von der Du Eigenschaften haben willst. Wir nähern uns bedenklich schnell einer Schulung. - alfred - ------------------ www.hollaus.at |
bge Mitglied CAD-Administrator

 Beiträge: 42 Registriert: 23.09.2008 ADT 2007, Mechanical 2009, Inventor 2009, GAIN-System, VBA, VB.NET, AutoLisp
|
erstellt am: 03. Mrz. 2010 16:42 <-- editieren / zitieren --> Unities abgeben:          Nur für f-m
Ganz einfach: Zwischen Dim tBlRef As AcadBlockReference und tPnt = tBlRef.InsertionPoint fehlt noch eine Set-Anweisung Also: Dim tBlRef As AcadBlockReference set tblRef = ... tPnt = tBlRef.InsertionPoint ------------------ Bernd Gerstenberger Dipl.-Geogr., MCSE, CAD-Administrator Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 03. Mrz. 2010 16:54 <-- editieren / zitieren --> Unities abgeben:         
|
bge Mitglied CAD-Administrator

 Beiträge: 42 Registriert: 23.09.2008 ADT 2007, Mechanical 2009, Inventor 2009, GAIN-System, VBA, VB.NET, AutoLisp
|
erstellt am: 03. Mrz. 2010 17:25 <-- editieren / zitieren --> Unities abgeben:          Nur für f-m
|
Ex-Mitglied
|
erstellt am: 03. Mrz. 2010 18:43 <-- editieren / zitieren -->
Hi, >> jetzt bin ich verwirrt! Wenn sich das auf meine Antwort bezieht, dann versuch ich's nochmals anders (und sag jetzt bitte nicht, dass es keinen Tisch gibt ): Du hast eine Zeichnung von einem Restaurant, in diesem sind mehrere Tische eingefügt. Daher hast Du eine Blockdefinition TISCH gemacht (wie eben ein Tisch aussehen sollte) und im Grundriss hast Du mit dem Einfügebefehl mehrmals einen Tisch positioniert (das sind dann die Blockreferenzen). Jetzt stellst Du die Frage, wo steht der Tisch (Einfügepunkt) ==> und da musst Du Deinem Programm mitgeben, von welchem der 25 Tische Du sprichst, also musst Du mit Set tBlRef = <<<< hier angeben, von welchem Tisch Du sprichst, umgebaut auf Dein Beispiel, von welcher Blockreferenz Namens 'Stückliste-1' Du die Eigenschaften haben willst. Ich hoffe, das war jetzt verständlicher. Ich sehe das Hauptproblem darin, dass Deine Auffassung von Blockdefinition (in AutoCAD Typ AcadBlock, erzeugbar durch den Befehl BLOCK) und Blockreferenz (in AutoCAD Typ AcadBlockReference, erzeugbar durch den Befehl EINFÜGE) durcheinander gekommen sind. Mach Dich damit mal schlau. - alfred - ------------------ www.hollaus.at [Diese Nachricht wurde von a.n. am 03. Mrz. 2010 editiert.] |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 03. Mrz. 2010 21:07 <-- editieren / zitieren --> Unities abgeben:         
|
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 03. Mrz. 2010 22:32 <-- editieren / zitieren --> Unities abgeben:          Nur für f-m
Hallo, ich glaube hier müsste der Kollege mal genauer sagen, was er will, oder ein Beispiel geben. Mir scheint, Ihr redet aneinander vorbei; f-m geht es gar nicht um den XY-insertionpoint, sondern um die Werte von irgendwelchen Attributen, die im ausgewählten Block enthalten sind. Oder um den Wert eines bestimmten Attributs?? Ich weiß auch nicht, was er will. Hier hab ich was aus Codeschnipseln zusammengesetzt, funktioniert so wahrscheinlich nicht, weil ich hier kein AC habe, aber vielleicht reichts, dass der eine oder andere von seinem Schlauch runter kommt. Code: Sub ZeigMirDieAttributeVonDiesemBlock Dim texT1$ Dim bloRef As AcadBlockReference Dim varAttrefs As Variant Dim I1 As Long Dim tEnt as AcadEntity 'ich habe hier eigentlich AcadObject Dim tPnt as Variant texT1 = "" ThisDrawing.Utility.GetEntity(tEnt,tPnt) If tEnt.ObjectName = "AcDbBlockReference" Then Set bloRef = tEnt If bloRef.HasAttributes Then varAttrefs = bloRef.GetAttributes For I1 = LBound(varAttrefs) To UBound(varAttrefs) texT1 = texT1 + UCase$(varAttrefs(I1).TagString) _ + " = "+ varAttrefs(I1).TextString + vbcr Next I1 End If Else texT1 = "Kein Block" End If MsgBox texT1 End Sub
Vielleicht hat er den Block aber auch noch gar nicht, dann muss er das DWG erst noch nach dem richtigen Block durchsuchen? Das geht auch, aber das soll er dann doch mal selbst sagen. MfG, wwwilli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 03. Mrz. 2010 23:21 <-- editieren / zitieren --> Unities abgeben:         
|
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 04. Mrz. 2010 08:51 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 04. Mrz. 2010 08:57 <-- editieren / zitieren -->
Hi, >> Er meckert mir an dieser Stelle, da würde ihm was fehlen! Ist die Zeile (im VBA-Editor) rot? Probiers mal mit:
Code: Call ThisDrawing.Utility.GetEntity(tEnt,tPnt)
- alfred - ------------------ www.hollaus.at |
bge Mitglied CAD-Administrator

 Beiträge: 42 Registriert: 23.09.2008 ADT 2007, Mechanical 2009, Inventor 2009, GAIN-System, VBA, VB.NET, AutoLisp
|
erstellt am: 04. Mrz. 2010 09:05 <-- editieren / zitieren --> Unities abgeben:          Nur für f-m
In der Zeile ThisDrawing.Utility.GetEntity (tEnt, tPnt) die Klammer entferne, dann passt es: ThisDrawing.Utility.GetEntity tEnt, tPnt ------------------ Bernd Gerstenberger Dipl.-Geogr., MCSE, CAD-Administrator Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 04. Mrz. 2010 10:34 <-- editieren / zitieren --> Unities abgeben:          Nur für f-m
So, ja, danke, damit tuts auch bei mir, was ich gedacht hatte. Jetzt wäre f-m wieder dran. Eventuell fehlt ihm noch, dass ein bestimmter Block gesucht wird, dann muss er vielleicht sämtliche AC-Elemente im Layout (ThisDrawing.ActiveLayout) durchlaufen und fragen, ob sie ein Block sind und den richtigen Namen haben und dann Anweisungen aus der obige Routine nach Bedarf dranhängen. Code: For Each tEnt In ThisDrawing.ActiveLayout.Block If tEnt.ObjectName = "AcDbBlockReference" Then If tEnt.Name = "MeinBlock" Then 'mach was End If End If Next tEnt
Oder so ähnlich... MfG, wwwilliEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 04. Mrz. 2010 13:01 <-- editieren / zitieren --> Unities abgeben:         
1: bei Code: ThisDrawing.Utility.GetEntity(tEnt,tPnt)
Ergebnis: wird rot --> Fehler beim Kompilieren Erwartet: = 2: bei Code: Call ThisDrawing.Utility.GetEntity(tEnt,tPnt)
Ergebnis: bleibt er stehen markert gelb den Code! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bge Mitglied CAD-Administrator

 Beiträge: 42 Registriert: 23.09.2008 ADT 2007, Mechanical 2009, Inventor 2009, GAIN-System, VBA, VB.NET, AutoLisp
|
erstellt am: 04. Mrz. 2010 13:10 <-- editieren / zitieren --> Unities abgeben:          Nur für f-m
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ThisDrawing.Utility.GetEntity tEnt, tPnt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ------------------ Bernd Gerstenberger Dipl.-Geogr., MCSE, CAD-Administrator Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 04. Mrz. 2010 13:13 <-- editieren / zitieren -->
Hi, >> Ergebnis: bleibt er stehen markert gelb den Code Na dann guck mal in die Befehlszeile im AutoCAD, es fragt Dich nach einer Objektwahl, oder? @bge
>> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! '!' hilft nix, es geht auch mit Klammern, wenn man 'Call' davorsetzt. - alfred - ------------------ www.hollaus.at |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 04. Mrz. 2010 13:15 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 04. Mrz. 2010 13:44 <-- editieren / zitieren -->
Hi, nur dass Du nicht auf uns wartest, diese Antwort hast Du gelesen? Na dann guck mal in die Befehlszeile im AutoCAD, es fragt Dich nach einer Objektwahl, oder? - alfred - ------------------ www.hollaus.at |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 04. Mrz. 2010 13:56 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 04. Mrz. 2010 14:06 <-- editieren / zitieren -->
Hi, starte das ganze mal nicht über ein Form, sondern direkt als öffentliche Sub. Also machst Du aus Private Sub CommandButton15_Click..... neu: Public Sub TestGetEnt... Dann stellst Du Dich im VBA-Editor direkt in diese Sub hinein (mit dem Cursor einmal hineinklicken, also wolltest Du editieren) und dann auf <F5>. Kommt dann die Fehlermeldung auch? - alfred - ------------------ www.hollaus.at |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 04. Mrz. 2010 14:30 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 04. Mrz. 2010 14:40 <-- editieren / zitieren -->
Hi, darf ich mal eine dezente Frage stellen: mit welchem Produkt und welcher Version arbeitest Du? - alfred - ------------------ www.hollaus.at |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 04. Mrz. 2010 14:43 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 04. Mrz. 2010 15:12 <-- editieren / zitieren -->
Hi, >> AutoCad 2009 Standard! Gibt doch keine probs damit?Nein, zumindest nicht diese Art von Problemen. >> ab 2010 ist kein VBA mehr möglich
Das ist nicht richtig, Du kannst es downloaden und nachinstallieren! Aber das bringt mich auf eine Idee, kann es sein, dass Du Dein DVB-File mal mit einer anderen AutoCAD-Version offen hattest? Schau mal unter Verweise, welche DLL's referenziert sind und mach einen Screenshot für hier.
- alfred - ------------------ www.hollaus.at |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 04. Mrz. 2010 15:26 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 04. Mrz. 2010 15:39 <-- editieren / zitieren -->
Hi, das letzte, was mir jetzt noch einfällt, um weiterzukommen: a) ich darf davon ausgehen, dass Du beim direkten Start der Public Sub ... die Eingabeaufforderung von GetEntity nicht abgebrochen hast oder wohingezeigt hast, wo kein Entity ist. Das wäre mal die erste Voraussetzung. b) Mach mal ein neues DVB-Projekt, dort die Public Sub .... komplett hineinkopieren und von dort starten. Geht es da auch nicht, dann lad dieses neue DVB-File (gezipt) hier hoch zum Ansehen. - alfred - ------------------ www.hollaus.at |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 04. Mrz. 2010 15:57 <-- editieren / zitieren --> Unities abgeben:         
sooooooooo.... habe zuerst mal ein neues Modul erstellt und es dort eingefügt! jetzt komm ich zumindest mal dazu dass ich ein Block auswählen soll, aber danach hängt er sich wie auf! Fenster bleibt auf Kein Block stehen ok ---> okay kann man drücken wie man will geht net mehr weg! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 04. Mrz. 2010 16:13 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 04. Mrz. 2010 16:25 <-- editieren / zitieren -->
Hi, wenn der Code bei dieser Zeile 'MsgBox texT1' Dir die Dialogbox zeigt, dann aber auf den Klick auf den OK-Button nicht reagiert, dann hast Du imho einige mehr Probleme auf Deinem Gerät oder mit Deiner AutoCAD-Installation (wobei ich da nicht mal die AutoCAD-Installation zwingend an erster Stelle sehe).
Oder Du hast in dem neuen DVB irgendwas drin, was nicht dazugehört, das sehe ich aber nicht, denn das DVB ist nicht hier einzusehen. Dazu kommt: Du hast keine Blockreferenz gewählt, sonst würde die Messagebox mit 'Kein Block' gar nicht kommen. (gib uns vielleicht mal die Zeichnung mit dem Element, das Du angeklickt hast). >> wollte ja den wert eines attribut yx aus block xy!
Bevor der minimalistische Code nicht funktioniert, brauchst Du imho auf die weiteren Ziele noch nicht lossteuern. Der Code von wwwilli zeigt Dir, wie Du von einer BlockReferenz (die Du wählst) auf die AttributReferenzen kommst und von allen Attributen Dir die Attributsbezeichnung (TagString) und den Attributsinhalt (TextString) ausgeben lassen kannst. Diese For...Next-Schleife ist genau die Schleife, wo Du prüfen kannst, ob der TagString der Attributreferenz = 'yx' ist (ich würd auf Groß-/Kleinschreibung achten beim Vergleich), denn dann kannst Du bei diesem Attribut auch den Wert herausholen. - alfred - ------------------ www.hollaus.at |
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 04. Mrz. 2010 17:05 <-- editieren / zitieren --> Unities abgeben:          Nur für f-m
Hi alfred, macht Ihr in Eurer Schulung noch einen Exkurs durch F5, F8, Breakpoints und sowas? Da scheint es mir nach Durchsicht der Beiträge vielleicht auch zu klemmen. Debug.Print und F1 wäre auch gut. Alt-Tab sollte schon gehen. MfG, wwwilli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 04. Mrz. 2010 17:15 <-- editieren / zitieren -->
Hi, >> macht Ihr in Eurer Schulung noch einen Exkurs durch F5, F8, Breakpoints und sowas? in Schulungen, die wir halten und bei denen VBA ein Thema ist, machen wir das natürlich durch, un dda kommt auch noch <F1> und <F2> vor . Nur im Forum Schulung halten ist nicht, dafür ist ein Forum nicht gebaut (auch wenn es hier schon nahe daran ist, geb ich Dir recht). - alfred - ------------------ www.hollaus.at |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 05. Mrz. 2010 08:54 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 05. Mrz. 2010 08:59 <-- editieren / zitieren -->
Hi, >> Hab nun alle Attribute des Blockes in der Msg-Box. >> Aber wie bekomm ich nun wie beschrieben ein Wert davon angezeigt? Lehn dich mal zurück und betrachte die obigen Sätze, als wärst Du gerade neu zu dem Thema dazugekommen. Hier steht, so lese ich es: Ich bekomme den Wert angezeigt! Wie bekomme ich den Wert angezeigt? Wir sitzen nicht vor Deinem Rechner, wir haben nicht Deine Gedanken, Du musst schon zumindest Spurenelemente von Informationen mitgeben, damit wir helfen können. - alfred - [EDIT] An dem IF wird's ja hoffentlich nicht scheitern, sprich prüfen, wie ich es schon >>>hier<<< geschrieben habe: Diese For...Next-Schleife ist genau die Schleife, wo Du prüfen kannst, ob der TagString der Attributreferenz = 'yx' ist (ich würd auf Groß-/Kleinschreibung achten beim Vergleich), denn dann kannst Du bei diesem Attribut auch den Wert herausholen. [/EDIT] ------------------ www.hollaus.at [Diese Nachricht wurde von a.n. am 05. Mrz. 2010 editiert.] |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 05. Mrz. 2010 09:24 <-- editieren / zitieren --> Unities abgeben:         
Hallo, anbei die dwg als zip! Als Beispiel: Dort gibt es den Block Z_Blatt_Schriftfeld davon z.B. den Wert BENENNUNG! kann man das auswählen des blockes auch automatisieren? So dass er immer den selben block und wert sucht? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 05. Mrz. 2010 09:38 <-- editieren / zitieren -->
Hi, >> kann man das auswählen des blockes auch automatisieren? Du kannst mit SelectionSet die Elemente herausfinden, die z.B. vom Typ BlockReference sind und der Name = 'DIN-A3' ist. Du kannst ohne weitere Angaben diese bestimmte BlockReference NICHT herausfinden, wenn in der Zeichnung mehr als 1 Layout und damit mehr als einmal diese BlockReference eingefügt wurde. Code: Dim tSSet as AcadSelectionSet On Error Resume Next 'Probieren, ein SelectionSet definieren Set tSSet = Thisdrawing.SelectionSets.Add("mySelSet") 'sollte es das schon geben, dann koennen wir es nicht hinzufuegen, dann muessen wir es einfach verwenden: If tSSet is Nothing Then Set tSSet = Thisdrawing.SelectionSets.Item("mySelSet") tSSet.Clear 'leer machen, sollten schon Elemente drin sein'jetzt bestimmen wir die Filterung fuer das SelectionSet Dim tDxfCodes(1) as integer Dim tDxfValues(1) as Variant tDxfCodes(0) = 0:tDxfValues(0) = "INSERT" 'Typ muss AcadBlockReference sein tDxfCodes(1) = 2:tDxfValues(1) = "DIN-A3" 'Blockname muss 'DIN-A3' sein 'und jetzt selektieren Call tSSet.Select(acSelectionSetAll,,,tDxfCodes,tDxfValues) if tSSet.Count = 0 Then 'keine BlockReference mit diesem Namen in der aktuellen Zeichnung gefunden elseif tSSet.Count > 1 then 'mehr als eine BlockReference mit ... gefunden else Dim tBlRef as AcadBlockReference set tBlRef = tSSet(0) 'hier hast Du Deine BlockReference, fertig zum Attribute rausholen '....
Lass mal wissen, ob Dir das hilft. Mach's einzelschrittweise durch und prüfe den Inhalt der Variablen dabei mit dem Überwachungsfenster. Wenn es nicht klar ist/wird, dann geb ich jetzt mal direkt den Tip: Schau mal/frag mal, ob Du ne Schulung haben darfst. - alfred - ------------------ www.hollaus.at |
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 05. Mrz. 2010 09:48 <-- editieren / zitieren --> Unities abgeben:          Nur für f-m
Hallo f-m, Du verschleißt unsere Spezialisten. Meiner Meinung nach ist in diesem Thread nun jede Anweisung genannt worden, die Du für Deine Problemstellung (soweit ich verstanden habe) brauchst. Den Rest musst Du doch nach Deiner Vorstellung zusammenbauen! (1) Du weißt, was Du brauchst und was Du hast; (2) dann kommt eine Vorstellung, wie das Programm ablaufen soll (wozu zugegebenermaßen die Kenntnis der grundsätzlichen Möglichkeiten gehört, aber die sind nun auch erstmal ausreichend erörtert) und dann wird (3) alles in einzelne Programmanweisungen gegossen und wenn Du magst noch (4) mit Fehlerbehandlungen ausgerüstet und sonstwie aufgehübscht. Du kannst doch nicht bei "(1)" verharren und warten, dass der Rest hier geliefert wird... Nichts für ungut. MfG, wwwilli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
f-m Mitglied

 Beiträge: 70 Registriert: 03.12.2008 MS Windows XP Prof. x64, Xeon 2,66GHz, 4 GB RAM, NVIDIA Quadro FX 3500<P>SWX 2009 SP5.0
|
erstellt am: 05. Mrz. 2010 09:51 <-- editieren / zitieren --> Unities abgeben:         
ganz ehrlich hilft mir net weiter. Schulung ganz schlecht... hab grad ne proe schulung durch gesetzt die war teuer genug. Glaub wir sollten das jetzt an dieser stelle abbrechen das bringt wirklich garnichts mehr.
Danke dennoch für die versuchten hilfestellungen. Schönen Tag noch!!!!
lg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |