Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  BricsCAD
  Attribute Standort beeinflussen

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 BricsCAD
Autor Thema:  Attribute Standort beeinflussen (611 / mal gelesen)
100dpi
Mitglied
selbständig

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

Beiträge: 8
Registriert: 29.10.2021

ACAD, BricsCAD, ArcadiaBIM, SolidWorks, ProfiCAD,
ThinkPad P72, 80GB RAM, 3 TB
MSI WS76, 64GB RAM, 4 TB

erstellt am: 10. Jan. 2023 15: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

Guten Tag,

hab da mal eine spezielle Frage. Ist es möglich, den Standort eines Attributes beim Verschieben des zugehörigen Blocks zu beeinflussen? Vielleicht via Script?

Scenario:
Ich füge einen Block ein und betexte das zugehörige Attribut. Ter Text steht jetzt an der Ausgangsposition (die ich ja bei Anlage bestimmt habe). Ich nehme den "Anfasser vom Attribut und schiebe es an eine andere Stelle. Nach einer Weile stelle ich fest, dass der Block an einer falschen Stelle positioniert ist und schiebe ihn an die richtige stelle. Beim Loslassen des Blocks, möchte ich gern dass das Attribut an seinen Ursprung zurückkehrt...    Ist sowas möglich?
Danke schon mal für Euer Interesse...

Gruß RalfB

------------------
I like to move it...

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: 2624
Registriert: 02.05.2006

BricsCAD V11 - V22 Pro
Visual Basic

erstellt am: 10. Jan. 2023 18: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 Nur für 100dpi 10 Unities + Antwort hilfreich

Hallo Ralf,

Mir ist hier leider mit Bordmitteln nichts bekannt. Man könnte natürlich ein AttSync machen, aber dann werden die Attribute von allen Blockreferenzen des Blockes auf den ursprünglichen Ort zurückgesetzt.

Als Workaround könnte man natürlich den gleichen Block auf dem Blockreferenzpunkt neu einfügen, alle Attribute mit X, und hat dann einen Bezugspunkt zum manuellen zurücksetzen.

Grüße
Klaus 

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

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



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: 11. Jan. 2023 00:57    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 100dpi 10 Unities + Antwort hilfreich

@100dpi
WENN ich es richtig verstehen, dann denke ich das es so eine Funktion nicht ootb gibt,
aber Bricscad ist erweiterbar und dein Anliegen erscheint mir häufig benötigt,
daher wird es so eine Funktion bereits geben - man muss nur suchen!

Normalerweise wird "Mehrere/alle Attribute ohne Blockreferenz verschieben",
du suchst das Gegenteil und ich wunderte mich so ein Werkzeug nicht zu haben,
ein funktionierendes Beispiel (unschön und unvollendet zur Anschauung und Diskussionsgrundlage: MOVEXA)

Code:
(defun c:MOVEXA (/ Aws1 Aws2 XL)
  ; Dieser Beispielcode kümmert sich nicht um Layer Eigenschaft gesperrt oder Attribute mit 'gesperrt' Eigenschaft
  (setvar 'CMDECHO 1)
  (if (setq Aws1 (ssget ":L"))
      (if (setq Aws2 (ssget "_P" '((0 . "INSERT")(66 . 1))))
  (progn
        (foreach BlkRef (vl-remove-if 'listp (mapcar 'cadr (ssnamex Aws2)))
      (setq OBJ (entnext BlkRef))
      (while (/= "SEQEND" (cdr(assoc 0 (setq tmp (entget OBJ)))))
            (setq xl (cons (list (cdr(assoc -1 tmp))(assoc 10 tmp)(assoc 11 tmp)) xl))
    (setq OBJ (entnext OBJ))
      )
)
(setvar 'CMDECHO 1)
(command "_.MOVE" Aws1 "" PAUSE PAUSE)
(while (> (getvar "CMDACTIVE") 0) (command PAUSE))
        (foreach Att xl
      (setq OBJ (entget (car Att)))
      (entmod (subst (nth 1 Att)(assoc 10 OBJ)(subst (nth 2 Att)(assoc 11 OBJ) OBJ)))
)
  )
  (progn(command "_.MOVE" Aws1 "" PAUSE PAUSE)(while (> (getvar "CMDACTIVE") 0) (command PAUSE)))
)
        (princ "\nKeine Objekte gewählt")
  )
(princ)
)
(princ "\nMOVEXA verschiebt Objekte, ausser Attribute")
(princ)


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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 11. Jan. 2023 13:15    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 100dpi 10 Unities + Antwort hilfreich

Ich glaube was Ralf braucht ist, dass die Attribute nicht dort bleiben wo sie sind und nur der Block verschoben wird sondern dass die Attribute an ihre Ursprungsposition kommen als hätte er den Block gerade eingefügt und noch kein Attribut über die Griffe verschoben.
Das könnte man über eine Analyse der zugehörigen Blockdefinition machen. Allerdings muss man da auch berücksichtigen dass man Attribute gleich benennen kann und (worst Case) die Definitionen nicht mit den tatsächlichen Attributen übereinstimmen müssen.

Ohne solche Sachen könnte das etwa so aussehen. Ist aber was separates also nichts was beim Loslassen des Blocks vollautomatisch funktioniert. Könnte man aber auch machen.

Code:
(if (setq satz (ssget '((0 . "INSERT"))))
  (progn
    (foreach obj_name (mapcar 'vlax-ename->vla-object
      (vl-remove-if-not
'(lambda (dummy) (= (type dummy) 'ENAME))
(mapcar 'cadr (ssnamex satz))
      )
      )
      (setq att_list (vlax-invoke obj_name 'GetAttributes))
      (setq blk_def (vla-item (vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))
      )
      (vla-get-name obj_name)
    )
      )
      (setq att-def_list (list))
      (vlax-for dummy blk_def
(if (= (vla-get-ObjectName dummy) "AcDbAttributeDefinition")
  (setq att-def_list (cons dummy att-def_list))
)
      )
      (setq att-def_list (reverse att-def_list))
      (if (= (length att-def_list) (length att_list))
(progn
  (setq n 0)
  (repeat (length att_list)
    (vla-put-InsertionPoint
      (nth n att_list)
      (VLAX-3D-POINT
(mapcar '+
(vlax-safearray->list
  (vlax-variant-value
    (vla-get-InsertionPoint (nth n att-def_list))
  )
)
(vlax-safearray->list
  (vlax-variant-value (vla-get-InsertionPoint obj_name))
)
)
      )
    )
    (vl-catch-all-apply
      'vla-put-TextAlignmentPoint
      (list (nth n att_list)
    (VLAX-3D-POINT
      (mapcar '+
      (vlax-safearray->list
(vlax-variant-value
  (vla-get-TextAlignmentPoint (nth n att-def_list))
)
      )
      (vlax-safearray->list
(vlax-variant-value (vla-get-InsertionPoint obj_name))
      )
      )
    )
      )
    )
    (setq n (1+ n))
  )
)
      )
    )
  )
)

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

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

100dpi
Mitglied
selbständig

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

Beiträge: 8
Registriert: 29.10.2021

ACAD, BricsCAD, ArcadiaBIM, SolidWorks, ProfiCAD,
ThinkPad P72, 80GB RAM, 3 TB
MSI WS76, 64GB RAM, 4 TB

erstellt am: 11. Jan. 2023 14: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

Hey,

wow Danke für Euren Eisatz   
@Andreas:Genau so hab ich es gemeint. Als Variante: Den Standort des Attributes im Bezug auf den Block neu bestimmen und die Textformatierung ändern können.

Bsp. Ich fertige Dokumentationen von Brandmeldeanlagen an. In den Etagenplänen muss ich (der Übersicht halber) die Attribute oft anders am Block anordnen und den Text umformatieren (Größe ändern etc.)
Diese Blöcke kopiere ich dann mit Kabelwegen in das Blockschaltbild. In diesem Blockschaltbild (welches sich in der selben Zeichnung in einem neuen Layout befindet), müssen die Attribute umständlich wieder "zurück- formatiert und gesetzt werden (sollen da ja alle gleich aussehen)

Kann ich Deinen Code in einer Lisp-Datei speichern und damit rumprobieren? (bin kein Programmierer  )
Gruß RalfB

------------------
I like to move it...

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

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



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: 11. Jan. 2023 15: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 Nur für 100dpi 10 Unities + Antwort hilfreich

Na da wäre ich nie draufgekommen, sorry.

Klar kannst du das machen,
füge nur am Ende eine schließende Klammer an: )
und als erste Zeile
(defun c:AttPosReset nil

zum Beispiel, um es mit AttPosReset als neuen Befehl zu testen.

[Diese Nachricht wurde von cadffm am 11. Jan. 2023 editiert.]

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

100dpi
Mitglied
selbständig

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

Beiträge: 8
Registriert: 29.10.2021

ACAD, BricsCAD, ArcadiaBIM, SolidWorks, ProfiCAD,
ThinkPad P72, 80GB RAM, 3 TB
MSI WS76, 64GB RAM, 4 TB

erstellt am: 12. Jan. 2023 19:06    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

Ihr seid so geil... 
Das spart richtig Zeit... 
Darf ich fragen, was ich in die Lisp noch einfügen muss, um den Text in die ursprüngliche Formatierung zurück zu setzen?

Danke Euch ganz herzlich

Gruß RalfB

------------------
I like to move it...

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



Bauzeichner/Bautechniker (m/w/d)

Wir sind ein Ingenieurbüro im Bereich der Planung und Bauüberwachung von Infrastrukturanlagen mit etwa 100 Mitarbeiterinnen und Mitarbeitern in acht Niederlassungen.

Für öffentliche und private Auftraggeber bieten wir die komplette Bandbreite der Ingenieurdienstleistungen. Unsere Aufgaben liegen hierbei schwerpunktmäßig in der Verkehrs- und Verkehrsanlagenplanung sowie in sämtlichen wasserwirtschaftlichen und wasserbaulichen Planungs- und Sanierungsaufgaben inkl....

Anzeige ansehenTechnischer Zeichner, Bauzeichner
Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 13. Feb. 2023 15: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 Nur für 100dpi 10 Unities + Antwort hilfreich

Eben erst gelesen, war geschäflich weg und dann krank. Blödes timing ... ich weis

Du fügst vor die Zeile: (setq n (1+ n))

Das hier ein:
(vla-put-StyleName (nth n att_list) (vla-get-StyleName (nth n att-def_list)))

Da kannst du natürlich auch noch andere Sachen reinschreiben wie Textausrichtung, Drehung, Farbe, Layer usw.

(nth n att_list) holt sich aus einer Liste mit Attributen (die vorher erstellt wurde) ein Attribut wobei n ein Zähler ist.
(nth n att-def_list) macht das selbe mit einer Liste die Attributdefinitionen enthält.
Die Beiden müssen natürlich zusammenpassen (also Definition und Attribut) das wird in dieser einfachen Programmversion nicht weiter geprüft.
vla-put-... weist etwas zu ws mit vla-get-... geholt wird
Also: weise dem Attribut etwas zu was aus der Definition geholt wird. Das kann ja dann alles Mögliche sein.

Viel Spaß damit 

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

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