| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Punktübergabe per ARRAY() Funktion (1539 mal gelesen)
|
CADoktor Mitglied Techniker

 Beiträge: 35 Registriert: 29.03.2006
|
erstellt am: 29. Nov. 2007 17:33 <-- editieren / zitieren --> Unities abgeben:         
warum ist es nicht möglich Punkte direkt über die Array funktion zu übergeben? Beispiel: thisdrawing.ModelSpace.AddPoint(array(1#,2#,3#)) Gibt Fehler zurück, obwohl die Funktion Array() in diesem Fall ein Variant mit 3 Doubles zurückliefern sollte. Gibts irgendeinen Tipp? Diese Variante würde teilweise eine Menge Tipparbeit ersparen und Punktdefinitionen lesbarer machen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 29. Nov. 2007 19:31 <-- editieren / zitieren --> Unities abgeben:          Nur für CADoktor
Zitat: Original erstellt von CADoktor: ... obwohl die Funktion Array() in diesem Fall ein Variant mit 3 Doubles zurückliefern sollte. Gibts irgendeinen Tipp? Diese Variante würde teilweise eine Menge Tipparbeit ersparen und Punktdefinitionen lesbarer machen.
Das ist genau das Problem, Array()(Datenfeld) ist immer in erster Linie ein Variant, egal ob die Feldelemte Double sind. Autocad will aber ein normales Feld(0 to 2) as Double. Wenn das Double nicht deklariert wird, nimmt er selbst das 'normale' Feld nicht. lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 29. Nov. 2007 19:40 <-- editieren / zitieren --> Unities abgeben:          Nur für CADoktor
|
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 30. Nov. 2007 10:36 <-- editieren / zitieren --> Unities abgeben:          Nur für CADoktor
Hallo, über einen kleinen Trick geht es schon
Code: Function MyArray(Rechtswert#, Hochwert#, Höhe#) Dim Punkt(0 To 2) As Double Punkt(0) = Rechtswert Punkt(1) = Hochwert Punkt(2) = Höhe MyArray = Punkt End FunctionSub test2() Dim MyPoint As AcadPoint Set MyPoint = ThisDrawing.ModelSpace.AddPoint(MyArray(0, 0, 0)) MyPoint.Layer = "0" MyPoint.color = acCyan End Sub
Wilfried Stelberg------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADoktor Mitglied Techniker

 Beiträge: 35 Registriert: 29.03.2006
|
erstellt am: 30. Nov. 2007 13:34 <-- editieren / zitieren --> Unities abgeben:         
|
CADoktor Mitglied Techniker

 Beiträge: 35 Registriert: 29.03.2006
|
erstellt am: 30. Nov. 2007 14:15 <-- editieren / zitieren --> Unities abgeben:         
Habs eingebaut und funktioniert super ... Zwei Public Funktionen in einem Modul und schon hat die nervige "Dim pt(2) as Double" Tipperei ein Ende ... Manchmal werden Punkte nur mit X/Y benötigt und manchmal X/Y/Z ... deshalb 2 Funktionen Habs wie folgt abgeändert:
Public Function ArrXY(ByVal X#, ByVal Y#) Dim Point(0 To 1) As Double Point(0) = X Point(1) = Y ArrXY = Point End Function Public Function ArrXYZ(ByVal X#, ByVal Y#, ByVal Z#) Dim Point(0 To 2) As Double Point(0) = X Point(1) = Y Point(2) = Z ArrXYZ = Point End Function Aufrufe dann wie folgt ... Beispiel Limiten setzen: ThisDrawing.SetVariable "Limmin", ArrXY(0, 0) ThisDrawing.SetVariable "Limmax", ArrXY(1189, 841)
Beispiel Text Dim objText as AcadText set objText=Thisdrawing.Modelspace.AddText ("Test",ArrXYZ(100,100,0),2.5) Ich finde die Lesbarkeit der Koordinaten ist wesentlich besser als mit dem Umweg über die Punktdefinition Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 30. Nov. 2007 15:30 <-- editieren / zitieren --> Unities abgeben:          Nur für CADoktor
|