Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Color über fromNames oder fromDictionaryName

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Color über fromNames oder fromDictionaryName (3415 mal gelesen)
Gloem
Mitglied
Geoinformatiker


Sehen Sie sich das Profil von Gloem an!   Senden Sie eine Private Message an Gloem  Schreiben Sie einen Gästebucheintrag für Gloem

Beiträge: 179
Registriert: 07.12.2007

Windows 10 - 64 Bit, mindestens 16 GB RAM
<P>AutoCAD Map 2020, VBA, Dot-Net

erstellt am: 24. Okt. 2009 15:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


false.png

 
Hallo,

kann mir jemand erklären wie ich die Farbfunktionen Color.fromNames() und Color.fromDictionaryName() für Palettenfarben verwenden muss.

Immer wenn ich entweder color.FromName("Pantone 17...", "Pantone(R)...") or Color.FromDictionaryName("Pantone(R)...$Pantone 17...") verwende zeigt der Debugger mir zwar die meisten der Werte meiner neuen Farbe richtig an (siehe Anhang) jedoch hat die Farbe keinen Rot, Grün und Blau-Anteil sondern ist einfach Schwarz.
Ebenfalls haben die Boolschen-Variablen "isByColor" and "isByLayer" die falschen Werte (false und true anstatt true und false).

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Okt. 2009 16:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ein CodeSnippet wäre da mal schon vorteilhaft, denn wenn Du irgendwas ColorDialog-artiges zeigst, dann kann das nichts mit der Entity-Methode byColor oder byLayer zu tun haben (ausser ich interpretiere den Screenshot ganz falsch, aber leider ohne zu sehen, wo Du im Code gerade bist, ist's auch schwer).

Ich fang halt mal mit einem CodeSnippet an und hoffentlich nähern wir uns:

Code:
'Farbe des Elements auf Farbindex (<tColorIndex>;):
DBEntity.Color = Colors.Color.FromColorIndex(Colors.ColorMethod.ByAci, tColorIndex)

'Farbe des Elements auf einen RGB-Wert
DBEntity.Color = Colors.Color.FromRgb(tR, tG, tB)


'Farbe des Elements auf byLayer
DBEntity.Color = Colors.Color.FromColorIndex(Colors.ColorMethod.ByLayer, 256)


- alfred -

------------------
www.hollaus.at

Gloem
Mitglied
Geoinformatiker


Sehen Sie sich das Profil von Gloem an!   Senden Sie eine Private Message an Gloem  Schreiben Sie einen Gästebucheintrag für Gloem

Beiträge: 179
Registriert: 07.12.2007

Windows 10 - 64 Bit, mindestens 16 GB RAM
<P>AutoCAD Map 2020, VBA, Dot-Net

erstellt am: 24. Okt. 2009 16:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die schnelle Antwort Alfred - Du scheinst echt keine anderen Hobbys zu haben als hier im Forum rumzuhängen.

Hier mal folgende Fuktion um die es sich dreht:

Code:
    ' Funktion um anhand der übergebenen Werte eine AutoCAD-Farbe zu erzeugen
    '  - AutoCAD-Stiftfarbe, Index oder RGB-Farbwert sowie Palettenfarben werden unterstützt
    Private Function getAutoCADColor(ByVal colorTyp As String, ByVal colorName As String) As Autodesk.AutoCAD.Colors.Color

        ' Prüfen welche Farbart verwendet werden soll
        Select Case colorTyp
            ' AutoCAD-Stiftfarbe
            Case "Stift"
                Return Color.FromColorIndex(ColorMethod.ByPen, [Enum].Parse(GetType(colorsByPen), colorName))
            ' Index-Farbwert
            Case "Index"
                Return Color.FromColorIndex(ColorMethod.ByAci, colorName)
            ' RGB-Farbwert
            Case "Echtfarbe"
                Dim rgbValues As String() = Split(colorName.Substring(5, colorName.Length - 6), ", ")
                Return Color.FromRgb(rgbValues(0), rgbValues(1), rgbValues(2))
            ' Palette
            Case Else
                Return Color.FromNames(colorName, colorTyp)
        End Select

    End Function


In der Variablen colorTyp steht entweder 'Stift', 'Index', 'Echtfarbe' oder der Bookname wenn es sich um eine Palettenfarbe handelt.
In der Variablen colorName steht entweder 'Rot', 'Grün', usw. wenn es eine Stiftfarbe ist, '10', '11', ..., '255' wenn es eine Indexfarbe ist, 'RGB (12,20,30)' o.ä. wenn es eine Echtfarbe ist oder eben der Farbname wenn es eine Palettenfarbe ist.

Folgende Enumeration ist vielleicht auch noch interessant:

Code:
' Aufzählung mit den AutoCAD-Stiftfarben
Public Enum colorsByPen As Short
    Rot = 1
    Gelb = 2
    Grün = 3
    Cyan = 4
    Blau = 5
    Magenta = 6
    Weiss = 7
End Enum

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Okt. 2009 20:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wenn ich dieses schreibe, dann kann ich keinen Fehler feststellen, die Linie erhält die gewünschte Farbe (und steht dann auch nicht auf byLayer oder ähnliches). Kannst Du das mal bei Dir probieren?

Code:
      <Autodesk.AutoCAD.Runtime.CommandMethod("CADde_EntColor")> _
      Public Shared Sub CADde_EntColor()
        Dim tAcadDoc As ApplicationServices.Document = Nothing
        Dim tDocLock As ApplicationServices.DocumentLock = Nothing
        Dim tTrAct As DatabaseServices.Transaction = Nothing
        Try
            tAcadDoc = ApplicationServices.Application.DocumentManager.MdiActiveDocument
            tDocLock = tAcadDoc.LockDocument
            tTrAct = tAcadDoc.TransactionManager.StartTransaction
            Dim tBlTab As DatabaseServices.BlockTable = CType(tTrAct.GetObject(tAcadDoc.Database.BlockTableId, DatabaseServices.OpenMode.ForRead, True, True), DatabaseServices.BlockTable)
            Dim tModSp As DatabaseServices.BlockTableRecord = CType(tTrAct.GetObject(tBlTab.Item("*Model_Space"), DatabaseServices.OpenMode.ForWrite, True, True), DatabaseServices.BlockTableRecord)
            Dim tLine As DatabaseServices.Line = New DatabaseServices.Line(Geometry.Point3d.Origin, New Geometry.Point3d(10, 10, 0))
            tLine.Color = Autodesk.AutoCAD.Colors.Color.FromNames("RAL 1000", "RAL CLASSIC")
            tModSp.AppendEntity(tLine)
            tTrAct.AddNewlyCreatedDBObject(tLine, True)
            MsgBox("LineColor: " & tLine.Color.ToString)
            tTrAct.Commit()
        Catch ex As Exception
            MsgBox("Unknown Error in CADde_EntColor" & vbNewLine & ex.Message)
        Finally
            If tTrAct IsNot Nothing Then tTrAct.Dispose() : tTrAct = Nothing
        End Try
      End Sub


Bzgl. 'ColorMethod.ByPen' kann ich leider gar nix sagen, nur vermuten, dass diese mit STB-Files zu tun hat und mit denen hab ich noch nie gemacht (und um ganz ehrlich zu sein, wenn ich nicht so eine Zeichnung geliefert bekomme, werd ich auch nix mehr damit zu tun bekommen), ich hoffe aber wohl, dass wir Deinem Problem näherrücken, denn bei mir erhält die Linie dann nach der Farbzuweisung die richtigen Einstellungen, zumindest sehe ich keine Fehler.

- alfred -

------------------
www.hollaus.at

Gloem
Mitglied
Geoinformatiker


Sehen Sie sich das Profil von Gloem an!   Senden Sie eine Private Message an Gloem  Schreiben Sie einen Gästebucheintrag für Gloem

Beiträge: 179
Registriert: 07.12.2007

Windows 10 - 64 Bit, mindestens 16 GB RAM
<P>AutoCAD Map 2020, VBA, Dot-Net

erstellt am: 24. Okt. 2009 22:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Zwischenablage01.png

 
Hab dein Beispiel mal kurz ausprobiert. Die Linie besitzt bei mir die Farbe "VonLayer" was sowohl von der MsgBox als auch vom Debugger und dem Eigenschaftsfenster angezeigt wird.

Vielleicht ist es relevant das ich AutoCAD Map 2009 nutze und auch mit dem dazugehörigen SDK programmiere.

Ach ja, die anderen 3 Case-Fälle in meiner Funktion funktionieren soweit ich das bislang getestet hab tadellos nur die Palettenfarben machen Ärger

[Diese Nachricht wurde von Gloem am 24. Okt. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Okt. 2009 23:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat


EntColor_ColorBook_DebugInfo_AN01.jpg

 
Hi,

nein, ich kann nicht annehmen, dass dies mit Map3D in Zusammenhang zu bringen ist.

Ich habe diesen Code mit Civil3D2009 und Civil3D2010 probiert (und da wäre ja auch Map3D enthalten), in beiden Fällen bekomme ich nicht 'byLayer' angezeigt. Siehe auch meinen Screenshot.

Was passiert denn eigentlich nach Ablauf der Funktion, wenn Du Befehl: _audit startest, bekommst Du dann Fehler geliefert? Bzw. wenn Du diese Linie dann anklickst, welche Meinung hat denn das Eigenschaftsfenster von der Elementfarbe?

- alfred -

------------------
www.hollaus.at


Ex-Mitglied

erstellt am: 24. Okt. 2009 23:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi

STOP ZURÜCK!!!!

Meine Meinung, dass ich es mit 2009 probiert hätte, ist scheinbar auf Unterbrechungen zurückzuführen. Als ich jetzt bewusst mal auf pures AutoCAD 2009 gestellt habe und nochmals probiert habe, sah ich Dein Problem und damit ist es auch für mich reproduzierbar.

Und da es mit 2010 funktioniert, halte ich es (leider aus Deiner Sicht) für einen Bug.

Also probier, wenn es in Deinem Code möglich ist, mal über den COM-Objekt-Zugriff umzustellen, vielleicht geht's damit (und hoffentlich geht's in Deiner Struktur).

Nochmals Sorry für meine erste Rückmeldung, da hab ich einfach Debuggen gestartet und nicht darauf geachtet, dass es eigentlich 2010 war. Aber wenigstens ist damit auch ausgeschlossen, dass es von Map3D abhängt.!

- alfred -

------------------
www.hollaus.at

Gloem
Mitglied
Geoinformatiker


Sehen Sie sich das Profil von Gloem an!   Senden Sie eine Private Message an Gloem  Schreiben Sie einen Gästebucheintrag für Gloem

Beiträge: 179
Registriert: 07.12.2007

Windows 10 - 64 Bit, mindestens 16 GB RAM
<P>AutoCAD Map 2020, VBA, Dot-Net

erstellt am: 24. Okt. 2009 23:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das es ein Bug ist hatte ich auch schon befürchtet da man bei der Funktion eigentlich nicht viel verkehrt machen kann. Ist es denn wohl ein Bug in AutoCAD oder im sdk? Kann man das 2010er sdk auch mit AutoCAD2009 nutzen?
Der Zugriff über COM sagt mir jetzt nicht viel. Die Funktion wird per Doppelklick auf ein Feld in  einem datagridview aufgerufen und baut aus den dortigen werten die autocadfarbe zusammen.
Kann man ansonsten den colordialog dazu bringen den Tab mit den palettenfarben nicht anzuzeigen?


[Diese Nachricht wurde von Gloem am 24. Okt. 2009 editiert.]

[Diese Nachricht wurde von Gloem am 24. Okt. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Okt. 2009 23:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Kann man das 2010er sdk auch mit AutoCAD2009 nutzen?
Was bezeichnest Du mit SDK, wenn Du mit vb.NET programmierst?

Eigentlich brauchst Du das ObjectARX-SDK nur für Beispiele und Hilfefiles, aber Deine Applikation greift auf nichts aus dem SDK hin! Du zeigst in den Verweisen lediglich auf dll's des AutoCAD's oder auf Assemblies, die über die GAC registriert sind.

Die Applikationen die Du mit Verweisen auf 2009-Lib's erzeugst, sind nicht mit 2010 verwendbar, da zwischen 2009 und 2010 die Binärkompatibilität gebrochen wurde. Daher leider: NEIN.

- alfred -

------------------
www.hollaus.at


Ex-Mitglied

erstellt am: 25. Okt. 2009 00:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

und zu COM-basierter Farbvergabe:

- nimm aus obigem Code die Farbzuweisung heraus
- setze nachfolgenden Code nach der Zeile, in der die Linie der TransAction hinzugefügt wird, ein

Code:
Dim tLineCOM As Interop.Common.AcadLine = CType(tLine.AcadObject, Interop.Common.AcadLine)
Dim tColor As Interop.Common.AcadAcCmColor = New Interop.Common.AcadAcCmColor
tColor.SetColorBookColor("RAL CLASSIC", "RAL 1000")
tLineCOM.TrueColor = tColor

Das funktioniert jetzt auch mit 2009, Voraussetzung dazu ist leider, das Du Zugriff auf die COM-bezogenen Eigenschaften nur dann bekommst, wenn es der Datenbank zugehörig ist (zumindest 'isTransActionResident' oder 'isPersistent' müssen auf TRUE stehen, anderenfalls hab ich schon den einen oder anderen Abflug bei Zugriff auf die Entity-Eigenschaften gehabt).

HTH, - alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 25. Okt. 2009 editiert.]

Gloem
Mitglied
Geoinformatiker


Sehen Sie sich das Profil von Gloem an!   Senden Sie eine Private Message an Gloem  Schreiben Sie einen Gästebucheintrag für Gloem

Beiträge: 179
Registriert: 07.12.2007

Windows 10 - 64 Bit, mindestens 16 GB RAM
<P>AutoCAD Map 2020, VBA, Dot-Net

erstellt am: 25. Okt. 2009 00:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Mhm, irgendwie war das programmieren mit vba einfacher :-)

