Тема: Как программно возвратить цвет фона окна модели ?

Как программно возвратить цвет фона окна модели ?

Re: Как программно возвратить цвет фона окна модели ?

subj:

;;;---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
;;; Функция извлечения цвета фона пространства модели                           5 февраля 2003
;;;---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
;;; Функция возвращает цвет фона пространства модели в соответствии с заданным параметром flag
;;; flag может иметь значения "OLE" или "ACI"                                                 
;;; Вызов:                                                                                    
;;; (sw-get-ModelBG-color "OLE") или (sw-get-ModelBG-color "ACI")                             
;;; Возврат:                                                                                  
;;; целое число - цвет Windows (OLE) или AutoCAD Color Index (ACI)                            
;;;---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
(defun sw-get-ModelBG-color (flag / var_color OLE_color)
  (setq    var_color (vla-get-GraphicsWinModelBackgrndColor
            (vla-get-display
              (vla-get-preferences *acadApplication*)
            ) ;_ vla-get-display
          ) ;_ vla-get-GraphicsWinModelBackgrndColor
  ) ;_ setq
  (setq    OLE_color (vlax-variant-value
            (vlax-variant-change-type var_color vlax-vbLong)
          ) ;_ vlax-variant-value
  ) ;_ setq
  (if (= flag "ACI")
    (sw-OLE-to-ACI-color OLE_color)
    OLE_color
  ) ;_ if
) ;_ defun

И еще:

;;;---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
;;; Функция преобразования номера цвета из OLE в ACI                            5 февраля 2003
;;;---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
;;; Функция преобразует заданный целым аргументом OLE_color номер цвета Windows в номер ACI   
;;; (AutoCAD Color Index)                                                                     
;;; Вызов:                                                                                    
;;; (sw-OLE-to-ACI-color 12345678)                                                            
;;; Возврат:                                                                                  
;;; целое число                                                                               
;;;---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
(defun sw-OLE-to-ACI-color (OLE_color / result)
  (if (not (setq result    (vl-position
              OLE_color
              '(0           255      65535         65280    16776960   16711680
                16711935   16777215      8421504    12632256    255       8421631
                166           5460902      128         4210816    76       2500172
                38           1250086      16639         8429567    10662       5466278
                8320       4214912      4940         2502732    2598       1251366
                33023      8437759      21414         5471398    16512       4219008
                9804       2505036      4902         1252646    49151       8445951
                31910      5476774      24704         4223104    14668       2507596
                7462       1253670      65535         8454143    42662       5482150
                32896      4227200      19532         2509900    9766       1254950
                65471      8454111      42620         5482129    32864       4227184
                19513      2509891      9757         1254945    65408       8454079
                42579      5482108      32832         4227168    19494       2509881
                9747       1254941      65344         8454047    42537       5482088
                32800      4227152      19475         2509872    9738       1254936
                65280      8454016      42496         5482067    32768       4227136
                19456      2509862      9728         1254931    4259584       10485632
                2729472    6858323      2129920    5275712    1264640       3165222
                665088     1582611      8453888    12582784    5481984       8169043
                4227072    6324288      2509824    3755046    1254912       1910291
                12582656   14679936      8168960    9545299    6324224       7372864
                3755008    4410406      1910272    2172435    16776960   16777088
                10921472   10921555      8421376    8421440    5000192       5000230
                2500096    2500115      16760576   16768896    10910720   10916179
                8413184    8417344      4995328    4997926    2497792       2498835
                16744448   16760704      10900224   10910803    8404992       8413248
                4990464    4995366      2495232    2497811    16728064   16752512
                10889472   10905683      8396800    8409152    4985600       4993062
                2492928    2496531      16711680   16744576    10878976   10900307
                8388608    8405056      4980736    4990502    2490368       2495251
                16711744   16744607      10879017   10900328    8388640       8405072
                4980755    4990512      2490378    2495256    16711808   16744639
                10879059   10900348      8388672    8405088    4980774       4990521
                2490387    2495261      16711871   16744671    10879100   10900369
                8388704    8405104      4980793    4990531    2490397       2495265
                16711935   16744703      10879142   10900390    8388736       8405120
                4980812    4990540      2490406    2495270    12517631   14647551
                8126630    9524134      6291584    7356544    3735628       4400716
                1900582    2167590      8388863    12550399    5439654       8147878
                4194432    6307968      2490444    3745356    1245222       1905446
                4194559    10453247      2687142    6837158    2097280       5259392
                1245260    3155532      655398     1577766    5526612       7763574
                10000536   12303291      14540253   16777215
               )
            ) ;_ vl-position
       ) ;_ setq
      ) ;_ not
    (setq result 0)
  ) ;_ if
  result
) ;_ defun

Думаю сам разберешься. Если нет - пиши, поможем.
Удачи.
PS: отдельное спасибо ShaggyDoc'у за преобразование цветов OLE-ACI.

Re: Как программно возвратить цвет фона окна модели ?

Большое Спасибо, заработало.

Re: Как программно возвратить цвет фона окна модели ?

Можно ли сделать так, чтобы, если открыта Model, цвет командной строки был один, а если переключился в Layout, то другой?

Re: Как программно возвратить цвет фона окна модели ?

Увы, Vova, ит'с импосибел. В настройках цветов есть только "Цвет фона текстового экрана", который одинаков и для модели и для листа.
Удачи.

Re: Как программно возвратить цвет фона окна модели ?

А я такую промочку видел-у нашего скрытного Cad-manager'a

Re: Как программно возвратить цвет фона окна модели ?

> kos
В options же есть цвет коммандной строки.
Где его взяли?
Можно было-бы написать простой vlr-sysvar-reactor.

Re: Как программно возвратить цвет фона окна модели ?

> kos
А Вы пробовали изменять цвет на номер больше 10? Дело в том, что у меня получается другой список. Только что проверил на трех машинах - везде одинаковый, но не такой, как у Вас. Собственно вопрос (к Вам или ShaggyDoc) как получался этот список, и действительно ли он может быть разным из-за разных машин или чего-то еще?
Вот список (закомментированы строки с моим списком):
0         255        65535       65280     16776960   16711680
;0         255        65535       65280     16776960   16711680
      
16711935  16777215   8421504     12632256  255        8421631
;16711935  16777215   8421504     12632256  255        8355839
      
166       5460902    128         4210816   76         2500172
;204       6710988    153         5000345   127        4145023
      
38        1250086    16639       8429567   10662      5466278
;76        2500172    16383       8364031   13260      6717388
      
8320      4214912    4940        2502732   2598       1251366
;9881      5005209    8063        4149119   4940       2502476
      
33023     8437759    21414       5471398   16512      4219008
;32767     8372223    26316       6724044   19609      5010073
      
9804      2505036    4902        1252646   49151      8445951
;16255     4153215    9804        2505036   49151      8380415
      
31910     5476774    24704       4223104   14668      2507596
;39372     6730444    29337       5014937   24447      4157311
      
7462      1253670    65535       8454143   42662      5482150
;14668     2507340    65535       8388607   52428      6737100
      
32896     4227200    19532       2509900   9766       1254950
;39321     5020057    32639       4161407   19532      2509900
      
65471     8454111    42620       5482129   32864      4227184
;65471     8388575    52377       6737074   39282      5020037
      
19513     2509891    9757        1254945   65408      8454079
;32607     4161391    19513       2509890   65407      8388543
      
42579     5482108    32832       4227168   19494      2509881
;52326     6737049    39244       5020018   32575      4161375
      
9747      1254941    65344       8454047   42537      5482088
;19494     2509881    65343       8388511   52275      6737023
      
32800     4227152    19475       2509872   9738       1254936
;39206     5019999    32543       4161359   19475      2509871
      
65280     8454016    42496       5482067   32768      4227136
;65280     8388479    52224       6736998   39168      5019980
      
19456     2509862    9728        1254931   4259584    10485632
;32512     4161343    19456       2509862   4194048    10485631
      
2729472   6858323    2129920     5275712   1264640    3165222
;3394560   8375398    2529536     6265164   2064128    5209919
      
665088    1582611    8453888     12582784  5481984    8169043
;1264640   3099686    8388352     12582783  6736896    10079334
      
4227072   6324288    2509824     3755046   1254912    1910291
;5019904   7510348    4161280     6258495   2509824    3755046
      
12582656  14679936   8168960     9545299   6324224    7372864
;12582656  14679935   10079232    11717734  7510272    8755532
      
