_

Lisp - tworzenie warstw dla obrazów

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".

Re: Lisp - tworzenie warstw dla obrazów

Postprzez wilda » cze 13, 2017 23:37

po wstawieniu obrazu zwraca błąd:
Kod: Zaznacz cały
Polecenie: IMAGETOLAY
; błąd: zbyt mało argumentów
; błąd: ADS request error


po wstawieniu odnośnika (Rysunek_1.dwg) zwraca błąd:
Kod: Zaznacz cały
Polecenie: IMAGETOLAY
; błąd: zbyt mało argumentów
"Rysunek_1"
wilda
 
Posty: 198
Dołączył(a): gru 18, 2007 21:41

Re: Lisp - tworzenie warstw dla obrazów

Postprzez wilda » cze 14, 2017 00:25

Wygląda na to że funkcja GetPropertyValue nie obsługuje właściwości ImageName.
Funkcja dumpallproperties dla obrazu zwraca następujące właściwości.
Jedyna możliwość to chyba wyciągnięcie nawy obrazu ze ścieżki podanej w ImageDefId/SourceFileName (trzeba odfiltrować samą nazwę ze ścieżki)
Kod: Zaznacz cały
Begin dumping object (class:
AcDbRasterImage)
Annotative (type: bool)  (LocalName: Opisowy) = Failed to get value
AnnotativeScale (type: AcString)  (RO)  (LocalName: Skala opisu) = Failed to get value
BlockId (type: AcDbObjectId)  (RO) = bfdc6cf8
Brightness (type: unsigned char)  (LocalName: Jasność) = 50
CastShadows (type: bool) = 0
ClipBoundaryType (type: AcDbRasterImage::ClipBoundaryType)  (RO) = 1
CollisionType (type: AcDb::CollisionType)  (RO) = 1
Color (type: AcCmColor)  (LocalName: Kolor) = JAKWARSTWA
Contrast (type: unsigned char)  (LocalName: Kontrast) = 50
ExtensionDictionary (type: AcDbObjectId)  (RO) = 0
Fade (type: unsigned char)  (LocalName: Zaciemnienie) = 0
Handle (type: AcDbHandle)  (RO) = a14c
HasFields (type: bool)  (RO) = 0
HasSaveVersionOverride (type: bool) = 0
Height (type: double)  (LocalName: Wysokość) = 5.327032
Hyperlinks (type: AcDbHyperlink*)
ImageDefId (type: AcDbObjectId)  (RO)  (LocalName: Nazwa) = b6b33250
-------------------------------------------------------------------------------------------
ImageDefId/SourceFileName (type: AcString)  (RO)  (LocalName: Ścieżka) = H:\2017\IMG_4271.JPG
-------------------------------------------------------------------------------------
ImageHeight (type: double)  (RO) = 240.000000
ImageTransparency (type: bool)  (LocalName: Przezroczystość tła) = 0
ImageWidth (type: double)  (RO) = 320.000000
IsA (type: AcRxClass*)  (RO) = AcDbRasterImage
IsAProxy (type: bool)  (RO) = 0
IsCancelling (type: bool)  (RO) = 0
IsClipped (type: bool)  (LocalName: Pokaż przycięty) = 1
IsEraseStatusToggled (type: bool)  (RO) = 0
IsErased (type: bool)  (RO) = 0
IsModified (type: bool)  (RO) = 0
IsModifiedGraphics (type: bool)  (RO) = 0
IsModifiedXData (type: bool)  (RO) = 0
IsNewObject (type: bool)  (RO) = 0
IsNotifyEnabled (type: bool)  (RO) = 0
IsNotifying (type: bool)  (RO) = 0
IsObjectIdsInFlux (type: bool)  (RO) = 0
IsPersistent (type: bool)  (RO) = 1
IsPlanar (type: bool)  (RO) = 0
IsReadEnabled (type: bool)  (RO) = 1
IsReallyClosing (type: bool)  (RO) = 1
IsTransactionResident (type: bool)  (RO) = 0
IsUndoing (type: bool)  (RO) = 0
IsWriteEnabled (type: bool)  (RO) = 0
LayerId (type: AcDbObjectId)  (LocalName: Warstwa) = b6b331d0
LineWeight (type: AcDb::LineWeight)  (LocalName: Szerokość linii) = -1
LinetypeId (type: AcDbObjectId)  (LocalName: Rodzaj linii) = bfdc6ca8
LinetypeScale (type: double)  (LocalName: Skala rodzaju linii) = 1.000000
LocalizedName (type: AcString)  (RO) = Obraz rastrowy
MaterialId (type: AcDbObjectId)  (LocalName: Materiał) = Failed to get value
MergeStyle (type: AcDb::DuplicateRecordCloning)  (RO) = 1
ObjectId (type: AcDbObjectId)  (RO) = b6b33260
OwnerId (type: AcDbObjectId)  (RO) = bfdc6cf8
PixelToModelTransform (type: AcGeMatrix3d)  (RO) = ((0.022196 0.000000 0.000000
0.000000)(-0.000000 -0.022196 0.000000 0.000000) (0.000000 0.000000 1.000000
0.000000) (2258.291317 1587.821623 0.000000 1.000000))
PlotStyleName (type: AcString)  (LocalName: Styl wydruku) = ByLayer
Position/X (type: double)  (LocalName: Położenie) = 2258.280219
Position/Y (type: double) = 1582.505690
Position/Z (type: double) = 0.000000
ReactorId (type: AcDbObjectId) = b6b33258
ReceiveShadows (type: bool) = 0
Rotation (type: double)  (LocalName: Obrót) = 0.000000
Scale (type: double)  (LocalName: Skala) = 7.102709
ShadowDisplay (type: AcDb::ShadowFlags)  (LocalName: Wyświetlanie cieni) =
Failed to get value
ShowImage (type: bool)  (LocalName: Pokaż obraz) = 1
Transparency (type: AcCmTransparency)  (LocalName: Przezroczystość) = 0
Visible (type: AcDb::Visibility) = 0
Width (type: double)  (LocalName: Szerokość) = 7.102709
End object dump
nil
wilda
 
Posty: 198
Dołączył(a): gru 18, 2007 21:41

Re: Lisp - tworzenie warstw dla obrazów

Postprzez wilda » cze 22, 2017 01:50

Udało się wyciągnąć nazwę wstawianego rysunku.
Teraz po próbie połączenia tego w ten sposób żeby program podawał nazwę wstawionego odnośnika lub obrazu dostaję błąd.
Kod: Zaznacz cały
Polecenie: PODNAZWA
; błąd: zły typ argumentu: (or stringp symbolp): nil

Kod: Zaznacz cały
(defun C:PODNAZWA ( / ent d nt nazwa nazwa_rysunku entdata)

    (setq ent (entlast))
    (setq d (cdr (assoc 0 (entget ent))))
   (alert d) ;prawidłowo podaje :"INSERT" lub "IMAGE"

(cond
   (
      (= d "INSERT")
         (
            (setq nazwa_rysunku (cdr (assoc 2 (entget ent))))
            (alert nazwa_rysunku)
         )
   )
   (
      (= d "IMAGE")
         (
            (setq nazwa (getpropertyvalue ent "ImageDefId/SourceFileName")) ;H/2017/rysunek1.jpg
            (setq nt (substr nazwa (+(vl-string-position 92 nazwa nil T)2)))       ;rysunek1.jpg
            (setq nazwa_rysunku (substr nt 1 (vl-string-position 46 nt)))          ;rysunek1
            (alert nazwa_rysunku)
         )
   )
      (t nil)
)
)

Oddzielnie bez stosowania "cond" program prawidłowo podaje nazwę wstawianego pliku.
wilda
 
Posty: 198
Dołączył(a): gru 18, 2007 21:41

Poprzednia strona

Powrót do AutoCAD

Kto przegląda forum

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