Zum Inhalt springen

Objekt Attribute


Empfohlene Beiträge

hallo tim,

 

mit der pipette werden die attribute eines referenzobjektes kopiert, d. h. wenn dein referenzobjekt die attribute der entsprechenden klasse aufweist, kannst du diese auf andere objekte übertragen. welche attribute kopiert werden sollen lässt sich im einstellungsfenster bestimmen.

möchtest du einem objekt die klassenattribute zuweisen ohne vorher ein referenzobjekt ausgewählt zu haben, funktioniert dass meines wissens nur über ein script.

 

gruß

kim

Windows 7/10 Prof. (x64), VW 2016/2017 Landschaft

Link zu diesem Kommentar

Danke für die Information, aber eine Lösung ist das für mich nicht, denn ich hab keine Ahnung von scripten. Mit der Pipette werden zwar die Klassenzugehörigkeit und auch die Eigenschaften übernommen, aber bei den Farben wird bei mir die zwar die richtige Farbe eingesetzt, nicht aber die Klassenattributigkeit... die fehlt.

 

Tim

Link zu diesem Kommentar

Hallo Tim,

 

wenn die Pipette die Attribute nicht wie gewünscht, trotz korrekt eingestellten Optionen, reagiert, versuche dann bitte mal folgendes.

 

:arrow:

 

- Überprüfe ob die aktive Klasse auf "keine" steht.

- Überprüfe ob die grafische Attribute der gewünschten Klasse auf "Automatisch zuweisen" steht.

- Zeichne ein neues Objekt z.B. Rechteck.

- Weise dem aktiven Objekt die gewünschter Klasse mittels Infopallete zu.

- Verwende jetzt das Werkzeug "Attribute kopieren..."

- Weise die gewünschten Objekte mit der Option Werkzeug "Attribute einfügen..." die Klasseneigenschaften zu.

 

Ich hoffe es hat funktioniert ... manchmal wenn Du die Klasseneigenschaften "überschreibst" mit eigenen Einstellungen aus der Attribute Pallette kann es sein, das dies das Werkzeug "Attribute kopieren..." korrekterweise merkt und die Eigenschaften nicht gemäß Klasseneigenschaften überträgt.

Es lassen sich natürlich alle Objekte auch aktivieren und über Attributepallette Klasseneigenschaften auswählen. Allerdings ist mir die erste Methode lieber.

 

Nicht aufgeben mit Klasseneigenschaften und "Attribute kopieren..." zu arbeiten. Es ist wirklich eine schöne VectorWorks Funktion.

 

Gruß

Joost

macOS von a bis z & mcd 2 bis vwx 20xy

Link zu diesem Kommentar

einfach nur ein objekt anklicken und sagen "hey! du hast jetzt nicht mehr irgendwelche attribute, sondern, ""deine klassenattribute"" ist das wirklich zuviel verlangt? muß es doch was geben! weil wenn man dem ding da sagt es soll die klassenfüllungsart?! haben und die ist grad leer, dann wird die farbe nicht angezeigt. ändert man jetzt die klassenfüllungsart auf solid, kann es einem passieren, daß dann alles grün ist, weil durch irgendeinen be.... zufall die farbe auf grün eingestellt war. und dann geht die sucherei und einstellerei wieder los...

Link zu diesem Kommentar

hallo tim,

 

die funktion die du dir vorstellst fand ich auch ganz praktisch (gerade wenn man zeichnungen von dritten bekommt). deshalb habe ich mal versucht ein script zu schreiben, dass dem aktivierten objekt die klassenattribute (auf der sich das objekt befindet) zuweist. es handelt sich um ein ganz einfaches script und funktioniert auch nur auf der jeweils aktiven ebene und nicht innerhalb von symbolen.

 

und so geht's:

wähle im menü 'extras -> vectorscript -> r-weiterungen'. im darauffolgenden dialogfenster klickst du auf 'neu'. anschließend trägst du bei 'name' den befehlsnamen ein, z. b. "klassenattribute kopieren". bei den auswahloptionen nimmst du 'menübefehl' und bestätigst mit 'ok'.

der name wird jetzt im auswahlfenster angezeigt, klicke jetzt auf 'code'. im editorfenster kopierst du folgende zeilen hinein:

 

PROCEDURE attribute_uebernehmen;

 

VAR

currentObject:HANDLE;

resultSelection:BOOLEAN;

 

BEGIN

currentObject:=FActLayer;

IF (NumObj(ActLayer)>1) THEN

BEGIN

REPEAT

resultSelection:=Selected(currentObject);

IF (resultSelection=TRUE) THEN

BEGIN

SetFillColorByClass(currentObject);

SetFPatByClass(currentObject);

SetLSByClass(currentObject);

SetLWByClass(currentObject);

SetPenColorByClass(currentObject);

END;

currentObject:=NextObj(currentObject);

UNTIL (currentObject=LActLayer);

IF (currentObject=LActLayer) THEN

BEGIN

resultSelection:=Selected(currentObject);

IF (resultSelection=TRUE) THEN

BEGIN

SetFillColorByClass(currentObject);

SetFPatByClass(currentObject);

SetLSByClass(currentObject);

SetLWByClass(currentObject);

SetPenColorByClass(currentObject);

END;

END;

END ELSE

BEGIN

resultSelection:=Selected(currentObject);

IF (resultSelection=TRUE) THEN

BEGIN

SetFillColorByClass(currentObject);

SetFPatByClass(currentObject);

SetLSByClass(currentObject);

SetLWByClass(currentObject);

SetPenColorByClass(currentObject);

END;

END;

END;

 

RUN (attribute_uebernehmen);

 

anschließend mit 'ok' den editor und das dialogfenster schließen.

jetzt musst du den befehl ins kontextmenü übernehmen, öffne dazu den maskeneditor. unter dem registerreiter 'menüs' findest du jetzt den eintrag 'vectorscripts'. dort findest du den neu geschriebenen befehl. füge diesen ins 'kontextmenü objekt' und beende den maskeneditor.

wenn du jetzt mit der rechten maustaste auf dein objekt klickst, kannst du den befehl ausführen.

durch den befehl werden die füll-, stift- und linienattribute übernommen (erschien mir sinnvoll). um auch die transparenz und die linienendzeichen zu übernehmen, müsste man das script um diese dinge erweitern. du kannst auch mehrere objekte gleichzeitig markieren, unabhängig von der klassenzugehörigkeit (bleibt erhalten). bei sehr vielen objekten dauert es eine weile bis das script alles durchgeackert hat, also nicht erschrecken wenn plötzlich das programm "hängt".

ich kann natürlich nicht garantieren, dass das script frei von fehlern oder besonders ausgereift ist, bei mir erfüllt es aber seinen zweck. benutzung also auf eigene gefahr.

 

wenn du's ausprobierst, würde ich mich über eine rückmeldung freuen bzw. wenn jemand verbesserungsvorschläge hat um das script "professioneller" zu machen fänd ich das auch nicht schlecht.

 

noch was grundsätzliches:

es gehört beim arbeiten (das gilt für alle programme und nicht nur für vw) sehr viel selbstdisziplin dazu ;) . mit den attributen verhält es sich so, dass sich das objekt die grundeinstellung der eingestellten attribute merkt. das bezieht sich nicht auf die klassenattribute sondern auf die einstellungen, die in der attribute-palette gemacht wurden. ob das gut ist oder nicht sei erstmal dahingestellt. jeder anwender hat so seine eigenen vorstellungen und man kann einem softwareentwickler nicht den vorwurf machen 'zig millionen eventualitäten vorher vorauszuahnen. bei der vielzahl von anwendern auf der welt, wird es nie das perfekte programm geben, dass absolut jeden zufrieden stellt. sicherlich vw hat so seine schwächen und auch fehler, aber wenn man sich die foren von anderen programmen anschaut, so ist vw objektiv betrachtet ziemlich gut platziert. nach meiner erfahrung entstehen viele probleme durch unwissenheit oder falscher anwendung des anwenders.

 

gruß

kim

  • Like 1

Windows 7/10 Prof. (x64), VW 2016/2017 Landschaft

Link zu diesem Kommentar
  • 2 Monate später...

Super! Geht toll glaub ich! Ich probier mal eine Weile. Wieso gibt es sowas nicht als standard? jetzt wäre noch ganz schön, wenn man die aktuellen arbeits attribut einstellungen zurücksetzen könnte (war mein eigentliches anliegen). damit die neu gezeichnete linie sauber so aussieht, wie die klasse das sagt. das finde ich immer so nervig, wenn sich diese ständig, durch falsches benutzen der pipette (die richtigen einstellungen dieser kriege ich leider nicht so hin...liegts an mir?!), verstellen. da muß man jedesmal in alle vier einstellungen um diese zurückzusetzen. ich mach das jetzt schon eher mit duplizieren von objekten, die richtig eingestellt sind.

das schöne ist ja, wenn die objekte die klassenatribute haben, kann man sie im layout temporär überschreiben, so wie plotstiles in anderen programmen.

 

aber erstmal VIELEN DANK

Link zu diesem Kommentar

hallo tim,

 

du hast recht mit der pipette funktioniert das nicht.

da ich grundsätzlich mit den klassenstilen arbeite bin ich bisher noch gar nicht auf dieses problem gestoßen, aber ein guter hinweis den ich gleich ausprobiert habe.

 

damit die attribute des objektes zur grundeinstellung der attribute-palette werden (die pipette übernimmt zwar die farben, aber stellt diese nicht auf die klassenstile) musst du mein script ein wenig modifizieren.

im script musst du folgende befehle ergänzen:

 

FillColorByClass;

FPatByClass;

LSByClass;

LWByClass;

PenColorByClass;

 

die einzelnen passagen sehen dann so aus:

 

...

BEGIN

FillColorByClass;

FPatByClass;

LSByClass;

LWByClass;

PenColorByClass;

SetFillColorByClass(currentObject);

SetFPatByClass(currentObject);

SetLSByClass(currentObject);

SetLWByClass(currentObject);

SetPenColorByClass(currentObject);

END;

...

 

wenn du jetzt das script ausführst übernimmt nicht nur das objekt die klassenstile, sondern auch die attribute-palette.

ich bin mir noch nicht ganz sicher, ob es nicht vielleicht sinnvoll ist zwei separate befehle daraus zu machen. insofern wäre es schön wenn du (oder ein anderer forumsteilnehmer) noch mal einen kommentar dazu abgeben könntest.

 

gruß

kim

Windows 7/10 Prof. (x64), VW 2016/2017 Landschaft

Link zu diesem Kommentar
  • 2 Wochen später...
  • 2 Wochen später...

@ martin

 

hallo,

 

das funktioniert mit der pipette. wie immer ist es bei vw eine einstellungssache. wenn du die pipette ausgewählt hast, klickst du auf "einstellungen attribute kopieren" in der methodenzeile. im erscheinenden dialogfenster entfernst du das häkchen bei "klassenattribute übertragen". des weiteren kannst du übrigens genau festlegen welche dinge kopiert werden sollen.

 

gruß

kim

Windows 7/10 Prof. (x64), VW 2016/2017 Landschaft

Link zu diesem Kommentar
  • 8 Jahre später...

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
  • Forenstatistik

    • Themen insgesamt
      23,5Tsd
    • Beiträge insgesamt
      121Tsd
×
×
  • Neu erstellen...