3755008   4410406    1910272     2172435   16776960   16777088
;6258432   7307071    3755008     4344870   16776960   16777087
      
10921472  10921555   8421376     8421440   5000192    5000230
;13421568  13421670   10066176    10066252  8355584    8355647
      
2500096   2500115    16760576    16768896  10910720   10916179
;5000192   5000230    16760576    16768895  13408512   13415014
      
8413184   8417344    4995328     4997926   2497792    2498835
;10056192  10061132   8347392     8351551   4995328    4997670
      
16744448  16760704   10900224    10910803  8404992    8413248
;16744192  16760703   13395456    13408614  10046464   10056268
      
4990464   4995366    2495232     2497811   16728064   16752512
;8339200   8347455    4990464     4995366   16727808   16752511
      
10889472  10905683   8396800     8409152   4985600    4993062
;13382400  13401958   10036736    10051404  8331008    8343359
      
2492928   2496531    16711680    16744576  10878976   10900307
;4985600   4992806    16711680    16744319  13369344   13395558
      
8388608   8405056    4980736     4990502   2490368    2495251
;10027008  10046540   8323072     8339263   4980736    4990502
      
16711744  16744607   10879017    10900328  8388640    8405072
;16711743  16744351   13369395    13395583  10027046   10046559
      
4980755   4990512    2490378     2495256   16711808   16744639
;8323103   8339279    4980755     4990511   16711807   16744383
      
10879059  10900348   8388672     8405088   4980774    4990521
;13369446  13395609   10027084    10046578  8323135    8339295
      
2490387   2495261    16711871    16744671  10879100   10900369
;4980774   4990521    16711871    16744415  13369497   13395634
      
8388704   8405104    4980793     4990531   2490397    2495265
;10027122  10046597   8323167     8339311   4980793    4990530
      
16711935  16744703   10879142    10900390  8388736    8405120
;16711935  16744447   13369548    13395660  10027161   10046617
      
4980812   4990540    2490406     2495270   12517631   14647551
;8323199   8339327    4980812     4990540   12517631   14647295
      
8126630   9524134    6291584     7356544   3735628    4400716
;10027212  11691724   7471257     8735897   6226047    7290751
      
1900582   2167590    8388863     12550399  5439654    8147878
;3735628   4335180    8323327     12550143  6684876    10053324
      
4194432   6307968    2490444     3745356   1245222    1905446
;4980889   7490713    4128895     6242175   2490444    3745356
      
4194559   10453247   2687142     6837158   2097280    5259392
;4129023   10452991   3342540     8349388   2490521    6245529
      
1245260   3155532    655398      1577766   5526612    7763574
;2031743   5193599    1245260     3089996   3355443    5987163
      
10000536  12303291   14540253    16777215
;8684676   11382189   14079702    16777215

Re: Как программно возвратить цвет фона окна модели ?

> leha
нет, это вопро не мне. ShaggyDoc прислал (еще раз ему за это благодарность), я только лишь пользуюсь.
Удачи.

Re: Как программно возвратить цвет фона окна модели ?

Как обращаться с цветом в 2004 см.
%Acad2004%\Sample\VisualLISP\color-util.lsp. Работа через
(vla-getinterfaceobject (vlax-get-acad-object) "AutoCAD.AcCmColor.16")
OleColor - цвета, используемые в Windows. С ними работают функция OleTranslateColor из olepro32.dll
Приводившийся > kos (2003-08-18 11:00:17) список мною был также получен от Jimmy Bergmark. Это было давно. Autodesk может менять свои ACI-color.

Re: Как программно возвратить цвет фона окна модели ?

> ShaggyDoc
Спасибо. Свой список получал именно под 2004, но он у меня совпадает с 2000. Наверно, все-таки соотношение RGB<->ACI как-то зависит от машины, а не от версии ACAD.

Re: Как программно возвратить цвет фона окна модели ?

> leha
Да, скорее всего именно от железа и настроек видеосистемы зависит. Вот Фотошоп на некоторых машинах предлагает подстроить свою палитру. Возможно и 2004 займется подобным. Не зря специальный интерфейс появился. Пока не экспериментировал, но лучше, конечно работать в дальнейшем с ним, а не с шаманскими списками.