| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Intertool 2024 |
Autor
|
Thema: Rechnung mit zuweisung erstellen (1971 mal gelesen)
|
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 23. Nov. 2020 09:58 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Community, habe meinen Programmcode soweit erweitert (grundgerüst, muss auch noch bearbeitet werden) Funktioniert auch, ist nur noch etwas chaotisch (setze mich noch daran) ------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford
[Diese Nachricht wurde von Malte70 am 23. Nov. 2020 editiert.] [Diese Nachricht wurde von Malte70 am 27. Nov. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 23. Nov. 2020 17:13 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Moin, in Rätseln du schreibst ... beim Code auch. was möchtest du mit Abmessung +4 machen und wo ist die? wozu zählst du die Konfigurationen durch (for i = ... ... next i) wenn damit überhaupt nichts gemacht wird? du hast immer noch 2x get und dazwischen das delete - ... wozu??? und warum steht da mehrfach mittendrin noch mal set model = activedoc und sogar set swapp ... ? sieht ja aus, wie mein Schreibtisch ... bitte aufräumen! Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 23. Nov. 2020 17:20 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Hallo Malte, Zitat: würde gerne die Abmessung +4 rauswerfen lassen
Was meinst du mit "Abmessung +4" Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 24. Nov. 2020 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Moin, Zitat: Original erstellt von Malte70: Funktioniert auch, ist nur noch etwas chaotisch (setze mich noch daran) ... strOrdnerName = "" 'Dateiendung strName = Dir(strOrdnerName & "*.sldprt") ... FileName = strOrdnerName & strName ... Set ModelDoc = swApp.OpenDoc6(FileName, 1, 0, "", Errors, Warnings)
Der Code kann nicht funktionieren, da Opendoc6 einen eindeutigen Dateinamen benötigt. Sobald zwei SWX-Parts in dem Verzeichnis sind, gibt es einen Fehler, da ModelDoc dann den Wert "Nothing" bekommt. ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 25. Nov. 2020 15:34 <-- editieren / zitieren --> Unities abgeben:
Schonmal danke für eure Zeit, dachte ich hätte das Problem besser beschrieben Angenommen ich bekomme hier bei den Abmessungen den Wert 100 herausgeworfen , dann möchte ich das er mir stattdessen 104 herauswirft. ich hab hier in der Skizze einen wert, z.B.100 herausgelesen und möchte aber stattdessen 104 dort stehen haben. Get4 will der scheibar haben, sonst bleibt mein vorheriger wert dort stehen. ------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford
[Diese Nachricht wurde von Malte70 am 27. Nov. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 25. Nov. 2020 15:37 <-- editieren / zitieren --> Unities abgeben:
Hab den Code etwas unter Zeitdruck gefühlt 1000 mal geändert, seht mir das bitte etwas nach, ich räum auch noch auf ------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 25. Nov. 2020 17:35 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Zitat: @Andreas: es funktioniert. wenn ich z.b. -Baugruppen oder Bibliotheksdatein aufrufe, dann werden mir diese auch angezeigt,wie schon geschrieben, Funktioniert. habe nur keinen Pfad eingetragen.
Wenn du die Datei selbst öffnest, dann gebrauchst du die OpenDoc-Methode nicht. Das etwas funktioniert, will ich nicht abstreiten, aber das ist ein reines Zufallsergebnis und hat nichts mit einem strukturierten Programm zu tun. Sorry für die harten Worte, aber es macht keinen Sinn, da du mit Copy&Paste nie zu einem brauchbaren und verlässigen Makro kommst. Um auf dein Problem mit deiner Abmessung plus vier zurückzukommen: Du kannst z.B. eine globale Variable "Maß" anlegen und dort deine Gleichung "D1@Skizze1"+4 hinterlegen. Dann ändert sich dieses Maß auch bei Änderung der Geometrie. Dann musst du nicht noch einmal das Makro darüberlaufen lassen. Die Datei ist im 2020er Format ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 26. Nov. 2020 08:15 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort, das Problem ist, das die Dateien schon existieren und bestimmt über 100 Stück sind. Ich wollte da eben nicht jede Datei öffnen und das Maß an eine Globale Variable hängen ------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 26. Nov. 2020 08:36 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Moin, es gibt erst ab SWX2021 die Möglichkeit, Berechnungen in den Eigenschaften vorzunehmen. Von daher bleibt dir zum Einen die Möglichkeit, den Wert für deine Eigenschaft im Programm zu berechnen und als reinen Text zu übergeben. Wenn du dann aber etwas am Teil änderst, wird sich diese Eigenschaft nicht mitändern. Dessen musst du dir bewußt sein. Alternativ kann ich mir vorstellen, die globale Variable nebst der Gleichung im Programm zu erzeugen. Habe ich aber noch keine Erfahrung mit, müsste man sich reinfuchsen ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003 SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000
|
erstellt am: 26. Nov. 2020 08:39 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
|
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 26. Nov. 2020 09:03 <-- editieren / zitieren --> Unities abgeben:
|
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 26. Nov. 2020 20:08 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Zitat: ... Der Code kann nicht funktionieren, da Opendoc6 einen eindeutigen Dateinamen benötigt...
Moin, doch, ich glaub das funktioniert schon so: - mit dir(pfad + filter) bekommt man den ersten treffenden Dateinamen zurück. - mit jdedem weiteren dir (ohne Parameter) bekommt man den nächsten passenden Dateinamen ... bis keiner mehr da ist. auch die Schleife ist da ;) , die Abbruchbedingung sogar redundant: - solange strName nicht "" ist .... - aber falls es doch "" ist (sonst wird filename nicht gleich strOrdnerName sein ...) Code: Do While strName <> "" FileName = strOrdnerName & strName If FileName = strOrdnerName Then Exit Do End If
--> einschließlich der Leerzeile einfach mal 4 Zeilen rausschmeissen ... ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 27. Nov. 2020 08:57 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Hallo Christian, den Dir-Befehl habe ich wohl versehentlich ignoriert bzw. im oberen Teil falsch interpretiert Ist aber eine interessante Lösung, um mehrere Dateien in einer Rutsche abzuarbeiten. Danke dir noch mal für die Info! ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 27. Nov. 2020 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
|
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 01. Dez. 2020 14:54 <-- editieren / zitieren --> Unities abgeben:
Zitat: Wenn du dann aber etwas am Teil änderst, wird sich diese Eigenschaft nicht mitändern. Dessen musst du dir bewußt sein.
Das wäre egal, die Teile werden eh nie wieder zum Ändern angefasst. Hab mir das jetzt tiefgehend angeschaut, würde aber doch gerne bei einer einfachen Rechnung bleiben, sprich: Code:
Dim instance As IEquationMgr Dim Index As Integer Dim Equation As String Dim Solve As Boolean Dim value As Integer Set swEquationMgr = swModel.GetEquationMgrvalue = instance.Add2((0, Chr(216) + Chr(34) + "D2@Skizze1" + "@@" + sConfigName + "@" + strName + Chr(34), True)) + 4
da kommt bei mir ein Fehler, hab ich da was komplett falsch gemacht?
------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 01. Dez. 2020 15:02 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Die "+4" müssen mit in die Gleichung: Code: value = instance.Add2((0, Chr(216) + Chr(34) + "D2@Skizze1" + "@@" + sConfigName + "@" + strName + "+ 4" + Chr(34), True))
------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 01. Dez. 2020 15:23 <-- editieren / zitieren --> Unities abgeben:
Jetzt zeigt er mir: Fehler91 und Syntaxfehler ------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford [Diese Nachricht wurde von Malte70 am 01. Dez. 2020 editiert.] [Diese Nachricht wurde von Malte70 am 27. Nov. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 01. Dez. 2020 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Das ist mein Code: Code: value = instance.Add2((0, Chr(216) + Chr(34) + "D2@Skizze1" + "@@" + sConfigName + "@" + strName + "+ 4" + Chr(34), True))
[/B] Das ist dein Code: Code: value = instance.Add2(0, Chr(216) + Chr(34) + "D2@Skizze1" + "@@" + sConfigName + "@" + strName + Chr(34) + "+ 4", True)
Jetzt suche und finde den Fehler
------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 01. Dez. 2020 15:52 <-- editieren / zitieren --> Unities abgeben:
|
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 01. Dez. 2020 16:19 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
|
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 01. Dez. 2020 16:31 <-- editieren / zitieren --> Unities abgeben:
Ja, ich hatte das mit beiden Stellungen probiert und vergessen diese wieder zurückzuschieben aktuell sagt er das eine With- blockvariable fehlt. hab ich da einen Wert vielleicht nicht richtig Dimensioniertß Bin mir z.B nicht sicher ob ich Dim Index vielleicht as long statt Integer machen sollte. Da sagt die Hilfe meiner Ansicht nach beides. Ein Paar Klammern wollte er weg haben. ------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 01. Dez. 2020 16:48 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Hallo Malte, hab den Code mal in etwas "schöner" umgeschrieben um eine etwas besser lesbare Grundlage für alle zu schaffen. Da ich jetzt nicht genau wusste was in welcher Eigenschaft bzw. in der Gleichung stehen soll hab ich da etwas gefreestylt, also musst du ggf. noch anpassen. Code: Option ExplicitDim swApp As SldWorks.SldWorks Dim swModelDoc As SldWorks.ModelDoc2 Dim swModelDocExt As SldWorks.ModelDocExtension Dim swEquationMgr As SldWorks.EquationMgr Dim swCustPropMgr As SldWorks.CustomPropertyManager Dim fileName As String Dim strOrdnerName As String Dim strName As String Dim val As String Dim valout As String Dim varsplit As Variant Dim vConfNameArr As Variant Dim sConfigName As String Dim i As Integer Dim lWarnings As Long Dim lErrors As Long Dim longstatus As Long Dim boolstatus As Boolean Sub main() Set swApp = Application.SldWorks 'Dateiposition strOrdnerName = "C:\_SMB\CAD\_SWX-Vorlagen\Makros\testordner\" 'Dateiendung strName = Dir(strOrdnerName & "*.SLDPRT") Do While strName <> "" fileName = strOrdnerName & strName If fileName = strOrdnerName Then Exit Do End If Set swModelDoc = swApp.OpenDoc6(fileName, 1, 0, "", lErrors, lWarnings) Set swModelDocExt = swModelDoc.Extension Set swCustPropMgr = swModelDocExt.CustomPropertyManager("") Set swEquationMgr = swModelDoc.GetEquationMgr varsplit = Split(strName, ".") vConfNameArr = swModelDoc.GetConfigurationNames For i = 0 To UBound(vConfNameArr) sConfigName = vConfNameArr(i) Next i boolstatus = swCustPropMgr.Get4("Abmessung", False, val, valout) boolstatus = swModelDoc.DeleteCustomInfo2(sConfigName, "Abmessung") Debug.Print Chr(34) + "Abmessung = " + "D1@Skizze1" + "@@" + sConfigName + "@" + strName + "+ 4" + Chr(34) longstatus = swEquationMgr.Add2(0, Chr(34) + "Abmessung = " + "D1@Skizze1" + "@@" + sConfigName + "@" + strName + "+ 4" + Chr(34), True) boolstatus = swModelDoc.AddCustomInfo3(sConfigName, "Abmessung", swCustomInfoText, Chr(216) + valout) boolstatus = swModelDoc.AddCustomInfo3(sConfigName, "Gewicht", swCustomInfoText, Chr(34) + "SW-Mass" + "@@" + sConfigName + "@" + varsplit(0) + ".sldprt" + Chr(34)) boolstatus = swModelDoc.AddCustomInfo3(sConfigName, "Benennung", swCustomInfoText, "") boolstatus = swModelDoc.AddCustomInfo3(sConfigName, "Norm", swCustomInfoText, "") boolstatus = swModelDoc.AddCustomInfo3(sConfigName, "Lieferant", swCustomInfoText, "") 'Ende Einfügen ' Zoom To Fit swModelDoc.ShowNamedView2 "*Isometrisch", 7 swModelDoc.ViewZoomtofit2 Debug.Print "Abmessung" Debug.Print strName & " ==> " & val & " ==> " & valout longstatus = swModelDoc.SaveAs3(fileName, 0, 2) swApp.CloseDoc "" strName = Dir Loop End Sub
Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 01. Dez. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 01. Dez. 2020 17:33 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Zitat: Original erstellt von Malte70: steht bei beiden Stellungen
Dann will ich mal für Aufklärung sorgen: Du fügst mit der Add2-Methode eine Gleichung hinzu. In SWX müssen die Gleichungen in Anführungszeichen eingeschlossen sein. Das sind die Chr(34) vorne an zweiter Stelle und ganz hinten. Du hast dein Teilstring "+4" aber hinter das letzte Chr(34) gesetzt, so dass der Gleichungsmanager meckert. Es spielt also sehr wohl eine Rolle, wo die "+4" stehen ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 02. Dez. 2020 09:30 <-- editieren / zitieren --> Unities abgeben:
@Andreas Das hatte ich so verstanden! In den Eigenschaften würde das so aussehen: Maß in der Zeichnung Ø100 alt:
Code:
Ø"D2@Skizze1@@BFM Manschette Ø100@xx liØ100.SLDPRT
neu:
Code:
Ø"D2@Skizze1@@BFM Manschette Ø100@xx liØ100+4.SLDPRT"
Bernd hat das jetzt so umgeschrieben, das der Wert einmalig genommen wird und trotz Änderung bestehen bleiben würde. Alles gut soweit. die + "4" + erziehlen nur keinen Effekt ------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford [Diese Nachricht wurde von Malte70 am 27. Nov. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 02. Dez. 2020 09:52 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Malte, du mischt aber alles quer Beet Jetzt setzt du auf einmal einen Dateinamen zusammen, vorher sollte es eine benutzerdefinierte Eigenschaft sein. Frei nach Robert Lembke: "Welches Schweinerl hätten wir denn gerne???" Wenn du im Dateinamen die 104 stehen haben möchtest, musst du anders vorgehen. Dann musst du den Zahlenwert von D2@... bestimmen, Stichwort Umwandlung von String in Integer oder Long, dann die Addition durchführen und das Ganze wieder in deinen Dateinamen umwandeln. ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 02. Dez. 2020 13:39 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Sry, wenn einer so mit dem Auto ankäme und nach dem Weg fragt, müsste man den Schlüssel abnehmen ... hier kann z.Glück nicht ganz so viel passieren Wenn jemand dich ständig als Peter anspricht, wirst du vermutlich nicht reagieren, wenn du Malte heisst, oder? Wenn du etwas als set swEquationManager anlegst, kannst du nicht erwarten, dass es auf Instance hört ... genau das gleiche mit modeldoc und Part ... Das hier kann weg, weil überflüssig !!
Code:
If fileName = strOrdnerName Then Exit Do End If
Hier wird etwas "modeldoc" getauft und dann nach "part" gerufen ...
Code:
Set ModelDoc = swApp.OpenDoc6(fileName, 1, 0, "", errors, warnings) swApp.ActivateDoc2 strName, False, errors Set swEquationMgr = Part.GetEquationMgr
Dann holst du einfach alles nochmal, diesmal klappt es, aber der alte Müll schwirrt noch rum ...
Code:
Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swEquationMgr = swModel.GetEquationMgr
und dann wird nach "instance" gerufen ??? Code: value = instance.Add2(0, Chr(216) + Chr(34) + "D2@Skizze1" + "@@" + sConfigName + "@" + strName + Chr(34) + "+ 4", True)
Super gruselig ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 02. Dez. 2020 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Hallo Malte, ersetzt mal Code: longstatus = swEquationMgr.Add2(0, Chr(34) + "Abmessung = " + "D1@Skizze1" + "@@" + sConfigName + "@" + strName + "+ 4" + Chr(34), True)
durch Code: longstatus = swEquationMgr.Add2(0, "Abmessung" + Chr(34) + "=" + Chr(34) + "D2@Skizze1" + Chr(34) + "+ 4", True)
dann sollte jetzt in den Globalen Variablen (Gleichungen) auch für Abmessung der Wert mit +4 verrechnet werden. Kannst du noch mal Stichpunktartig aufführen was passieren soll? Soll das wahrscheinlich Rohmaß in den Eigenschaften (benutzerdefiniert oder konfigurationsspezifisch) oder Gleichungen (als Globale Variable) stehen oder in beidem (beachte hierführ es kann keine Globale Variable und Eigenschaft mit identischem Namen gleichzeitig geben), soll der Wert nur als Text geschrieben sein oder verknüpft oder eine Mischung? Gruß Bernd PS: @Christian du triffst es mit grusselig ganz gut, das war auch meine Intension den Code zumindes rudimentär aufzubereiten bevor ich dadran etwas weiter zu machen.
------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 02. Dez. 2020 editiert.] [Diese Nachricht wurde von bk.sc am 02. Dez. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 02. Dez. 2020 19:58 <-- editieren / zitieren --> Unities abgeben:
Ich Programmiere jetzt notgedrungen nebenher ca.3 Wochen. Man kann sich halt nicht in ein Lambo setzen und direkt den Grand Prix gewinnen. , muss erstmal fahren lernen. Bin einfach froh über jede Hilfe. Also,
- das Maß im 3D Modell soll stehenbleiben. - das Ergebnis reicht mir als Zahl in den Eigenschaften - Globale Variablen würde ich da gerne aus vielen Gründen weglassen. Danke schonmal ------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 02. Dez. 2020 20:45 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
|
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003 SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000
|
erstellt am: 02. Dez. 2020 21:34 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
So, habe mal auf die Schnelle was erstellt: Code: Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim strDateipfad As String Dim strPfad As String Dim strDateiname As String Dim swConfigMgr As SldWorks.ConfigurationManager Dim swConfig As SldWorks.Configuration Dim swSelMgr As SldWorks.SelectionMgr Dim swDispDim As SldWorks.DisplayDimension Dim swDim As SldWorks.Dimension Dim vConfigNameArr As Variant Dim vConfigName As Variant Dim vDimValArr As Variant Dim vDimVal As Variant Dim sSpecConfigNameArr(0) As String Dim vSpecConfigNameArr As Variant Dim dimValue As Variant Dim dblRoh As Double 'Solidworks anbinden Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc 'Dateipfad ermitteln strDateipfad = swModel.GetPathName ' Zerlegen in Pfad und Dateiname ohne Extension (7 Zeichen) For i = Len(strDateipfad) To 1 Step -1 If Mid(strDateipfad, i, 1) = "\" Then strPfad = Left(strDateipfad, i) strDateiname = Mid(strDateipfad, i + 1, Len(strDateipfad) - i - 7) Exit For End If Next i 'Bemaßung auswählen Set swConfigMgr = swModel.ConfigurationManager Set swConfig = swConfigMgr.ActiveConfiguration Set swSelMgr = swModel.SelectionManager status = swModel.Extension.SelectByID2("D1@Skizze1@" & strDateiname & ".SLDPRT", "DIMENSION", 0, 0, 0, False, 0, Nothing, 0) Set swDispDim = swSelMgr.GetSelectedObject6(1, -1) Set swDim = swDispDim.GetDimension vConfigNameArr = swModel.GetConfigurationNames dimValue = swDim.GetSystemValue3(swThisConfiguration, vConfigNameArr(0)) 'Testausgabe Debug.Print dimValue(0) 'Ausgabe ist in m 'Rohmaß festlegen => 4 mm addieren dblRoh = (dimValue(0) * 1000) + 4 Debug.Print dblRoh End Sub
In der ZIP-Datei steckt ein Zylinder im SWX2020-Format und das Makro als swp-Datei. Ich lese den Wert der Kreisbemaßung aus Skizze1 aus und addiere dann 4 mm hinzu. Mit dieser Zahl kannst du dann deine Eigenschaft oder auch den Dateinamen "füttern" ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 03. Dez. 2020 10:18 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Zitat: Original erstellt von Malte70: Ich Programmiere jetzt notgedrungen nebenher ca.3 Wochen. Man kann sich halt nicht in ein Lambo setzen und direkt den Grand Prix gewinnen. , muss erstmal fahren lernen. Bin einfach froh über jede Hilfe. ...
Hallo Peter (siehe mein Post vorher) deshalb versuchen wir ja auch hartnäckig zu helfen, aber der Verlauf erweckt noch nicht so den Eindruck, als wenn die Hilfe ankommt. ich mein in dem Sinn, dass du im eigenen Quelltext die Hinweise berücksichtigst. wir machen das hier nämlich auch nur nebenbei und aus Enthusiasmus - die meisten jedenfalls. Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 03. Dez. 2020 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Hallo Malte, Zitat: Globale Variablen würde ich da gerne aus vielen Gründen weglassen
. Der Charm beim Arbeiten mit einer zusätzlichen globalen Variable quasi als Hilfsvariable wäre eine direkte Abhängigkeit der Eigenschaft von der Bemaßung, d.H. die Eigenschaft ändert sich automatisch mit bei Bemaßungsänderung. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 03. Dez. 2020 14:41 <-- editieren / zitieren --> Unities abgeben:
@ Christian Das weiß ich doch, dafür bin ich auch echt dankbar. Wenn ich mal etwas Luft habe werde ich mir das auch alles mal von vorne anschauen. @ Bernd
das Problem ist, das die Teile nicht richtig erstellt wurden, und das möglichst keine Abhängigkeiten vorhanden sein sollen. ------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 03. Dez. 2020 15:41 <-- editieren / zitieren --> Unities abgeben: Nur für Malte70
Zitat: Original erstellt von Malte70: ... Wenn ich mal etwas Luft habe werde ich mir das auch alles mal von vorne anschauen ...
Den schwitzenden Holzfäller mit der stumpfen Säge kennst du? auf den Tip die Säge zu schärfen winkt er ab "keine Zeit, ich muss ja noch die ganzen Bäume fällen" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Malte70 Mitglied Konstrukteur
Beiträge: 61 Registriert: 11.11.2020 PC1 AMD Threadripper 1020X 12-Core G.Skill 64GB DDR4 MSI RX5700XT GDDR6 8GB 1TB SSD M2 Windows 10 Pro Inventor 2018 Inventor 2017 Solidworks 2015 Solidworks 2020 Solidworks 2018 SW PDM 2015 und 2020 Logitrace V.12 Autocad R13 Autocad 2017 Office 2019 Baugruppen meist ab 20.000 Teile<P>PC2 Dell Precision 5820
|
erstellt am: 04. Dez. 2020 11:50 <-- editieren / zitieren --> Unities abgeben:
@Christian bei mir müsste der Holzfäller erstmal fahren um ein Blatt zu holen,in der Zeit kommen dann die Holzfällerkollegen und und bohren Löcher in den Baum, damit man keine Möbel mehr daraus bauen kann @Bernd Hat jetzt alles funktioniert Ich werde mir als nächstes meine Bücher schnappen und diese genauer anschauen und mir das alles von vorne aneignen. Vielen ,vielen Dank nochmal, auch das ihr hier nicht an mir verzweifelt seid ------------------ Ich lehne es ab, anzuerkennen, dass es Unmöglichkeiten gibt - Henry Ford Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |