• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Makro vbs funktioniert richtig von Fenstern, aber nicht in SE

  • Ersteller Ersteller Davimont
  • Erstellt am Erstellt am

Davimont

Guest
Ich werde es erklären.
Nutzung von Zeit dieser Trick von @vespa_83 die Makros in vbs geschrieben zu starten.
Jetzt habe ich einen kreiert, der die doppelten Teile verbirgt (erstellt mit Chatgpt, also weiß ich nicht, wie elegant) und wenn ich von Fenstern geworfen werde, so wie ich es erwarte, sehe ich, dass die Teile eines nach dem anderen verschwinden.
Dann habe ich die ausführbare Datei von vespa_83 mit dem gleichen Namen wie die vbs umbenannt.
Wenn ich nun die Exe-Datei starte, wird die Anzeige der Komponenten umgekehrt, das Sichtbare ist versteckt und was versteckt wird sichtbar gemacht. die vbs-Datei funktioniert weiterhin richtig.
Was könnte davon abhängen?

Ich hänge auch das Makro an, wenn es nützlich sein könnte.
das Makro liest die erste Komponente und legt sie in ein Array ein.
Wenn Sie das nächste lesen, überprüfen Sie, dass sie nicht in der Array sonst verbergen sie.
 

Anhänge

das in vbs geschriebene Makro kann direkt im Solidedge Menü eingefügt werden (und durchgeführt), ohne dass eine ausführbare, haben Sie diese Route versucht?
 
Du hast mich neugierig gemacht und ich ging in den Führer.
wenn es standardmäßig nur zeigt Ihnen die Exe, aber es gab die erste Stimme, die ich nie erforscht hatte1727852088229.pngDank dws, Ich schaffte es, das Makro einzufügen und es funktioniert richtig.

Das Makro hat noch Mängel, um korrigiert zu werden, zum Beispiel kann ich sie nicht in die Unterarme bekommen), aber jetzt bin ich okay wie diese.
 
Du hast mich neugierig gemacht und ich ging in den Führer.
wenn es standardmäßig nur zeigt Ihnen die Exe, aber es gab die erste Stimme, die ich nie erforscht hatteAnhang anzeigen 72250Dank dws, Ich schaffte es, das Makro einzufügen und es funktioniert richtig.

Das Makro hat noch Mängel, um korrigiert zu werden, zum Beispiel kann ich sie nicht in die Unterarme bekommen), aber jetzt bin ich okay wie diese.
in Subassistancen müssen Sie Suboccurrences und Nicht-Ereignisse untersuchen
 
Denken Sie daran, dass der Code schreibt chatgpt, Ich lese es, indem ich erraten, was es tut, aber nichts mehr.

Jetzt habe ich diesen Code, der abnormal funktioniert.

In der Praxis wird es richtig die doppelten Teile auf der ersten Ebene zu verstecken, aber wenn es geht, um diejenigen der Unterbaugruppen zu verstecken, versteckt es sie in der Datei unten zusammen und nicht in dem Fenster, auf dem ich arbeite.

Wenn ich den Boden zusammen öffne, finde ich die versteckten Teile.

Ich habe tausend Tests gemacht, aber ich gehe nicht raus.

Code:
'initiierende feste Kante
Dim objapp
Dim objdoc
set objapp = getobject(, "solidedge.application")
set objdoc = objapp.activedocument.occurrences' geht davon aus, dass das aktive Dokument ein Set ist

' erstellt ein Wörterbuch, um die bereits verarbeiteten Elemente zu verfolgen
Dim verarbeitetitems
set processitems = createobject("scripting.dictionary")

„Initiative Aufforderung zur Bearbeitung der wichtigsten Beihilfen
Prozessccurrences objdoc

' zeigt eine letzte Nachricht
msgbox "das Verstecken doppelter Teile ist abgeschlossen. "

Wiederkehrende Funktion zu Prozessereignissen
sub Processoccurrences(occurrences)
Dim partoccurity
Dateiname
dim subcurrences

Iter durch alle Vorkommnisse (Teile oder Unterassistenzen)
für jede Partoccurrence bei Vorkommnissen
' erhält vollständigen Dateinamen (einschließlich Erweiterung)
Dateiname = Partoccurrence. eventdocument.fullname ' verwendet Vollnamen, um den vollen Pfad zu erhalten

Überprüfen Sie jetzt, ob es ein Set ist
wenn partoccurrence.subassembly dann
„Wenn es sich um einen Satz handelt, bearbeiten Sie seine internen Komponenten
suboccurrences = partoccurrence. Vorkommendokument.occurrences
Prozessgenauigkeiten
♪
Wenn es kein Set ist, überprüfen Sie, ob es bereits verarbeitet wurde
wenn verarbeitetitems.exists(Dateiname) dann
Wenn er schon versucht wurde, versteckt er ihn
partoccurrence.visible = falsch
♪
' wenn es nicht verarbeitet wurde, fügen Sie es in die Liste
processitems.add Dateiname, wahr
Ende
Ende
Nächste
Ende
 
Code:
Überprüfen Sie jetzt, ob es ein Set ist
wenn partoccurrence.subassembly dann
„Wenn es sich um einen Satz handelt, bearbeiten Sie seine internen Komponenten
suboccurrences = partoccurrence. Vorkommendokument.occurrences
Prozessgenauigkeiten
in diesem Teil des Codes, falls die Notwendigkeit ein Subassiem ist, rufen Sie den gleichen Sub erneut durch das Objekt 7 Suboccurrences = partoccurrence.occurrencedocument.occurrencesDies funktioniert nicht, da es die Vorkommnisse des Subaxiems darstellt und nicht die Vorkommnisse des Subaxiems im Hauptaxiem.
es muss daher geändert werden, suboccurrence = Teilereignis.suboccurrence
 
Geduld
wenn ich die Änderung eingegeben habe, gehe ich falsch Zeile 26, die den Pfad erkennt
Dateiname = Partoccurrence. Vorname
 
Dank dws, Ich schaffte es, das Makro einzufügen und es funktioniert richtig.
Gern geschehen.

Ich sehe @be_on_edge hat Ihnen bereits gute Ratschläge/Vorschläge gegeben, um Fehler zu korrigieren, wenn Sie einen Blick auf meine Version des Codes werfen möchten (nicht vollständig getestet). .
Code:
Option explizit

'Autor Revision Originalcode: redhead praderi 2024-10-02

variable Erklärung
Dim oapp
Dim odoc
Dim verarbeitetitems

' ordnet variable Anwendung zu
set oapp = getobject(, "solidedge.application")

' überprüfen, ob das Anwendungsobjekt zugewiesen wurde
wenn nicht oapp ist nichts
auf Fehlerwiederaufnahme

oapp.screenupdating = falsch
oapp.delaycompute = true

set odoc = oapp.activedocument ' weist aktives Dokument zu

' überprüfen, ob das aktive Dokument zugewiesen ist und ein Set ist
wenn nicht odoc ist nichts und odoc.type = 3 dann
set processitems = createobject("scripting.dictionary")

' leitet den Prozess für die Vorkommnisse des Hauptaxiems ein
odoc.occurrences

' eine Bestätigungsnachricht anzeigen
msgbox "das Programm kontrolliert alle Teile und versteckt die Duplikate." vbinformation, "vollständige Operation"
♪
msgbox "aktives Dokument ist kein Set!", vbexclaming, "unvollendeter Betrieb"
Ende

oapp.screenupdating = true
oapp.delaycompete = falsch
♪
' eine Bestätigungsnachricht anzeigen
msgbox "das Programm ist nicht aktiv!", vbexclaming, "unvollendeter Betrieb"
Ende

Set Processitems = nichts
odoc = nichts
oapp = nichts

Wiederkehrendes Unterprogramm
sub Processoccurrences(occurrences)
Dim partoccurity
Dateiname

Iter durch alle Vorkommnisse (Teile oder Unterassistenzen)
für jede Partoccurrence bei Vorkommnissen
' erhält vollständigen Dateinamen (einschließlich Erweiterung)
wenn partoccurrence.type = -1020639365
filename = partoccurrence.suboccurrencefilename ' verwendet suboccurencefilename, um den vollen Pfad zu erhalten
♪
filename = partoccurrence. eventfilename ' verwendet Vorkommendateinamen, um den vollen Pfad zu erhalten
Ende

Wenn es kein Set ist, überprüfen Sie, ob es bereits verarbeitet wurde
wenn verarbeitetitems.exists(Dateiname) dann
Wenn er schon versucht wurde, versteckt er ihn
partoccurrence.visible = falsch
♪
' wenn es nicht verarbeitet wurde, fügen Sie es in die Liste
processitems.add Dateiname, wahr
Ende

Überprüfen Sie jetzt, ob es ein Set ist
wenn partoccurrence.subassembly dann
„Wenn es sich um einen Satz handelt, bearbeiten Sie seine internen Komponenten
Processccurrences partoccurrence.suboccurrences
Ende
Nächste
Ende

% 1 Ich wollte Sie fragen, Sie erkannten, dass die ausführbare Datei, die Sie in Ihrer ersten Nachricht veröffentlicht haben, nicht das von @vespa_83 Mais @be_on_edge (Scoffs)?
 
@dsw Ihr Code funktioniert schön! Dies ist der Unterschied zwischen wer weiß, wie man Code schreibt und wer tausend blinde Versuche mit chatgpt macht! Vor Jahren schrieb ich ein paar Makros von meinem Sting ich immer noch, aber ich erinnere mich nichts und ich hatte Spion für solide Kante, die mir eine Hand gab.
Jetzt versuche ich herauszufinden, wie Sie den Code strukturiert haben, damit Sie etwas Neues lernen.
Vielen Dank.

Dank auch @be_on_edge für Geduld, den Code, wo ich den Fehler hatte, den ich ihm gab, seit der Dsw-Code funktioniert.

Ich habe den Fehler nicht erkannt. bei der Kopie des Makros muss ich die falsche genommen haben, aber ich hätte nie bemerkt
 
Jetzt versuche ich herauszufinden, wie Sie den Code strukturiert haben, damit Sie etwas Neues lernen.
Vielen Dank.
Sie sind willkommen!
Ich habe den Fehler nicht erkannt. bei der Kopie des Makros muss ich die falsche genommen haben, aber ich hätte nie bemerkt
Nun, was zu sagen, aber wie Sie Fehler machen... unmarcettabile... das ist... inakzeptabel......... Ich bin absolut sicher, dass ich vielleicht nie falsch :rolleyes::unsure:
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben