_

[Lisp] zmiana koloru obiektów w bloku na ByBlock

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

[Lisp] zmiana koloru obiektów w bloku na ByBlock

Postprzez ziele_o2k » mar 01, 2017 08:49

Często trza na szybko wrzucić sobie jakiś podkład (przykładowo od architekta) na nasze wypociny. Do tego celu używam ctrl+shift+c oraz ctrl+shift+v.
W celu wrzucenia na odpowiedni kolor tego co tam tymczasowo podczytuję wszystkie obiekty mają zmieniony kolor na ByBlock za pomocą takiego oto lispa:

Kod: Zaznacz cały
(defun C:bbb (/ colBlockReference
                    ActDoc dprSelection
                    objSelection strBlockName
                 )
 (if (setq dprSelection (entsel "\nSelect Block: "))
  (progn
   (setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object))
         dprSelection (car dprSelection)
         objSelection (vlax-ename->vla-object dprSelection)
   )
   (vla-StartUndoMark ActDoc)
   (BlkByBlock objSelection)
   (entupd dprSelection)
   (vla-EndUndoMark ActDoc)
  )
 )
 (princ)
)
(defun BlkByBlock (objSelection / colBlockReference objBlock
                    strBlockName
                 )
 (if (= (type objSelection) 'ENAME)
  (setq objSelection (vlax-ename->vla-object objSelection)))
 (if (wcmatch (strcase (vla-get-objectname objSelection)) "*BLOCK*")
  (progn
   (vlax-for objBlock (vla-item
                       (vla-get-blocks ActDoc)
                       (vla-get-name objSelection)
                      )

    (vla-put-color objBlock 0)
    ;(vla-put-Layer objBlock "0")
    (if (wcmatch (vla-get-ObjectName objBlock) "*Dimension,*Leader")
      (foreach prop '(DimensionLineColor ExtensionLineColor TextColor)
        ; not all such entity types have all 3 properties, but all have at least one
        (if (vlax-property-available-p objBlock prop)
          (vlax-put objBlock prop 0); ByVlock
        ); if
      ); foreach
    ); if
    (if (wcmatch (strcase (vla-get-objectname objBlock)) "*BLOCK*")
        (BlkByBlock objBlock))
        ; set color byblock
;    (vla-put-linetype EOBJ "ByBlock") if all you want is color byblock
;    (vla-put-Lineweight EOBJ -1) if all you want is color byblock
;    (vla-put-PlotStyleName EOBJ "ByBlock") if all you want is color byblock
   )
  )
 )
 (princ)
)

Wszystko fajnie działa, ale czasem wymiary zagnieżdżone w bloku mi się nie zmieniają (po rozbiciu bloku kolor jest jednak ByBlock).
Pytanie jest następujące, czemu tak?
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 385
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [Lisp] zmiana koloru obiektów w bloku na ByBlock

Postprzez badziewiak » mar 01, 2017 10:44

_Regen.
badziewiak

WARTO WIEDZIEĆ: https://dl.dropboxusercontent.com/u/224045/IslamPowerX.pps
http://badziewiak2010.republika.pl
Avatar użytkownika
badziewiak
 
Posty: 2235
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D

Re: [Lisp] zmiana koloru obiektów w bloku na ByBlock

Postprzez ziele_o2k » mar 01, 2017 12:29

badziewiak napisał(a):_Regen.

No właśnie nie - przecież sprawdziłem 10 razy przed wrzuceniem posta :). W załączeniu plik.
Załączniki
pryzklad.dwg
(76.88 KiB) Pobrane 10 razy
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 385
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [Lisp] zmiana koloru obiektów w bloku na ByBlock

Postprzez kruuger » mar 01, 2017 12:54

ziele_o2k napisał(a):
badziewiak napisał(a):_Regen.

No właśnie nie - przecież sprawdziłem 10 razy przed wrzuceniem posta :). W załączeniu plik.

