Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Windowsfarbe nach ACADfarbe ...

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:  Windowsfarbe nach ACADfarbe ... (1070 mal gelesen)
BloodyMess
Mitglied
Applicationingenieur


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

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 03. Dez. 2003 13:08    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

Hallo miteinander,

bin gerade dabei ein kleines VBA-Prog zu schreiben, welches mir die WindowsFarbe, welche ich über ShowColor bekomme, in eine RGB-Farbe umwandelt und letztlich eine ACADfarbe auswirft.

Code:

Function start_prog()

Dim strWert As String
Dim lWert As Long
Dim hexWert As String

Dim R As String, G As String, B As String

Dim Abfrage As Recordset
Dim db As Database

Set db = OpenDatabase("K:\ACAD-Color.mdb")

strWert = InputBox("Windows-Farbwert eingeben", "WINcol 2 ACADcol")
lWert = CLng(strWert)
hexWert = Hex(lWert)

R = Left(hexWert, 2)
G = Mid(hexWert, 3, 2)
B = Mid(hexWert, 5, 2)

If G = "" Then G = "00"
If B = "" Then B = "00"

On Error GoTo err_Farbe

Set Abfrage = db.OpenRecordset("SELECT ACAD2RGB.ACADCol, ACAD2RGB.RR, ACAD2RGB.GG, ACAD2RGB.BB FROM ACAD2RGB WHERE (((ACAD2RGB.RR)=" & Val("&h" & R) & ") AND ((ACAD2RGB.GG)=" & Val("&h" & G) & ") AND ((ACAD2RGB.BB)=" & Val("&h" & B) & "))")

MsgBox "Die ACADfarbe sollte heißen " & Abfrage.Fields(0)

exit_farbe:
Exit Function

err_Farbe:
MsgBox "Leider gibt´s die Farbe nicht ... ;("
Resume exit_farbe

End Function


Das Problem an der Sache ist nun, wenn ich hier zahlen eingebe, es einfach mal zu Problemen kommt.
Zum Beispiel ergeben die Zahlen 65280(grün) und 255(rot) einfach mal ein und die selbe ACADFarbe, sprich den selben RGB-Wert. Genauso wie 16776960(Cyan) und 65535(gelb). Als Tabelle in der Datenbank ist die Tabelle von der AutodeskSeite mit dem Wert 256 multipliziert hinterlegt.

Das ich nicht zig 1000 WindowsFarben in 255 AutocadFarben unterbekomme ist mir auch klar, aber zum größten Teil müßte es ja wenigstens hinhauen. Oder irre ich mich da jetzt???

... vielleicht jemand ne Idee ??? 

Gruß TP

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 03. Dez. 2003 15:39    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 Nur für BloodyMess 10 Unities + Antwort hilfreich

wird in windows die farbe nicht im modus BGR gespeichert

rot = FF
grün = FF00
blau = FF0000

------------------

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 03. Dez. 2003 15:48    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 Nur für BloodyMess 10 Unities + Antwort hilfreich

probier mal folgendes

Private Sub Form_Load()

    strWert = InputBox("zahl eingeben")
   
    lWert = CLng(strWert)
    hexwert = Padl(Hex(lWert), 6, "0") ' mit padl auf 6 stellen erweitern

    b = Mid$(hexwert, 1, 2)
    g = Mid$(hexwert, 3, 2)
    r = Mid$(hexwert, 5, 2)

End Sub

Function Padl(text, länge, Füllstring)
    Dim a1
    a1 = Len(text)
    If a1 = länge Then
        Padl = text
    ElseIf a1 > länge Then
        Padl = Right$(text, länge)
    Else
        Padl = String(länge - a1, Füllstring) & text
    End If
End Function

------------------

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

BloodyMess
Mitglied
Applicationingenieur


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

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 03. Dez. 2003 16:05    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

dicken Einser, wie immer ... 

Danke ... muß erstmal kuckn, was Du da jetzt besser/anders machst als ich.

BGR - hab´s irgendwo gelesen. hatte mich dann aber auch nicht zum Ziel gebracht.

Vielen Dank ... lg TP

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 03. Dez. 2003 16:08    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 Nur für BloodyMess 10 Unities + Antwort hilfreich

eigentlich nichts anderes , ausser dass ich mit blau von links ins lesen beginne

------------------

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 03. Dez. 2003 16:29    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 Nur für BloodyMess 10 Unities + Antwort hilfreich

dein fehler ist

r = left(hexwert,2)

bei rot (FF) stimmts
bei grün (FF00) stimmts nicht
und bei blau (FF0000) schon gar nicht

mit meiner funktion PADL fülle ich linksbündig den strin mit 0 auf 6 stellen auf

rot  0000FF
grün 00FF00
blau FF0000

dann kannst mit mid$(hexwert,1,2) blau
mid$(hexwert ,3,2) grün
und mit$(hexwert,5,2) rot auslesen

------------------

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

BloodyMess
Mitglied
Applicationingenieur


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

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 08. Dez. 2003 16:21    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

Sorry, daß ich erst so spät antworte, bin leider noch nicht dazu gekommen, mich quält gerade mal wieder ein anderes Problem.
Hab vielen Dank, aber ich muß mir das bei Gelegenheit und in Ruhe mal anschauen.

DANKE ... Gruß TP

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

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