|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung 
 | 
| Autor | Thema:  Schraffurbasispunkt (932 mal gelesen) | 
 | fred_tomke Mitglied
 Applikationsingenieur
 
   
 
      Beiträge: 156Registriert: 14.06.2004
 Map 2015 x64Win7 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: 13533Registriert: 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: 156Registriert: 14.06.2004
 Map 2015 x64Win7 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: 156Registriert: 14.06.2004
 Map 2015 x64Win7 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: 1059Registriert: 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: 13533Registriert: 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: 13533Registriert: 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: 156Registriert: 14.06.2004
 Map 2015 x64Win7 x64
 12 GB RAM
 ADN
 OpenDCL
 |    erstellt am: 10. Jun. 2008 16:45  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 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: 156Registriert: 14.06.2004
 Map 2015 x64Win7 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: 9812Registriert: 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übnerwww.CAD-Huebner.de
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | archtools Mitglied
 
 
     
 
      Beiträge: 1059Registriert: 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: 156Registriert: 14.06.2004
 Map 2015 x64Win7 x64
 12 GB RAM
 ADN
 OpenDCL
 |    erstellt am: 11. Jun. 2008 07:58  <-- editieren / zitieren -->    Unities abgeben:            |