jesli wyczesales wszystko na ByBlock to jest ok. tak dziala rozbijanie.
chcesz rozbic z zachowaniem warstwy/koloru, uzyj BURST.
k.
Avatar użytkownika
kruuger
 
Posty: 4745
Dołączył(a): paź 27, 2005 20:14
Lokalizacja: Kraków

Re: [Lisp] zmiana koloru obiektów w bloku na ByBlock

Postprzez ziele_o2k » mar 01, 2017 13:06

kruuger napisał(a):jesli wyczesales wszystko na ByBlock to jest ok. tak dziala rozbijanie.
chcesz rozbic z zachowaniem warstwy/koloru, uzyj BURST.
k.

Chodzi o to, że kolory wszystkich elementów w bloku po zastosowaniu lispa, którego wrzuciłem, robią się ByBlock i po zmianie koloru bloku wszyskie mają zmieniony kolor z wyjątkiem wymiarów. Nie chcę rozbijać tych bloków.
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 385
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [Lisp] zmiana koloru obiektów w bloku na ByBlock

Postprzez badziewiak » mar 01, 2017 13:08

ByBlock zachowa cechy wstawienia bloku. W wymiarach też, jeśli w ich definicji bloku masz ByBlock.
Pisałem o _regen, bo ostatnio to przerabiałem. Blok wczytywany programowo do innego bloku miał linie ciągłe, a w definicji były przerywane. Regen załatwił mi sprawę.
badziewiak

WARTO WIEDZIEĆ: https://dl.dropboxusercontent.com/u/224045/IslamPowerX.pps
http://badziewiak2010.republika.pl
Avatar użytkownika
badziewiak
 
Posty: 2235
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D

Re: [Lisp] zmiana koloru obiektów w bloku na ByBlock

Postprzez ziele_o2k » mar 01, 2017 14:02

badziewiak napisał(a):ByBlock zachowa cechy wstawienia bloku. W wymiarach też, jeśli w ich definicji bloku masz ByBlock.
Pisałem o _regen, bo ostatnio to przerabiałem. Blok wczytywany programowo do innego bloku miał linie ciągłe, a w definicji były przerywane. Regen załatwił mi sprawę.

Właśnie nie rozumiem czemu z tymi wymiarami ma problem. Teoretycznie powinno śmigać. W wolnej chwili zbadam temat i napiszę.
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 385
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań

Re: [Lisp] zmiana koloru obiektów w bloku na ByBlock

Postprzez badziewiak » mar 01, 2017 14:38

To może w tym lispie po prostu rozbij wymiary, jeśli nie musisz ich modyfikować. Wymiar to od środka blok, ale rządzi się swoimi prawami.
badziewiak

WARTO WIEDZIEĆ: https://dl.dropboxusercontent.com/u/224045/IslamPowerX.pps
http://badziewiak2010.republika.pl
Avatar użytkownika
badziewiak
 
Posty: 2235
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D

Re: [Lisp] zmiana koloru obiektów w bloku na ByBlock

Postprzez kojacek » mar 01, 2017 14:58

badziewiak napisał(a):To może w tym lispie po prostu rozbij wymiary, jeśli nie musisz ich modyfikować. Wymiar to od środka blok, ale rządzi się swoimi prawami.

Za rozbijanie wymiarów, to dawniej do lasu wywozilim... ;)
Avatar użytkownika
kojacek
 
Posty: 5222
Dołączył(a): paź 03, 2005 20:17

Re: [Lisp] zmiana koloru obiektów w bloku na ByBlock

Postprzez badziewiak » mar 01, 2017 15:21

A to na Dzikim Zachodzie było. Jeśli to tylko w podkładzie budowlanym i nie jest to nikomu potrzebne do edycji, to dlaczego nie...
badziewiak

WARTO WIEDZIEĆ: https://dl.dropboxusercontent.com/u/224045/IslamPowerX.pps
http://badziewiak2010.republika.pl
Avatar użytkownika
badziewiak
 
Posty: 2235
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D

Następna strona

Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników