| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Schraffurbasispunkt (813 mal gelesen)
|
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 10. Jun. 2008 11:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, Ich will programmiertechnisch für eine Auswahl von Schraffuren einen gemeinsamen Schraffurbasispunkt definieren. Es gibt da eine Eigenschaft Origin bei Schraffuren. Wenn ich nachträglich (vla-put-Origin oHatch arrOrigin) anwende, wobei arrOrigin = (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbDoubles (cons 0 1)) '(42 0))) ist, dann kann ich die geänderte Eigenschaft wieder auslesen - die Schraffur passt sich jedoch nicht an. Ein anschließendes Update, Evalute oder Regen hat keine Auswirkung. Was könnte man da tun? VG, Fred
------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Jun. 2008 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
geht denn das Ändern im Eigenschaftsfenster? Verdächtige sind auf jeden Fall noch die Sysvars : HPORIGINMODE und HPINHERIT Aber selbst wenn ich bei mir bei 2 Schraffuren gleicher Umgrenzung im Eigenschaftsfenster bie Ursprung X und Y "Variiert" drin zu stehen hab, sind die Schraffuren deckungsgleich ... ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 10. Jun. 2008 13:03 <-- editieren / zitieren --> Unities abgeben:
Hallo CADmium, vielen Dank für Deine Rückmeldung. Es handelt sich um Schraffuren benachbarter Flächen, die auf einer zusätzlichen Flächenfüllung liegen. Haben jetzt die Linienschraffuren unterschiedliche Basispunkte, sieht das doof aus. Die Schraffuren werden aber programmiertechnisch (via ActiveX) erzeugt, deshalb soll gleich beim Einfügen ein definierter Schraffurbasispunkt vergeben werden. Da das aber mit HPORIGIN nicht funktionierte (Map 2009), wollte ich erst mal sehen, was vla-put-origin macht. Ich kann zwar die zugewiesene Eigenschaft wieder abfragen, aber das sichtbare Ergebnis ändert sich nicht. Fred ------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 10. Jun. 2008 13:13 <-- editieren / zitieren --> Unities abgeben:
Hallo CADmium ich habe mal ein Beispiel aus einem anderen Zusammenhang beigefügt. Hier sollen zwei Schraffuren mit einem Abstand zueinander in unterschiedlichen Farben erzeugt werden. Um diesen Abstand bei zwei gleichen Schraffuren zu erreichen, wird der Basispunkt kurzerhand zugewiesen. Der zugewiesene Eigenschaftswert lässt sich abfragen - aber das Ergebnis ändert sich nicht. Erst wenn du die rote Schraffur doppelklickst und bei Schraffur bearbeiten auf Aktuellen Ursprung verwenden klickst und dann OK, wird es sichtbar. Und der Eigenschaftswert ist immer noch der selbe. Suspekt. Fred
Code:
(defun c:test (/ vlaBound lstIslands oSpace) (setq oSpace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setq vlaBound (vla-AddLightWeightPolyline oSpace (list_to_variant (list 0.0 0.0 0.0 200.0 200.0 200.0 200.0 0.0) vlax-vbDouble))) (vla-put-closed vlaBound :vlax-true) (setq lstIslands (list (vla-AddCircle oSpace (vlax-3d-point (list 30.0 30. 0.0)) 20.0) (vla-AddCircle oSpace (vlax-3d-point (list 60.0 60. 0.0)) 20.0))) (schraffbe "ANSI31" 5 0.0 vlaBound lstIslands 0.0) (schraffbe "ANSI31" 1 0.0 vlaBound lstIslands 42.0) (vla-ZoomExtents (vlax-get-acad-object)) (princ) ); test (defun schraffbe (muster farbe winkel poly ss abstand / vlaHatch entInsel) (if (and (setq vlaHatch (vl-catch-all-apply 'vla-addhatch (list (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) acHatchPatternTypePredefined muster :vlax-true AcHatchObject))) (not (vl-catch-all-error-p vlaHatch))) (progn (vla-put-HatchStyle vlaHatch acHatchStyleOuter) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-AppendOuterLoop (list vlaHatch (list_to_variant (list poly) vlax-vbObject)))) (vla-erase vlaHatch) (progn (vla-put-color vlaHatch farbe) (foreach vlaInsel ss (vl-catch-all-apply 'vla-AppendInnerLoop (list vlaHatch (list_to_variant (list vlaInsel) vlax-vbObject)))) (vl-catch-all-apply 'vla-put-PatternScale (list vlaHatch 7.5)) (vl-catch-all-apply 'vla-put-PatternAngle (list vlaHatch (* (/ winkel 180.0) pi))) (vl-catch-all-apply 'vla-put-Origin (list vlaHatch (list_to_variant (list (* abstand (sqrt 2.0)) 0.0) vlax-vbDouble))) (vl-catch-all-apply 'vla-Evaluate (list vlaHatch)) (vl-catch-all-apply 'vla-Update (list vlaHatch)) ); progn ); if ); progn ); if ); schraffbe (defun list_to_variant (lstDoubles intType) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray intType (cons 0 (- (length lstDoubles) 1))) lstDoubles)) ); list_to_variant (defun vo->ss (lstObj / ssAusw) (setq ssAusw (ssadd (vlax-vla-object->ename (car lstObj)))) (foreach vlaObj (cdr lstObj) (ssadd (vlax-vla-object->ename vlaObj) ssAusw)) ssAusw ); vo->ss
------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 10. Jun. 2008 14:05 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
Zitat:
Code:
(defun c:test (/ vlaBound lstIslands oSpace) (setq oSpace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setq vlaBound (vla-AddLightWeightPolyline oSpace (list_to_variant (list 0.0 0.0 0.0 200.0 200.0 200.0 200.0 0.0) vlax-vbDouble))) (vla-put-closed vlaBound :vlax-true) (setq lstIslands (list (vla-AddCircle oSpace (vlax-3d-point (list 30.0 30. 0.0)) 20.0) (vla-AddCircle oSpace (vlax-3d-point (list 60.0 60. 0.0)) 20.0))) (schraffbe "ANSI31" 5 0.0 vlaBound lstIslands 0.0) (schraffbe "ANSI31" 1 0.0 vlaBound lstIslands 42.0) (vla-ZoomExtents (vlax-get-acad-object)) (princ) ); test [...]
[/i]
Wenn ich sowas sehe, dann frage ich mich immer, warum hier überhaupt noch LISP als äußere Sprachhülle verwendet wird :-)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied | |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Jun. 2008 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
VBA ... da fast alles nur über die ACTIVEX-Schnittstelle gesteuert wird.. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied | |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Jun. 2008 15:10 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
Es ist beides ACTIVEX !!!! einmal aus Lisp angesprochen, einmal aus VBA ... daher ist geschwindigkeitstechnisch irrelevant .. vielleicht noch was overheadmäßiges und so, aber ich denke , das spielt nicht die Rolle. Wenn du es genau wissen willst , bleibt nur bei (sehr vielen operationen) mitzustoppen. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 10. Jun. 2008 16:45 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Jun. 2008 16:53 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
ich nicht, ich hab aber geschrieben, das die Änderung im Einenschaftsfenster auch nicht die wirkung zeigt .. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 10. Jun. 2008 16:58 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von archtools: Wenn ich sowas sehe, dann frage ich mich immer, warum hier überhaupt noch LISP als äußere Sprachhülle verwendet wird :-)
Vielleicht, weil der Rest in Lisp ohne ActiveX ist? Fred
------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 10. Jun. 2008 17:32 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
Zitat: Original erstellt von fred_tomke: Ähm, äh, 'schuljung, det ick störe, aber: Hat rein zuuuufällig jemand mal den Code getestet?Fred
Ja, ikke. Füge mal
Code: (setq hatchelist (entget (entlast))) (entmod (subst (cons 43 (* abstand (sqrt 2.0))) (assoc 43 hatchelist) hatchelist))
nach dem (vl-catch-all-apply 'vla-Update (list vlaHatch)) ein, dass läuft.Irgendetwas klappt da wohl nicht mit dem vla-put-Origin.
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 11. Jun. 2008 00:17 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
Zitat: Original erstellt von CAD-Huebner: Ja, ikke.Füge mal
Code: (setq hatchelist (entget (entlast))) (entmod (subst (cons 43 (* abstand (sqrt 2.0))) (assoc 43 hatchelist) hatchelist))
Ach, endlich! SETQ, SUBST, CONS, ASSOC - endlich wieder richtiges Lisp und nicht nur ein paar Klammern um ActiveX-Ausdrücke :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 11. Jun. 2008 07:58 <-- editieren / zitieren --> Unities abgeben:
|