Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Attribute auslesen von aktuellem Blatt

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 präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
Autor Thema:  Attribute auslesen von aktuellem Blatt (4132 mal gelesen)
f-m
Mitglied



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

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: 01. Mrz. 2010 14:50    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,

habe folgendes Problem:
Habe ein Tool welches mir Attribute aus einer DWG ausliest.

Nun meine Frage:
Ist es möglich das ganze auch nur von einem Blatt in der DWG auszulesen????
Da unsere DWG's aus mehreren Blättern unten über die Reiter gesteuert sind!


Bitte um Hilfe!!!

Danke im vorraus.

Gruß

Torsten

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


Ex-Mitglied

erstellt am: 01. Mrz. 2010 14:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Torsten,

wenn Du mit 'Blatt' ein AutoCAD-Layout meinst, dann folgt gleich die nächste Frage:
Meinst Du die Blöcke, die in Ansichtsfenstern auf diesem Layout sichtbar sind?

Beides möglich, nur ohne genaue Angaben bzw. Einsicht in Dein Tool (wie Du's jetzt machst und wo Du daher mit Modifikationen beginnen musst) ist keine definitive Antwort möglich, leider.

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 01. Mrz. 2010 15:02    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,

danke zunächst für die schnelle Antwort!

Richtig, meine ein AutoCad-Layout-Blatt ;-)
Tool sieht aktuell folgender Maßen aus:


Private Sub CommandButton1_Click()

    Dim blockname As String
    Dim a, blocktotal As Integer
   
    UserForm2.Hide
    ListBox1.Clear
    blocktotal = ThisDrawing.Blocks.count
    For a = 0 To blocktotal - 1
    blockname = ThisDrawing.Blocks.Item(a).name
    If Not Mid$(blockname, 1, 1) = "*" Then ListBox1.AddItem blockname
    Next a
   
       

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


Ex-Mitglied

erstellt am: 01. Mrz. 2010 15:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

und möchtest Du nur die Blockreferenzen ausgeben, die am Papier liegen oder die, die im jeweiligen Ansichtsfenster (im Zoom-Ausschnitt des Ansichtsfensters) zu sehen sind.
Dazu noch eine ergänzende Frage: gibt es mehrere Ansichtsfenster in einem Layout?

Und lt. Deinem Code die scwerwiegendste Frage: meinst Du Blockdefinitionen oder Blockreferenzen? In Deinem Code wertest Du aus, wie viele Blockdefinitionen es in Deiner Zeichnung gibt (nicht, wie oft diese in der Zeichnung, sei es Modellbereich oder Layout, eingefügt wurden!)

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 01. Mrz. 2010 15:16    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

puh fragen über fragen!!! ;-)

Also.....
kein Ansichtsfenster.... nur Blätter bzw. Layouts...

zur Auswertung: Blockdefinitione und deren Anzahl.

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


Ex-Mitglied

erstellt am: 01. Mrz. 2010 15:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Blockdefinitione und deren Anzahl

Auf die Gefahr hin, dass ich lästig erscheine, ich stell trotzdem noch eine Gewissensfrage (plus ergänzende Frage):

Was hilft es Dir, zu wissen, dass es auf einem Layout 2 Blockarten gibt?

Ergänzende Frage bzw. Hintergrund dazu: Du hast auf einem Layout eine Blockreferenz 'SCHRIFTKOPF' und 5 Blockreferenzen 'ANDERUNGSLISTENEINTRAG' (sind die Änderungen 1-5, für die je eine Blockreferenz eingesetzt werden).
Interpretiere ich Deinen Wunsch wortwörtlich, bekommst Du als Ergebnis 2, willst Du das wirklich?

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 01. Mrz. 2010 15:37    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

Entschuldigung, war keinesfalls böse gemeint. Sollte absolut nicht so rüber kommen. War nur aus Spaß gemeint! Bitte nicht falsch verstehen.


Zur Erklärung der Anwendung:

sämtliche Blöcke heißen bei uns z.B. Stückliste1, hinter diesen verbergen sich dann die verschiedensten Attributen. Somit benötige ich die gesamt zahl der blöcke die ich zur Auswertung brauche... dahinter kommen dann die attribute....

das läuft ja auch alles kein prob.
Prob besteht darin...

...aktuell bezieht das Tool sich auf die gesamte DWG-Datei beim auswerten.
das soll einfacher werden, dass wir uns nur noch auf die einzelnen Layout's bzw. Blätter die Auswertung beziehen können.

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


Ex-Mitglied

erstellt am: 01. Mrz. 2010 15:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

dann wird die notwendige Folge sein:

a) ein Scan durch alle Zeichnungselemente des Layout-Blocks
b) entscheiden, ob es eine Blockreferenz ist, wenn ja, Name des Blocks der Blockreferenz in eine Liste hinzufügen, wenn es den Namen in der Liste noch nicht gibt
c) (am Ende) die Anzahl der Listenelemente ausgeben

Lass mich mal wissen, ob Dir das weiterhilft oder wo es hängt.

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 01. Mrz. 2010 16:00    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

leider komm ich mit dieser Aussage nicht weiter.

Das ist zum aktuellen Zeitpunkt voll funktionsfähig. Das Tool läuft und läuft und läuft!

dieser scan bezieht sich immer auf die gesamte dwg-datei nicht auf ein aktuelles layout in dieser Version... das soll sich ändern....

denke liegt an diesem part

    Private Sub CommandButton1_Click()

    Dim blockname As String
    Dim a, blocktotal As Integer
   
    UserForm2.Hide
    ListBox1.Clear
    blocktotal = ThisDrawing.Blocks.count
    For a = 0 To blocktotal - 1
    blockname = ThisDrawing.Blocks.Item(a).name
    If Not Mid$(blockname, 1, 1) = "*" Then ListBox1.AddItem blockname
    Next a


aber ich weiß nicht wie ich den umsetzten muss dass dieser nur wie gesagt auf das aktuelle layout sich bezieht!

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


Ex-Mitglied

erstellt am: 01. Mrz. 2010 16:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

hier wird durch Layouts durchgescannt, die vorhandenen Blockdefinitionen werden Dir je Layout per MsgBox angezeigt.

Code:
Public Sub TestLayoutBlockDefCount()
   Dim tLayout As AcadLayout
   Dim tBlRef As AcadBlockReference
   Dim tEnt As AcadEntity
   For Each tLayout In ThisDrawing.Layouts
      Dim tBlNames As Collection: Set tBlNames = New Collection
      For Each tEnt In tLayout.Block
         If TypeOf tEnt Is AcadBlockReference Then
            Set tBlRef = tEnt
            On Error Resume Next
            Call tBlNames.Add(tBlRef.Name, tBlRef.Name)  'wenn der Name schon existiert, dann zwar Fehler, aber kommt nicht doppelt in die Liste
            On Error GoTo 0
         End If
      Next
      If tBlNames.Count > 0 Then
         Dim tBlNameStr As String
         Dim tStr As Variant
         For Each tStr In tBlNames
            tBlNameStr = tBlNameStr & vbNewLine & tStr
         Next
         Call MsgBox("In Layout '" & tLayout.Name & "' sind folgende Blockdefinitionen vorhanden:" & vbNewLine & tBlNameStr)
      End If
      Set tBlNames = Nothing
   Next
End Sub

- alfred -

PS: ich glaube noch immer nicht, dass Du wirklich Blockdefinitionen meinst, denn über Blockdefinitionen kommst Du nicht auf die Attributsinhalte der jeweiligen Blockreferenzen. Aber auch dieses lässt sich aus obigem Codebeispiel ableiten. 

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 01. Mrz. 2010 editiert.]

f-m
Mitglied



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

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: 02. Mrz. 2010 10:18    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

Morgen,

danke für das den Ansatz, aber ich komm beim besten Willen nicht drauf wo mein Fehler ist.
Werde mal einfach weiter versuchen.

Danke dennoch.


Gruß

Torsten

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


Ex-Mitglied

erstellt am: 02. Mrz. 2010 11:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Torsten,

>> aber ich komm beim besten Willen nicht drauf wo mein Fehler ist

Funkt mein Code nicht oder hab ich durch meine Aussage in PS 'nur' verunsichert?
Was siehst Du denn jetzt als Deinen Fehler?

- alfred -

------------------
www.hollaus.at


Ex-Mitglied

erstellt am: 02. Mrz. 2010 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Torsten,

>> aber ich komm beim besten Willen nicht drauf wo mein Fehler ist

Funkt mein Code nicht oder hab ich durch meine Aussage in PS 'nur' verunsichert?
Was siehst Du denn jetzt als Deinen Fehler?

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 02. Mrz. 2010 11:55    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

Hi Alfred,

doch der Code funkt einwandfrei.... das ist nicht das problem...

was ich damit meinte war lediglich „ich weiß beim besten Willen nicht“ wie ich den bei mir einzubauen habe, dass es bei mir dann funkt! ;-)

Gruß

Torsten

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


Ex-Mitglied

erstellt am: 02. Mrz. 2010 12:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

mein Beispiel geht durch alle Layouts mit einer For...Next Schleife, willst Du nur auf das aktuelle Layout hingreifen, dann nimm das  'For Each tLayout In ThisDrawing.Layouts'  raus (samt dem zugehörigen  'Next'  und setze statt dessen diese Zeile ein:

Code:
Set tLayout = ThisDrawing.ActiveLayout

Ist/war das das Problem?

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 02. Mrz. 2010 15:58    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

Irgendwie klappt das alles nicht!

Irgendwie ist hier der wurm drin!


Trotzdem danke nochmal!

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


Ex-Mitglied

erstellt am: 02. Mrz. 2010 17:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Irgendwie klappt das alles nicht!

Daraus kann ich wiederum nichts ableiten, was klappt nicht, wie äußert sich das?

Lad mal eine kleine Zeichnung hoch und mach einen Screenshot von Deinem Form, damit ich sehe, was Du alles als Endergebnis eigentlich wünscht.
Oder beschreib vielleicht, was Du aus dem Layout alles (was bisher läuft und läuft und läuft ) an Daten herausholst.

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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 09:19    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


Ausgabe.jpg

 
Morgen Alfred,

der aktuelle Stand ist, dass er immer noch in der Infobox alle Blöcke sich holt.
habe mal verschiedene sachen hochgeladen.

1. Bild wie es bei mir im ACAD mit den Blöcken und Blättern ist.

2. Welche Werte ausgegeben werden.

3. der Code aktuell sieht so aus:

Private Sub CommandButton1_Click()

  Dim tLayout As AcadLayout
  Dim tBlRef As AcadBlockReference
  Dim tEnt As AcadEntity
  Set tLayout = ThisDrawing.ActiveLayout
 
  UserForm2.Hide
 
  ListBox1.Clear
 
  Dim tBlNames As Collection: Set tBlNames = New Collection
      For Each tEnt In tLayout.Block
     
      If TypeOf tEnt Is AcadBlockReference Then
            Set tBlRef = tEnt
            On Error Resume Next
            Call tBlNames.Add(tBlRef.name, tBlRef.name)             
            On Error GoTo 0
       
      End If
     
      Next
     
      If tBlNames.count > 0 Then
       
        Dim tBlNameStr As String
        Dim tStr As Variant
        For Each tStr In tBlNames
        tBlNameStr = tBlNameStr & vbNewLine & tStr
       
       
      Next
      ListBox1.AddItem tBlRef.name
       
      End If
   
     
  UserForm2.Show

End Sub

Gruß

Torsten

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

f-m
Mitglied



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

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 09:30    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


Anforderung.jpg

 
das andere Bild fehlte...
hier noch das andere Bild!

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

runkelruebe
Ehrenmitglied V.I.P. h.c.
Straßen- / Tiefbau



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

Beiträge: 8086
Registriert: 09.03.2006

sw:
Win7-x64
Office 365 ProPlus
C3D (& LT )
ET; DACH; Extensions
-------------------
hw:
FX3800
i5 CPU 670
8GB RAM

erstellt am: 03. Mrz. 2010 09:36    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 f-m 10 Unities + Antwort hilfreich

kurze Zwischenfrage:
Habt ihr euch schon einmal mit der Datenextraktion beschäftigt?

Also wenn es um eine Tabelle geht, würde ich da mal gucken, wenn ihr natürlich auf userformen angewiesen seid oder davon nicht abweichen wollt, dann weitermachen 

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info | Dateianhänge | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope

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


Ex-Mitglied

erstellt am: 03. Mrz. 2010 09:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Torsten,

Du meinst, in Deinem Screenshot stört Dich die Zahl 140?
In Deinem Code sehe ich aber nirgends, wo Du die Zahl in Deinen Dialog schreibst.

Willst Du die Zahl der Blockdefinitionen, dann nimm doch den ermittelten Count der Collection:
tBlNames.count

Abgesehen davon: Es sieht so aus, als würdest Du (aus Deinem Screenshot) auf Blockname 'Stücklisten-*' filtern wollen, das ist in Deinem Code auch nicht enthalten, da solltest Du das umbauen:

Code:
If ucase(tBlRef.Name) like "Stücklisten-*" then
  Call tBlNames.Add(tBlRef.name, tBlRef.name)
End If

Und ich fürchte nach wie vor, dass Du die BlockReferenz-Anzahl und nicht die BlockDefinitions-Anzahl haben willst, aber das lass ich jetzt mal.

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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 10: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

Bei genauere Betrachtung denke ich auch mittlerweile an die BlockReferenz-Anzahl
würde das den code verändern.

Geb ja zu bin nicht kein spezi was autocad angeht.

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


Ex-Mitglied

erstellt am: 03. Mrz. 2010 13:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

so einfach wie möglich gehalten, nur in einem Array die Werte (Anzahl und Blockname) gesammelt und nachher in einer Messagebox ausgegeben. Um den Workflow leichter erkennen zu können, ist auf exzessive Fehlerbehandlung verzichtet worden.

Workflow:
Die Sub getBlRefCountForLayout  rufst Du auf, diese übergibt an  Function getBlRefCount das aktive Layout sowie den Filternamen für die Blockauswahl (steht in meinem Beispiel auf "*", aber kommentiert, dass Du weisst, wo Du Deines eintragen musst.
In einem zweispaltigen Array werden jetzt Blockname und Anzahl zusammengezählt.

Nochmals, es sind nicht die Methoden, die ich wählen würde. Ich glaube aber, auf diese Weise (ohne Collection mit Key, ohne Klassendefinition) wird's Dir zum Lesen leichter fallen. Ich hoffe es zumindest!

HTH, - alfred -

Code:
Public Sub getBlRefCountForLayout()
   Dim tLayout As AcadLayout
   Set tLayout = ThisDrawing.ActiveLayout
   Dim tBlockNameFilterStr As String
   tBlockNameFilterStr = "*"  'auszutauschen gegen Deinen Blocknamenfilter "Stücklisten-*"

   Dim tBlList As Variant
   tBlList = getBlRefCount(tLayout, tBlockNameFilterStr)
  
   If Not IsArray(tBlList) Then
      'kein Returnwert aus function
   ElseIf UBound(tBlList) < 0 Then
      'keine entsprechenden BlockReferenzen gefunden
   Else
      Dim tVal As Variant
      Dim tStr As String
      For Each tVal In tBlList
         tStr = tStr & tVal(0) & "....." & tVal(1) & vbNewLine    'Blockname und BlockRef-Anzahl sammeln
      Next
      MsgBox tStr
   End If
End Sub


Private Function getBlRefCount(ByRef LayoutObj As AcadLayout, ByVal BlockNameFilterStr As String) As Variant
   Dim tRetVal() As Variant 'da werden die Werte retourniert, erste Spalte BlockName, zweite Spalte Anzahl
   Dim tBlRef As AcadBlockReference
   Dim tEnt As AcadEntity
   Dim tBlockNameFilterStr As String
   tBlockNameFilterStr = UCase(BlockNameFilterStr)
   If Len(tBlockNameFilterStr) = 0 Then tBlockNameFilterStr = "*" 'wenn kein Filter angegeben ist, dann '*' einsetzen, damit alle Blocknamen anerkannt werden

   Dim tSSet As AcadSelectionSet
   On Error Resume Next
   Set tSSet = ThisDrawing.SelectionSets.Add("myBlCountSSet")
   If tSSet Is Nothing Then Set tSSet = ThisDrawing.SelectionSets.Item("myBlCountSSet")
   tSSet.Clear
  
   Dim tDXFCodes(2) As Integer
   Dim tDXFValues(2) As Variant
   tDXFCodes(0) = 0: tDXFValues(0) = "INSERT"               'Selectionset-Filter ... Objekttyp = BlockReference
   tDXFCodes(1) = 2: tDXFValues(1) = tBlockNameFilterStr    'Selectionset-Filter ... Blockname lt. Filter
   tDXFCodes(2) = 410: tDXFValues(2) = LayoutObj.Name       'Selectionset-Filter ... Layoutname lt. Parameter

   Call tSSet.Select(acSelectionSetAll, , , tDXFCodes, tDXFValues)
  
   If tSSet.Count = 0 Then
      Call MsgBox("Keine Blockreferenzen im aktuellen Layout gefunden")
   Else
      'dann BlockRefs zählen
      For Each tBlRef In tSSet
         Call addBlockCount(tRetVal, tBlRef.Name)
      Next
   End If

   On Error GoTo 0
   getBlRefCount = tRetVal
End Function


Private Sub addBlockCount(ByRef RetArray As Variant, ByVal BlockName As String)
   'ergaenzt in der Liste <RetArray> den Eintrag um den Blocknamen
   '  existiert der Blockname schon, dann wird der Counter um 1 hochgezaehlt
   Dim i As Integer
   Dim tFound As Boolean
  
   On Error Resume Next
   i = 0
   i = LBound(RetArray)
   If (Err.Number = 0) And (i >= 0) Then 'pruefen, ob im Array schon zumindest eine Zeile besteht
      For i = LBound(RetArray) To UBound(RetArray)
         If RetArray(i)(0) = BlockName Then
            'Eintrag fuer diesen Namen existiert schon, also Zaehler erhoehen
            RetArray(i)(1) = RetArray(i)(1) + 1
            tFound = True
            Exit For
         End If
      Next
   End If
   If Not tFound Then
      'es gibt in der Liste noch keinen Eintrag fuer diesen Blocknamen
      '  neuen Zeile ergaenzen
      ReDim Preserve RetArray(i)
      Dim tVal(1) As Variant
      tVal(0) = BlockName
      tVal(1) = 1
      RetArray(i) = tVal
   End If
   On Error GoTo 0
End Sub


------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 03. Mrz. 2010 editiert.]

f-m
Mitglied



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

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: 08. Mrz. 2010 11:51    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

Hi Alfred,

Super Ding einfach....
klappt alles wunderbar.

Danke nochmal.


Gruß

Torsten

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

f-m
Mitglied



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

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: 09. Mrz. 2010 08:37    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

Morgen,

möchte an dieser Stelle doch noch einmal das Thema aufgreifen.

Folgendendes will ich erreichen,
möchte aus:

Block: Z_Blatt_Schriftfeld --> aus dem Attribut BENENNUNG den Wert auslesen.

und in in einem Label in der UserForm anzeigen lassen.

UserForm und Label krieg ich hin. Den Wert zu bekommen ist mein Problem.


Gruß

Torsten

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


Ex-Mitglied

erstellt am: 09. Mrz. 2010 09:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Wenn Du nur eine Blockreferenz hast (und nur dann) kannst Du den Attributswert anzeigen, sonst könnte ja sein, dass bei mehreren Blockreferenzen unterschiedliche Benennungen ausgefüllt sind.

Dazu:

Code:
Dim i as Integer
Dim tAtts as Variant
tAtts = tBlRef.GetAttributes
For i = LBound(tAtts) to UBound(tAtts)
  if tAtts(i).TagString = "BENENNUNG" then
      'hier hast Du's

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 09. Mrz. 2010 09:18    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


BENENNUNG.jpg

 
soll das dann so aussehen?? 

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


Ex-Mitglied

erstellt am: 09. Mrz. 2010 10:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> soll das so aussehen

Nein, ich hab nur ein Codeschnippsel gebaut, um zur richtigen Attributreferenz zu kommen. Den Block suchen und mein Codeschnippsel richtig anwenden ist aber schon Deines. 

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 09. Mrz. 2010 10:56    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

habe gedacht...

mh....

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

runkelruebe
Ehrenmitglied V.I.P. h.c.
Straßen- / Tiefbau



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

Beiträge: 8086
Registriert: 09.03.2006

sw:
Win7-x64
Office 365 ProPlus
C3D (& LT )
ET; DACH; Extensions
-------------------
hw:
FX3800
i5 CPU 670
8GB RAM

erstellt am: 09. Mrz. 2010 11:00    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 f-m 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von f-m:
habe gedacht...

Genau das war wohl Sinn und Zweck der Übung   

>> HIER << sind ein paar links zu Tutorials u.a. zum Thema ACAD-VBA, nimm Dir mal ne Woche Zeit, bin sicher, der Nebel wird sich lichten 

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info | Dateianhänge | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope

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

f-m
Mitglied



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

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: 09. Mrz. 2010 11:17    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

Mal sehen ob der Lern-Effekt eintritt, da ich seit gestern schon probiere
wie ich diesen **** ***** Wert zu bekommen.
Mein Tool ist komplett fertig, hagt nur noch an diesem "nice to have" Label.

 

Super!  Danke für diese Link-Sammlung.

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

f-m
Mitglied



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

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: 09. Mrz. 2010 13:11    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,

hat vll. einer von euch nicht doch noch ein Tip oder sowas schon mal gemacht?! Den Code vll. griffbar? Häng hier schon wieder 2 std. dran und komm einfach nicht weiter. Biiiiittteeee!

WÄRE SEHR DANKBAR!!!!!!


Gruß

Torsten

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13530
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 09. Mrz. 2010 13:19    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 f-m 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von f-m:
Häng hier schon wieder 2 std. dran

Hmmm .. Zwischenfrage auch wenn du dir sicher na andere Antwort erhofft hast) Was hast du denn für Stundensatz? Ich denke, es wäre einiges ökonomischer, bei solchen Aufgabe jemanden zu beauftragen, der den Komplettcode liefert. PM doch mal einfach den Alfred an ...

------------------
      - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

f-m
Mitglied



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

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: 09. Mrz. 2010 13:28    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

MEIN STUNDENSATZ!!!  
Sorry aber mein Stundensatz hier in der Firma spielt hier nicht die Rolle.
Unbezahlbar 

Verstehe aber was du meinst.

Den kompletten Code für mein Tool habe ich seit letzter Woche bereits fertig.
Benötige lediglich (wenn man das so sagen darf) einen kleinen schnipsel... wo ich halt net weiter komme.
Das komplette Tool umfasst wesentlich mehr wie diesen kleinen Schnipsel.
An diesem komm einfach nicht weiter.
Und extra unseren Einkauf im Hauptwerk zu nerven wg. einer Bestellungen vergehen Wochen.

Deshalb bin ich für jeden Tip bzw. Vorlage oder fertigen Schnipsel dankbar.

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


Ex-Mitglied

erstellt am: 09. Mrz. 2010 21:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Ich habe mir Deinen Screenshot angesehen >>>http://ww3.cad.de/foren/ubb/uploads/f-m/Anforderung.jpg<<< und dann nochmals Deine Auskünfte/Fragen:

>> Folgendendes will ich erreichen,
>> möchte aus:
>> Block: Z_Blatt_Schriftfeld --> aus dem Attribut BENENNUNG den Wert auslesen.
>> und in in einem Label in der UserForm anzeigen lassen.