was hab den jetzt für Möglichkeiten? Kompletter Umstieg auf AutoCAD2010 - doof, COM-Umstieg-keine Ahnung, weglassen der Unterstützung für palettenfarbe -ärgerlich aber ok. Kann man beim colordialog den Tab mit den palettenfarben weglassen
 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Gloem
Mitglied
Geoinformatiker


Sehen Sie sich das Profil von Gloem an!   Senden Sie eine Private Message an Gloem  Schreiben Sie einen Gästebucheintrag für Gloem

Beiträge: 179
Registriert: 07.12.2007

Windows 10 - 64 Bit, mindestens 16 GB RAM
<P>AutoCAD Map 2020, VBA, Dot-Net

erstellt am: 25. Okt. 2009 00:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Du antwortest zu schnell. So schnell kann ich mit meinem iTouch nicht tippen.

Zuerst mal möchte ich einen colordialog mit einer vorgewählten Farbe aufrufen und diese Farbe wird aus farbwerten aus einem datagridview erstellt. Letztendlich sollen anhand einer zuordnungstabelle allen Elementen der Zeichnung eine Farbe entsprechend ihrer linienstärke zugewiesen werden

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 25. Okt. 2009 00:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wenn Du nicht unbedingt auf Farben von AutoCAD angewiesen bist, dann kannst Du ja statt des AutoCAD-Farbdialogs doch den Windows-Farbdialog verwenden und gleich die RGB-Farben aussuchen/zuweisen lassen.

