| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Eigenschaften übernehmen (883 mal gelesen)
|
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008 ACAD 2019 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 16. Mai. 2012 18:11 <-- editieren / zitieren --> Unities abgeben:
Hallo an Alle, ich möchte aus einer XLINE einen RAY erstellen. Dabei sollen alle Eigenschaften der Konstruktionslinie auf den Strahl übernommen werden. Außer den Basispunkt den möchte ich selbst festlegen. Unten sind vergebliche Versuche. Hat jemand ne Idee wie sowas geht. Danke Theo MyRay = CType(MyKLine.Clone, Ray) 'MyRay = New Ray 'MyRay.BasePoint = Schnittpunkt(0) 'MyRay.SecondPoint = MyKLine.SecondPoint 'MyKLine.Erase()
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 16. Mai. 2012 18:26 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
Hallo Theo, da gibt es 2 Möglichkeiten: a) du setzt die Eigenschaften einzeln von der KLinie auf den Strahl strahl.Layer = KLinie.Layer ... b) du beshäftigst dich mit dem System.Refelction-Namespace mit dieser kannst du alle Eigenschaften von einer Klasse auslesen und die Werte abfragen und setzen. Das ist der elegantere Weg, und du kannst daraus einen allgemeinen Eigenschaften-Kopierer bauen.
Code:
// using System.Reflection; // ... Xline _XLine = new Xline();//das ist die XLine, die du wohl hast Ray _ray = new Ray(); PropertyInfo[] _RAY_pis = typeof(Ray).GetProperties(); foreach (PropertyInfo _pi in _RAY_pis) { PropertyInfo _xl_pi = typeof(Xline).GetProperty(_pi.Name); if (_xl_pi != null && _xl_pi.CanWrite) try { _xl_pi.SetValue (_ray, _pi.GetValue(_XLine, null), null ); } catch { } }
Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 18. Mai. 2012 08:06 <-- editieren / zitieren --> Unities abgeben:
Danke Holger, ich denke das krieg ich hin. ich hab mit dem Property-Object schon mal was gemacht. Bin nur selbst nicht auf diese Lösung gekommen, weil ich dachte es gäbe ne ganz tolle Lösung, wie clonen oder so. Würde mich interesieren, was in ACAD im Hintergrund abläuft, wenn z.B. eine K-Linie gestutzt wird. Und aus der K-Linie ein Strahl wird. Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008 ACAD 2019 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 22. Mai. 2012 16:24 <-- editieren / zitieren --> Unities abgeben:
Ich hab das mal nach VB übersetzt, falls es irgend jemand mal brauchen kann. Gruß, Theo Sub TakeProperties(ByRef Muster As Entity, ByVal Ziel As Entity) Dim ZielProp() As System.Reflection.PropertyInfo Dim Prop As System.Reflection.PropertyInfo ZielProp = Ziel.GetType.GetProperties() Dim MusterProp As System.Reflection.PropertyInfo Dim Index() As Object Dim MyValue As Object For Each Prop In ZielProp MusterProp = Muster.GetType.GetProperty(Prop.Name) Try MyValue = MusterProp.GetValue(Muster, Index) Prop.SetValue(Ziel, MyValue, Index) Catch End Try Next End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|