Da brauch ich jetzt nicht mal ans Programmieren denken, sondern mal überlegen:
- Du hast eine Form in Deinem VB, hier willst eine Benennung anzeigen.
- In Deinem Screenshot sehe ich schon 3 Werte für Benennung (O²-Schlauch / Schnellkupplung / Magnetventil ...)
Aus welchem Grund (oder WIE) soll das Programm jetzt wissen, ob es 'O²-Schlauch' oder 'Schnellkupplung' oder 'Magnetventil' in Dein Label hineinschreiben soll

Du wünscht Dir, dass wer Deinen Code schreibt (kostenlos) und gibst trotz aller Hinweise (in Richtung Differenzierung Blockdefinition und Blockreferenz, weiters was soll sein bei mehreren Referenzen in einem Layout) keinen Hinweis darauf, keine Infomation dazu, woraus ein Programm erkennen soll, welche Blockreference jetzt auszuwerten ist (nicht mal irgendwelche Hintergrundinfo's, aus denen wir es ev. ableiten könnten).

Codeschnippsel hab ich hier alle hinterlassen, aus denen VBA-Interessierte so zusammenstoppeln können (sollten), damit dann Ihre Aufgabe gelöst wird (die ja nach wie vor nur Du kennst). Die Codeschnippsel sollen helfen, die Problempunkte zu überwinden, die Codeschnippsel soweit zu vervollständigen, dass daraus Deine Applikation wird, ist mangels mehrfach hinterfragten, aber nicht beantworteten Informationen nicht möglich.

Weiters gebe ich ganz deutlich zu erkennen: Wenn Du Codeschnippsel aus dem Internet per Copy&Paste reinholst, und dann, ohne zu verstehen, was diese eigentlich tun, in Deine Applikation einbaust, dann brennt es imho! Wie lange glaubst Du, wird das Programm so laufen, dass Du Vertrauen in die damit generierten Daten haben wirst und wie weit bist Du im Fehlerfall gerüstet, um einen Fehler in diesem Code a) zu erkennen und b) zu beheben.
Schlimmer noch, wenn Du jahrelang damit Daten generierst und diese stellen sich dann als falsch heraus.

Trotzdem viel Erfolg, - alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 09. Mrz. 2010 22:00    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 Alfred,

wie kommst du drauf der Wert immer variiert??

Habe in der gesamten DWG nur ein Block: Z_Blatt_Schriftfeld mit einem Attribut Benennung und darin ist immer der selbe wert! Wie gesagt in der Gesamten dwg, nur ein Wert der kommen kann....

Das was du meinst bezieht sich auf was ganz anderes... altes erledigtes Problem.

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


Ex-Mitglied

erstellt am: 09. Mrz. 2010 22:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Kannst Du die Zeichnung samt aller Layouts und Schriftköpfe (Geometrie aus dem Modellbereich kannst Du ja löschen) mal hier uploaden.

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 09. Mrz. 2010 22:07    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

aktuell nicht... habe seit ner halben Stunden feierabend und bin nicht mehr in der Firma.
Gleich morgen früh mach ich das dann mal.

Dank dir.

Schönen Abend noch!

lg

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

f-m
Mitglied



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

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: 10. Mrz. 2010 09:13    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


test.zip

 
Moscheeeee,

wie gestern abend besprochen!


Gruß

Torsten

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


Ex-Mitglied

erstellt am: 10. Mrz. 2010 09:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ich nehme nicht an, dass es Dir Freude macht, wenn ich Dir den Code für diese Zeichnung schreibe, denn der wird in anderen Zeichnungen nicht funktionieren, aber hier hast Du mal (zusammengestoppelt von oben):

Code:
Dim tSSet as AcadSelectionSet
On Error Resume Next
Set tSSet = ThisDrawing.SelectionSets.Item("mySSET")
if tSSet is nothing then Set tSSet = ThisDrawing.SelectionSets.Add("mySSET")
tSSet.Clear

Dim tDxfCodes(2) as integer
Dim tDxfValues(2) as Variant
tDxfCodes(0) = 0:tDxfValues(0) = "INSERT"
tDxfCodes(1) = 2:tDxfValues(1) = "Z_Blatt_Schriftfeld"
tDxfCodes(2) = 410:tDxfValues(2) = "Layout1"

tSSet.Select acSelectionSetAll,,,tdxfcodes,tdxfvalues

if tSSet.Count = 0 then
   MsgBox("Kein Schriftfeld gefunden")
elseif tSSet.Count > 1 then
   msgbox("Mehr als ein Schriftfeld gefunden")
else
   dim tBlRef as AcadBlockreference
   set tBlRef = tsset(0)
   if not tBlRef.HasAttributes then
      msgbox("Block hat keine Attribute")
   else
      dim tAtts as variant
      tAtts = tBlRef.GetAttributes
      dim i as Integer
      dim tFound as Boolean
      for i = lbound(tatts) to ubound(tatts)
         if ucase(tAtts(i).TagString) = "BENENNUNG" then
            'hier kommt dein Label
            MyLabel.Caption = tAtts(i).TextString
            tFound = true
            exit for
         endif
      next
      if not tFound then
         msgbox("Kein Attribut 'Benennung' gefunden"
      endif
   endif
endif


Der Code ist nicht probiert, nur (halb-)blind runtergeschrieben.
Nochmals: Du solltest den Code verstehen, sonst solltest Du diesen nicht verwenden! (ich könnte hier auch ein Virus programmiert haben.    )

- alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 10. Mrz. 2010 editiert.]

[Diese Nachricht wurde von a.n. am 10. Mrz. 2010 editiert.]

f-m
Mitglied



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

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: 10. Mrz. 2010 15:14    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

Dank dir Alfred.

Aber läuft ebenfalls zumindest hier bei mir nicht!

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


Ex-Mitglied

erstellt am: 10. Mrz. 2010 16:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Aber läuft ebenfalls zumindest hier bei mir nicht!

Ich sehe leider nicht, was jetzt bei Dir nicht funkt. Keine Fehlermeldung? Im Debugmode die Werte überprüft? Hast Du die Zeichnung verwendet, die Du hier zur Verfügung gestellt hast?

....Infos, Infos, Infos, ....

- alfred -

------------------
www.hollaus.at

f-m
Mitglied



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

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: 10. Mrz. 2010 16:04    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

ich verwende die DWG welche ich dir geschickt habe.
Er bleibt beim ersten if-satz sofort stehen und es kommt die MsgBox "Kein Schriftfeld gefunden"
Thats it! mehr nicht!

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


Ex-Mitglied

erstellt am: 10. Mrz. 2010 19:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Das kommt davon, wenn man keinen Rechner zum Probieren hat und 'blind' Code schreibt.
Korrigiere die Zeilen:

Code:
Dim tDxfCodes(2) as integer
Dim tDxfValues(2) as Variant
tDxfCodes(0) = 0:tDxfValues(0) = "INSERT"
tDxfCodes(1) = 2:tDxfValues(1) = "Z_Blatt_Schriftfeld"
tDxfCodes(2) = 410:tDxfValues(2) = "Layout1"

- alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 10. Mrz. 2010 editiert.]

[Diese Nachricht wurde von a.n. am 10. Mrz. 2010 editiert.]

f-m
Mitglied



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

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: 11. Mrz. 2010 08:27    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

Morgen,

selbe spiel in grün!
Hatte auch noch einiges probiert!
Soll einfach nicht sein!

Schönen Tag.

lg

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

runkelruebe
Ehrenmitglied V.I.P. h.c.
Straßen- / Tiefbau



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

Beiträge: 8086
Registriert: 09.03.2006

sw:
Win7-x64
Office 365 ProPlus
C3D (& LT )
ET; DACH; Extensions
-------------------
hw:
FX3800
i5 CPU 670
8GB RAM

erstellt am: 11. Mrz. 2010 08:35    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 f-m 10 Unities + Antwort hilfreich

Moin,

Nur mal zur Klarstellung:
der code läuft und tut das, was Du wolltest. Ich hab Deine Anforderungen an das Programm dabei offensichtlich genau so verstanden wie Alfred, dem ich hiermit die güldene Ausdauermedaille am Bande überreichen möchte 

Es waren gestern Abend noch klitzekleine Schreibfehler drin, die bekam man aber, wenn man ihn durcharbeitet mit F8 raus:

Warum springt diese msgbox an?
Weil tSSet.Count = 0
Warum ist das 0?
Weil wohl das tSSet.Select acSelectionSetAll, , , tDxfCodes, tDxfValues keinen Eintrag macht.
Warum...

Es ist übrigens immer noch ein Schreibfehler drin, deshab läuft er nicht mit Deiner hier hochgeladenen Zeichnung 

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info | Dateianhänge | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope

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

f-m
Mitglied



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

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: 11. Mrz. 2010 11:35    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

Code:
tDxfCodes(2) = 410: tDxfValues(2) = "Layout 1"

das Leerzeichen? oder auf welchen Fehler spielst du an?

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