Einen Weg, den AutOCAD-Farbdialog so zu starten, dass die Farbbücher nicht auswählbar sind, hätte ich mir nicht angesehen, nur rein vom Bauchgefühl wird's nicht funken.

Hilft die obige Lösung mit COM nicht? Denn dann würde ja wieder alles funktionieren, wie Du es erhoffst.

- alfred -

------------------
www.hollaus.at

Gloem
Mitglied
Geoinformatiker


Sehen Sie sich das Profil von Gloem an!   Senden Sie eine Private Message an Gloem  Schreiben Sie einen Gästebucheintrag für Gloem

Beiträge: 179
Registriert: 07.12.2007

Windows 10 - 64 Bit, mindestens 16 GB RAM
<P>AutoCAD Map 2020, VBA, Dot-Net

erstellt am: 25. Okt. 2009 10:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten morgen,

hatte gestern dann doch irgendwann beschlossen den iTouch zur Seite zu legen und einzuschlafen.

Deinen Vorschlag mit dem COM-Objekt hab ich ausprobiert, allerdings kann ich in meiner obigen Funktion nicht einfach dasObjekt zurückgeben

Code:
        Public Function getAutoCADColor(ByVal colorTyp As String, ByVal colorName As String) As Autodesk.AutoCAD.Colors.Color

            ' Prüfen welche Farbart verwendet werden soll
            Select Case colorTyp
                ' Palette
                Case Else
                    Dim col As AcadAcCmColor = New AcadAcCmColor
                    col.SetColorBookColor(colorTyp, colorName)
                    Return col
            End Select

        End Function


Und wahrscheinlich würde der ColorDialog dieses Objekt auch nicht akzeptieren.

Folgendes funktioniert aber, auch wenn ich so in meinem ganzen Programm keine Palettenfarben mehr zulasse

Code:
colorDialog.SetDialogTabs(Autodesk.AutoCAD.Windows.ColorDialog.ColorTabs.ACITab Xor Autodesk.AutoCAD.Windows.ColorDialog.ColorTabs.TrueColorTab)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 25. Okt. 2009 11:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Folgendes funktioniert aber, auch wenn ich so in meinem
>> ganzen Programm keine Palettenfarben mehr zulasse

... wieder was gelernt 

Du kannst ja vor Deinem Aufruf die aktuelle Einstellung ändern und dann wieder zurücksetzen.

Ist Deine Aufgabe mit all den Informationen aus diesem Thread jetzt gelöst oder noch was offen?

- alfred -

------------------
www.hollaus.at

Gloem
Mitglied
Geoinformatiker


Sehen Sie sich das Profil von Gloem an!   Senden Sie eine Private Message an Gloem  Schreiben Sie einen Gästebucheintrag für Gloem

Beiträge: 179
Registriert: 07.12.2007

Windows 10 - 64 Bit, mindestens 16 GB RAM
<P>AutoCAD Map 2020, VBA, Dot-Net

erstellt am: 25. Okt. 2009 11:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank für deine Hilfe.

Wirklich gelöst wäre es ja eigentlich erst mit unserem Umstieg auf AutoCAD2010. Aber das Weglassen der Palettenfarben ist auch kein Beinbruch, die Benutzen wir eh nie.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 25. Okt. 2009 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Du kannst doch auf die Beschränkung verzichten, wenn Du statt:

Code:
Public Function getAutoCADColor(ByVal colorTyp As String, ByVal colorName As String) As Autodesk.AutoCAD.Colors.Color

die Funktion so aufbaust, dass Du das Entity übergibst und in der Sub die Farbe den Entity zuweisen lässt:

Code:
Public Function setAutoCADColor(ByRef Ent as DatabaseServices.Entity, ByVal colorTyp As String, ByVal colorName As String) As boolean
   Dim tRetVal as Boolean = True
   Try
      ' Prüfen welche Farbart verwendet werden soll
      Select Case colorTyp
         case .... 'fuer jeden Typ ausser ColorBook-bezogene Dein Handling von oben
         Case Else
             Dim tEntCOM As Interop.Common.AcadEntity = CType(Ent.AcadObject, Interop.Common.AcadEntity)
             Dim tColor As Interop.Common.AcadAcCmColor = New Interop.Common.AcadAcCmColor
             tColor.SetColorBookColor("RAL CLASSIC", "RAL 1000")
             tEntCOM.TrueColor = tColor
      End Select
   Catch ex as Exception
      tRetVal = False
   End Try
   Return tRetVal
End Function

Dabei kannst Du durchaus auch einen zuvor ermittelten FarbTyp mitübergeben, und wenn dieser nicht gültig übergeben ist (im Falle von Farbbuch-Wert), dann eben die COM-bezogene Aktion durchführen lassen.

HTH, - alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 25. Okt. 2009 editiert.]

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz