Hallo,
vor 11 Jahren habe ich ein MaKro umgestrickt das seitdem gut funktioniert hat.
Mit dem Makro kann man Kopien in Exemplare umwandeln oder Exemplare durch ein anderes Exemplar ersetzen.
Seit V19 haben die ersetzten Teile nicht mehr die richtige Position.
Da ich seit 8 Jahren nichts mehr in Lisp gemacht habe, finde ich den Fehler nicht.
Hat sich etwas an der Verarbeitung der Koordinaten geändert?
Könnt ihr mir helfen?
Schöne Grüße
Bernd
;;***************************************************************************
(in-package :custom)
(use-package :OLI)
#| Mit diesem Makro kann man Teile durch Exemplare ersetzen.
Dazu ist ein Quellteil erforderlich und eine Liste von Teilen.
Dies Funktioniert auch bei Baugruppen.
Die Anwendung des Makros sollte mit Bedacht erfolgen, vor allem
innerhalb gemeinsam genutzter Baugruppen. Unerwuenschte Verschiebungen
und auch Abstuerze sind moeglich.
Vorher speichern!!!
Wesentliche Teile dieses Makros sind aus "cp_ex.lsp" von
"TommiO" geklaut, dem das Lob gebuehrt.
Ver. 1.0; OSD 13; HPUX; 2005-05-19
|#
(sd-defdialog 'cp2ex
:dialog-title (sd-multi-lang-string "Copy2Inst" :german "Kopie2Exemplar")
:toolbox-button nil
:variables '(
(flag :initial-optional t)
(quelle :value-type :part-assembly
:initial-value nil
:modifies nil
:title (sd-multi-lang-string "Source Instance" :german "Quellexemplar")
:prompt-text "Quellteil (Baugruppe) auswÌhlen"
)
(prt-list :value-type :part-assembly
:initial-value nil
:multiple-items t
:prompt-text (sd-multi-lang-string "Specify the parts or assemblies for which to create instances."
:german "Teile oder Baugruppen eingeben die gemeinsam genutzt werden sollen")
:title (sd-multi-lang-string "Part" :german "Teile")
:after-input (progn
(setf flag nil)
(l-check-list prt-list)
)
)
);variables
:ok-action '(l-ok); ok-action
:help-action '(sd-display-message " Mit diesem Makro kann man Teile durch Exemplare ersetzen.
Dazu ist ein Quellteil erforderlich und eine Liste von Teilen.
Dies Funktioniert auch bei Baugruppen.
Die Anwendung des Makros sollte mit Bedacht erfolgen, vor allem
innerhalb gemeinsam genutzter Baugruppen! Bei diesen sind
unerwuenschte Verschiebungen aber auch Abstuerze moeglich.
Vorher speichern!!!")
:local-functions '(
(l-error ()
(sd-display-error (sd-multi-lang-string "Different parts have been selected. Only instances of the same object can be specified."
:german "Es wurden unterschiedliche Teile gewÌhlt. Es dÏrfen nur Exemplare gewÌhlt werden"))
)
(l-error1 ()
(sd-display-error (sd-multi-lang-string "Owner is marked as read-only."
:german "Besitzer hat Schreibschutz"))
)
(l-check-list (list)
(let (orig)
(setf orig (sd-inq-obj-contents-sysid (first list)))
(dotimes (i (length list))
(setf teil (sd-inq-obj-contents-sysid (nth i list)))
(unless (string/= orig teil)
(setf flag 'e)
)
);
;;(when (string= flag 'e)
(when (string= flag 'x) ;;zur Zeit stillgelegt
(l-error)
(setq prt-list nil)
);
(dolist (a-prt list)
(when (sd-inq-obj-parent-contents-read-only-p a-prt)
(setf flag 'f)
)
);dolist
(when (string= flag 'f)
(l-error1)
(setf prt-list nil)
)
);let
);l-check
(l-ok ()
(let (p1 p2 p3 p4 p5 p6 tmp-name orig besitzer besitzer_orig)
(setf p1 (sd-vec-xform (gpnt3d 0.0 0.0 0.0) :source-space quelle :dest-space :global))
(setf p3 (sd-vec-xform (gpnt3d 0.0 1.0 0.0) :source-space quelle :dest-space :global))
(setf p5 (sd-vec-xform (gpnt3d 1.0 0.0 0.0) :source-space quelle :dest-space :global))
(dolist (a-part prt-list)
(setf name (sd-inq-obj-basename a-part))
(setf besitzer (sd-inq-parent-obj a-part))
(setf p2 (sd-vec-xform (gpnt3d 0.0 0.0 0.0) :source-space a-part :dest-space :global))
(setf p4 (sd-vec-xform (gpnt3d 0.0 1.0 0.0) :source-space a-part :dest-space :global))
(setf p6 (sd-vec-xform (gpnt3d 1.0 0.0 0.0) :source-space a-part :dest-space :global))
;;(display besitzer)
;;(display name)
;;(display quelle )
(sd-call-cmds (progn
(delete_3d a-part)
(CREATE_MULTIPLE_PA :SHARE :owner besitzer :source quelle :name name
:match_three_pts p1 p2 p3 p4 p5 p6)
))
);;enddo
);;endlet
);l-ok
);local-functions
);sd-defdialog
;;***************************************************************************
------------------
42
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP