Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  BURST auf dynamischen Block anwenden

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
Autor Thema:  BURST auf dynamischen Block anwenden (3716 mal gelesen)
Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 24. Nov. 2008 08:45    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 Forum,

ich hab mir mal einen dynamischen Block gebastelt, welcher über Sichtbarkeitsparameter gesteuert, seie Einfügekoordianten als Attribute darstellt. Da diese aus Feldern gelesen werden, haben sie einen Texthintergrund, wenn fielddisplay auf 1 steht.
Mein Auftraggeber will das nicht. Also sollen die Blöcke gesprengt werden.
Um die Attributwerte nicht zu verlieren verwende ich den Befehl BURST aus den Expresstools.
Aber jetzt kommt mein Problem:
Burst schreibt auch die unsichtaren Parameter als Text an. Dies kann ich nicht gebrauchen, weil in meiner Zeichnung nur ca. 10% dieser Blöcke den Text zeigen sollen. Der Rest wird ohne sichtbarem Attribut dargestellt.
Also wäre es nun sinnvoll die Blöcke mit sichtbaren Attributen auszuwählen, und nur auf diese den Befehl Burst anwenden.
Aber; wie kann ich diese auswählen? Schnellauswahl?
Gibt es eine Möglichkeit über die Sichtbarkeitsparameter der dynamischen Blöcke zu filtern?

lg
Didi

PS: fielddisplay wird in der Registry gespeichert, und ist deshalb für meinen Auftraggeber inakzeptabel.
Gibt es eine andere (in der Zeichnung gespeicherte) Möglichkeit den Feldhintergrund zu unterdrücken?

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 24. Nov. 2008 09:09    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 Goofy007 10 Unities + Antwort hilfreich

Also die Umschreibung gefällt mir ja irgendwie nicht <lol> - Letztendlich
sieht es doch so aus das der AG keine Felder will.. 

Suche mal nach ATTTOTEXT (.Lsp) - das umdefinieren der Blöcke mußt du aber
händisch vornehmen.

Also mit Burst oder besser Atttotext deine Attributwerte als Textwerte darstellen
und dann die Felder aus den Blöcken und Blockreferenzen verbannen.

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

erstellt am: 24. Nov. 2008 10:22    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 cadffm

Es tut mir leid das dir meine Umschreibung nicht gefällt <lol>.
Vermutlich bin ich jetzt der erste, der zuviel beschrieben hat <lol>.
Und ich finde es sehr nett, daß du mir trotzdem hilfst. Danke!

Deine Schlußfolgerung ist genaugenommen nicht richtig.
Meinem Auftraggeber sind Felder egal. Er lehnt jeder Form von Text ab, welche einen eigenen Hintergrund verwendet, weil diese bei Rechnern mit anderer Hintergrundfarbe zu Darstellungsproblemen führen können. Also zB. auch MTexte mit Texthintergrund.

Ich möchte die Blöcke eigentlich nicht umdefinieren, alle anderen AGs sind ja damit zufrieden!

Ich möchte für den Einen einfach nur die Blöcke rausfiltern, bei denen der Sichtbarkeitsparameter für die Attribute eingeschaltet ist, und diese mittels Burst sprengen. Das würde reichen.

Also bin ich wieder bei meiner Frage:

Wie kann ich aus einer Zeichnung alle Referenzen eines Blockes ausfiltern, bei denen die Darstellung der Attribute über den  Sichtbarkeitsparameter eingeschaltet ist?

PS:
AttrtoText funktioniert nicht so wie ich möchte.
Befehl:
Ungültiger Feldtyp in 280 in (entmake).
Ungültiger Feldtyp in 280 in (entmake).._EXPLODE
... aber das ist mir nicht wichtig, weil ich lieber burst verwenden würde, ich muß nur noch filtern ...


lg
Didi

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


Ex-Mitglied

erstellt am: 24. Nov. 2008 10:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

hast Du schon versucht, die Zeichnung mal im AutoCAD2004 oder -2000-Format zu speichern? Da gab es noch keine Fields, möglich, dass Du Dich so davon lösen kannst (ich hab's nicht pobiert, nur als Idee)

- alfred -

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

erstellt am: 24. Nov. 2008 18:23    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,

hab ich probiert, hat nix gebracht.

lg
didi

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


Ex-Mitglied

erstellt am: 24. Nov. 2008 19:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

DXF12 auch? Da kann eigentlich nichts überbleiben!

- alfred -

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

erstellt am: 25. Nov. 2008 08:49    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,

DXF12 funktioniert. Hat aber auch das "Problem" das wie bei Burst auch die unsichtbaren Parameter angeschrieben werden.

Hast du eine Idee wie ich die Blöche mit den sichtbaren Parametern aus der Zeichnung rausfiltern kann?

lg
Didi

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


Ex-Mitglied

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

Hi,

ich hoffe, die Frage nicht falsch zu verstehen, da ein Beispiel, wie Du aus konvertierten Blockdefinitionen die aus Sichtbarkeits-Parametern entstandene (unnötige) Elemente rausbekommst.

mit AutoCAD selbst nicht möglich, aber da Du schon mit VBA unterwegs bist:
(frei geschrieben, ungetestet, Tippfehler möglich, ...)

Code:
Dim i as Integer
dim tEnt as AcadEntity
dim tBlDef as AcadBlock
set tBlDef = ThisDrawing.Blocks("STATIC001")      'dein Blockname einsetzen, der aus ConvertToStatic entstanden ist
for i = tBlDef.Count-1 to 0 Step -1
   set tEnt = tBlDef(i)
   if not tent.Visible then tEnt.Erase
next

hoffe es stimmt so,

- alfred -

[Diese Nachricht wurde von a.n. am 25. Nov. 2008 editiert.]

[Diese Nachricht wurde von a.n. am 25. Nov. 2008 editiert.]

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

erstellt am: 25. Nov. 2008 10:10    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,

danke für den VBA-Code. Leider ist es gerade wieder mal sehr stressig. Aber sobald ich Zeit habe, werd ich´s testen.

lg
Didi

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

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

Map3D 2018 und Civil3D 2018

erstellt am: 27. Jan. 2010 10:25    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,

entschuldige bitte, erst war es stressig, und dann hab ich vergessen, dass ich dir noch antworten wollte.

Dein Code würde die Blockdefinition verändern. Das ist eigentlich nicht das was ich wollte. Ich möchte auf unterschiedliche Referenzen eines Blockes reagieren.

Ich hab mir das inzwischen selber ausprogrammiert.
Für alle, die das Problem auch mal haben werden, stelle ich den Code hier zur Verfügung.

Anregungen sind gerne gesehen. Garantien kann ich natürlich keine geben. Wer´s haben will, einfach kopieren und ausprobieren.

lg
Didi


Code:
'Dieses Programm schreibt die sichtbaren Attriute der gewählten Blöcke als Texte in die Zeichnung
'Der Block wird nicht verändert

Sub visible_Attribut_to_Text()

Dim myObj As AcadEntity
Dim myBlock As AcadBlockReference
Dim myAtt As Variant
Dim myText As AcadText
Dim Zaehler As Integer
Dim i As Integer
Dim SSet1 As AcadSelectionSet
Dim intFilterType(0) As Integer
Dim strFilterData(0) As Variant
Zaehler = 0

ThisDrawing.Utility.Prompt (vbCrLf & "Programmstart" & vbCrLf & "Sichtbare Attribute als Text in die Zeichnung eintragen" & vbCrLf)

'vorhandenes Selectionsets löschen
LoescheSelectionSet ("set1")
Set SSet1 = ThisDrawing.SelectionSets.Add("set1")
'Filterart DXF-Gruppencode 0 (Elementtyp)
intFilterType(0) = 0
'Gruppencode INSERT = Blockreferenz
strFilterData(0) = "INSERT"
'Am Bildschirm wählen ...
ThisDrawing.Utility.Prompt (vbCrLf & "Bitte die zu bearbeitenden Objekte auswählen." & vbCrLf & "Das Programm wird nur die Blöcke rausfiltern" & vbCrLf)
SSet1.SelectOnScreen intFilterType, strFilterData

If NotEmptySelectionSet("set1") Then
    For Each myObj In SSet1
        If myObj.ObjectName = "AcDbBlockReference" Then
            'Block an myBolock übergeben
            Set myBlock = myObj
            'Attribute an myAtt übergeben
            myAtt = myBlock.GetAttributes
            For i = 0 To UBound(myAtt)
                If myAtt(i).Visible = True Then
                    Zaehler = Zaehler + 1
                    'Text in Zeichnung eintragen und Eigenschaften von Attribut übernehmen
                    Set myText = ThisDrawing.ModelSpace.AddText("Text", myAtt(i).InsertionPoint, 1)
                    myText.TextString = myAtt(i).TextString
                    myText.Rotation = myAtt(i).Rotation
                    myText.Layer = myBlock.Layer
                    myText.StyleName = myAtt(i).StyleName
                    myText.Height = myAtt(i).Height
                End If
            Next
        End If
    Next
    ThisDrawing.Utility.Prompt (Zaehler & " Texte in die Zeichnung eingetragen" & vbCrLf & "Programmende" & vbCrLf)
End If
End Sub

Private Sub LoescheSelectionSet(SSname As String)
    Dim sset As AcadSelectionSet
    If ExistSelectionSet(SSname) Then ThisDrawing.SelectionSets.Item(SSname).Delete
    Set sset = Nothing
End Sub

Private Function NotEmptySelectionSet(SSname As String)
    NotEmptySelectionSet = False
    If ExistSelectionSet(SSname) Then
        If ThisDrawing.SelectionSets.Item(SSname).Count > 0 Then
            NotEmptySelectionSet = True
        End If
    End If
End Function

Private Function ExistSelectionSet(SSname As String)
    ExistSelectionSet = False
    Dim sset As AcadSelectionSet
    For Each sset In ThisDrawing.SelectionSets
        If sset.Name = SSname Then ExistSelectionSet = True
    Next sset
    Set sset = Nothing
End Function



[Diese Nachricht wurde von Goofy007 am 27. Jan. 2010 editiert.]

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

Goofy007
Mitglied
Vermessungstechniker


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

Beiträge: 578
Registriert: 06.11.2004

erstellt am: 27. Jan. 2010 10:49    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

... kleine Korrektur

die Abfrage muss so lauten:
If myAtt(i).Invisible = False And myAtt(i).Visible = True Then

Visible wird für die Steuerung dyn. Blöcke verwendet.
Invisible ist die Sichtbarkeite für "normale" Attribute.


lg
didi


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)2023 CAD.de | Impressum | Datenschutz