Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  HiCAD - CAD-Software
  Makro beim Speichern ausführen

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
Autor Thema:  Makro beim Speichern ausführen (2150 mal gelesen)
bacengeugn
Mitglied
Konstrukteur


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

Beiträge: 181
Registriert: 10.11.2011

erstellt am: 24. Jun. 2014 10: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

Hallo zusammen,

lassen sich Makros irgendwie beim Speichern der Szene automatisch ausführen?

Ich möchte ein Makro benutzen um bei Translationsteilen, denen eine Variable 'l' zugeordnet ist, das Teileattribut Länge automatisch beim Speichern damit abzugleichen.

[Diese Nachricht wurde von bacengeugn am 24. Jun. 2014 editiert.]

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

dide
Mitglied


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

Beiträge: 8
Registriert: 28.09.2007

erstellt am: 25. Jun. 2014 13:44    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 bacengeugn 10 Unities + Antwort hilfreich

Hallo bacengeugn,

wie man Deine Aufgabenstellung mittels Makro lösen kann, weiß ich leider nicht.
Aber warum erst beim Speichern abgleichen?
Mittels "Script einfügen" im Feature des Teils können Teilevariablen ausgelesen/gesetzt werden und/oder mit Attributen abgeglichen werden.

Hier ein Beispiel(über Teilevariablen wird das Attribute "Sachnummer" gesetzt/angepasst):

  //aktives gerechnete Teil in die Node-Variable n übernehmen
        Node n = Context.ProtocolNode;
       
        //Variablen des Teils:
        VariableSet teilevar = n.VariableSet;
               
        //einzelne Teilevariablen:
       
        double da = (double)teilevar["da"].Value;
        double di = (double)teilevar["di"].Value;
        double b = (double)teilevar["b"].Value;
       
               
        //Neue Sachnummer zusammenstellen;
       
        string Name = "Stadi " + di.ToString() + "x" + da.ToString() + "x" + b.ToString() + " - Profil GC";
        //MessageBox.Show("NEUE Sachnummer : " + Name);
       
        // Teileattribute Sachnummer setzen:
        n.AttributeSet["$BB"].Value = Name;

Ich hoffe, ich konnte damit helfen.

Gruß

DD

------------------
HICAD 1802.3
Helios 1800.6
Win 7 Professional
Intel Core i7-2600 3,4GHz, 16GB RAM
NVIDIA Quadro 2000

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

bacengeugn
Mitglied
Konstrukteur


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

Beiträge: 181
Registriert: 10.11.2011

erstellt am: 25. Jun. 2014 15: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

Danke für den Tip

Ich war eben dabei ein Skript zu erstellen, das per Icon gestartet wird, die Werte abgleicht und dann das Speichern übernimmt. Ich hätte es dann zum Speichern verwendet. Aber deine Lösung ist besser weil ich nicht alle Nodes auf ein Translationsteil testen muss und das nicht bei jedem Speichern machen muss.

Muss ich das Skript dann in jedem Teil einfügen? So wäre es wiederum aufwändig.

[Diese Nachricht wurde von bacengeugn am 25. Jun. 2014 editiert.]

[Diese Nachricht wurde von bacengeugn am 25. Jun. 2014 editiert.]

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

bacengeugn
Mitglied
Konstrukteur


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

Beiträge: 181
Registriert: 10.11.2011

erstellt am: 25. Jun. 2014 16: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

Ich würde vermutlich den Weg gehen für unsere Profile bei der Erstellung bereits ein Skript zu verwenden, das ein Translationsteil normal erstellt. Damit es dann bei Änderungen der Länge das Attribut abgleicht müsste irgendwie von vornherein so ein Featureskript bei der Erstellung automatisch mit eingefügt werden.

Falls das möglich ist, werde ich die Idee später verfolgen. Für den Moment versuch ich noch die erste Variante zum Laufen zu bringen und da es mein erstes Skript ist und ich nur in C++ einigermaßen fit war mit ein bisschen Java kann vielleicht jemand anmerken was ich besser machen könnte.


Es kommt folgende Ausnahme

Unknown attribute type.
ISD.CAD.Base.AttributeException
StackTrace:
bei HiCAD.Data.Attribute
bei Script.Search Translation(AssemblyNode parent)
bei Script.Main()


mein Skript

Code:

using System;
using System.Collections;
using System.Windows.Forms;

using ISD.Scripting;
using ISD.BaseTypes;
using ISD.Math;
using ISD.CAD.Base;
using ISD.CAD.Data;
using ISD.CAD.Contexts;
using ISD.CAD.Interface;

class Script : ScriptBase
{
        [Context(typeof(UnconstrainedContext))]
        public static void Main()
        {
                SearchTranslation(Context.ActiveScene.MainAssembly);

                // Szene speichern
                Context.ActiveScene.Save();
        }

        private static void SearchTranslation(AssemblyNode parent)
        {
                foreach(Node n in Context.Nodes)
                {
                        if(n.FeatureProtocol[1].Name == "Translationsteil")
                        {

                                //MessageBox.Show("Gefunden");
                                VariableSet vars = n.VariableSet;

                                if(vars.Contains("l"))
                                      AttributeSetExtensions.SetValue(n.AttributeSet,"§03",vars["l"].Value);
                        }
                }
        }

        public static UnconstrainedContext Context
        {
                get { return BaseContext as UnconstrainedContext; }
        }
}



Ich hab den Fehler bereits gefunden und abgestellt

[Diese Nachricht wurde von bacengeugn am 26. Jun. 2014 editiert.]

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

Jassir-ben-Hussein
Mitglied
Dipl. Ing. Maschinenbau


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

Beiträge: 95
Registriert: 02.03.2011

Ansys 19.1
Hicad 2021
Helios 2021

erstellt am: 27. Jun. 2014 09: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 Nur für bacengeugn 10 Unities + Antwort hilfreich

Hallo ihr beiden,

ich würde auch gerne was mit Skripten machen.
Gibt es da irgendwie eine weitergehende Dokumentation oder habt ihr euch das selbst beigebracht?

Gruß

Malte

------------------
Stell dir vor es geht und keiner kriegts hin!

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

bacengeugn
Mitglied
Konstrukteur


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

Beiträge: 181
Registriert: 10.11.2011

erstellt am: 27. Jun. 2014 13: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

im HiCAD Ordner unter docu/API findet man die Dokumentation und für Beispiele musst du nach *.cs Dateien im HiCAD-Ordner suchen.

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

Jassir-ben-Hussein
Mitglied
Dipl. Ing. Maschinenbau


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

Beiträge: 95
Registriert: 02.03.2011

Ansys 19.1
Hicad 2021
Helios 2021

erstellt am: 30. Jun. 2014 07:48    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 bacengeugn 10 Unities + Antwort hilfreich

Besten Dank...

------------------
Stell dir vor es geht und keiner kriegts hin!

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

bacengeugn
Mitglied
Konstrukteur


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

Beiträge: 181
Registriert: 10.11.2011

erstellt am: 30. Jun. 2014 08: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

bacengeugn
Mitglied
Konstrukteur


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

Beiträge: 181
Registriert: 10.11.2011

erstellt am: 24. Okt. 2014 16:20    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 habe die Lösung inzwischen selbst gefunden. Das vorinstallierte Makro speinam.mac wird beim klicken der Speichern-Taste automatisch aufgerufen. Dort kann man den Aufruf eigener Makros platzieren, die beim speichern ausgeführt werden sollen.

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