CADsite forum

AutoCAD => Autolisp => Topic gestart door: Tom op do 14 04 2005, 11:30:25

Titel: materialen toewijzen en renderen
Bericht door: Tom op do 14 04 2005, 11:30:25
Is het mogelijk om via lisp materialen toe te wijzen aan objecten, en daarnaa te laten renderen ?

Zoja, hoe moet dit ?

Alvast bedankt

Tom
Titel: materialen toewijzen en renderen
Bericht door: Kenny H op vr 15 04 2005, 09:38:01
Dit is al een begin. De rest volgt. :wink:


Citeer
(defun c:textuura ()
(if (not (member "acrender.arx" (arx)))
   (arxload "acrender")
 )
 (c:matlib "i"
       "ape"
       "C:/Program Files/AutoCAD 2002/Support/render.mli"
 )
 (c:rmat "A" "ape" (ssget))

;;;  Render in autocad window
 (c:rpref "DEST" "FRAMEBUFFER" "")
;;;  Photo real
 (c:rpref "STYPE" "ASCAN")
 (c:render "r")
;;;  "" enkel werkt niet er moet iets in staan :-s
)
Titel: materialen toewijzen en renderen
Bericht door: Kenny H op vr 15 04 2005, 09:44:17
Citeer(defun c:textuurb ()
(if (not (member "acrender.arx" (arx)))
   (arxload "acrender")
 )
 (c:matlib "i"
       "ape"
       "C:/Program Files/AutoCAD 2002/Support/render.mli"
 )
;;;  (c:rmat "A" "ape" (ssget))

;;;  Photo real
 (c:rpref "STYPE" "ASCAN")
;;; Render To File
 (c:rpref "DEST" "file")
 (C:RFILEOPT "BMP" 640 480 1.0 "C8")
 (c:rmat "A" "ape" (ssget))
 
(setq naam
(getstring  "\nGeef een bestandsnaam voor op aub: "))

 (c:render naam )
)
Titel: materialen toewijzen en renderen
Bericht door: Kenny H op vr 15 04 2005, 09:52:09
CiteerOpslag

FRAMEBUFFER Render to display
HARDCOPY Render to Render window
FILE Render to file

(c:rpref "DEST" "file")
(c:rpref "DEST" "HARDCOPY ")
(c:rpref "DEST" "file")

Soort tekening

ARENDER Basic rendering
ASCAN Photo Real rendering
ARAY Photo Raytrace rendering

(c:rpref "STYPE" "ARENDER")
(c:rpref "STYPE" "ASCAN")
(c:rpref "STYPE" "ARAY")
Titel: materialen toewijzen en renderen
Bericht door: Kenny H op vr 15 04 2005, 09:53:29
Hopelijk zijt ge hier al iets mee.   :)
Titel: materialen toewijzen en renderen
Bericht door: Kenny H op vr 15 04 2005, 10:10:51
ALs ge wilt dat render telkens sluit na het progje

Citeer(arxunload "acrender")

dat dan onderaan het programma bijvoegen  :wink:
Titel: materialen toewijzen en renderen
Bericht door: Tom op vr 15 04 2005, 10:21:04
Bedankt voor al deze informatie.
Ik denk wel dat ik hier mee verder kan.

Bedankt

Tom
Titel: materialen toewijzen en renderen
Bericht door: Tom op vr 15 04 2005, 11:26:42
Citaat van: Kenny H
Citeer(defun c:textuurb ()
(if (not (member "acrender.arx" (arx)))
   (arxload "acrender")
 )
 (c:matlib "i"
       "ape"
       "C:/Program Files/AutoCAD 2002/Support/render.mli"
 )
;;;  (c:rmat "A" "ape" (ssget))

;;;  Photo real
 (c:rpref "STYPE" "ASCAN")
;;; Render To File
 (c:rpref "DEST" "file")
 (C:RFILEOPT "BMP" 640 480 1.0 "C8")
 (c:rmat "A" "ape" (ssget))
 
(setq naam
(getstring  "\nGeef een bestandsnaam voor op aub: "))

 (c:render naam )
)


(c:rmat "A" "ape" (ssget))
De A staat hier voor Attach. en moet je de objecten aanduiden.

Is er ook zo een letter om Attach By Layer te doen ?

Alvast bedankt

Tom
Titel: materialen toewijzen en renderen
Bericht door: Kenny H op vr 15 04 2005, 11:36:52
Dat bestaat inderdaad. Ik ga het eerst eens  uitschrijven en dan posten als het werkt  :wink:
Titel: materialen toewijzen en renderen
Bericht door: HofCAD op vr 15 04 2005, 11:41:07
Citaat van: Tom

De A staat hier voor Attach. en moet je de objecten aanduiden.

Is er ook zo een letter om Attach By Layer te doen ?

Alvast bedankt

Tom


Beste Tom,

Zie onder, of kijk bij de Help van AutoCAD bij AutoLISP Reference en
in het hoofdstuk Externally Defined Commands.

Groetjes HofCAD CSI

Aâ€"Attach Material

The "A" (attach) mode lets you attach a material to selected objects or an AutoCAD Color Index (ACI) value, depending on whether the third argument (layer-name) is an integer or a selection set.

(c:rmat "A" name [aci | selection-set | layer-name])

Arguments

The following table describes the attach arguments.: Attach arguments  

Argument
Data type
Description

name
STR
Name of the material to attach

aci
INT
ACI number in the range 0 through 255

selection-set
INT
Selection set that contains the entities to attach

layer-name
STR
Name of the layer



Examples

Attach the material PURPLE TIGER to the ACI 1 (red):

(c:rmat "A" "PURPLE TIGER" 1)
If you omit the third argument, the "A" mode returns a list of three items:

A list of layer names the material is attached to
A list of ACIs the material is attached to
A selection set that contains the objects the material is attached to
The following example illustrates the values returned when the third argument is omitted:

Command:  (c:rmat "a" "twood")
Gathering objects...1 found
                   Layer names ACI's
(("first" "second")(135) <Selection set 12>))
A material index value in the range 1â€"255 is an ACI number; an index greater than 255 indicates an AutoCAD Render material not assigned by ACI.
Titel: materialen toewijzen en renderen
Bericht door: Kenny H op vr 15 04 2005, 11:51:47
Citeer
(defun c:textuura ()
 (if (not (member "acrender.arx" (arx)))
   (arxload "acrender")
 )
 (c:matlib "i"
       "ape"
       "C:/Program Files/AutoCAD 2002/Support/render.mli"
 )
 (setq   layernaam
    (getstring "\nGeef de layernaam op aub: ")
 )
 (c:rmat "a" "ape" layernaam )

;;;  Render in autocad window
 (c:rpref "DEST" "FRAMEBUFFER" "")
;;;  Photo real
 (c:rpref "STYPE" "ASCAN")
 (c:render "r")
;;;  "" enkel werkt niet er moet iets in staan :-s
 (arxunload "acrender")
)
Titel: materialen toewijzen en renderen
Bericht door: Tom op vr 15 04 2005, 11:55:40
Bedankt, het werkt echt perfect nu.

Tom
Titel: materialen toewijzen en renderen
Bericht door: Kenny H op vr 15 04 2005, 14:45:19
Citeer
(defun c:textuur ()
 (initget "ma la ")
 (setq   manier
    (getkword
      "\nSelecteer u manier van selecteren: Manueel (ma) of Layer (la):"
    )
 )
 (if (= manier "ma")
   (progn
     (setq materiaal (getstring "\nGeef een rendermateriaal op aub: "))
     (initget "a b ")
;;; nooit hoofdletters hier boven
     (setq Soort
        (getkword
          "\nSelecteer uit: Display (A) of File (B):"
        )
     )

     (if (= Soort "a")
   (progn
     (initget "1 2 3")
     (setq   kwaliteit
       (getkword
         "\nSelecteer uit: Render (1), Photo Real (2) of Photo Raytrace (3):"
       )
     )

     (if (= kwaliteit "1")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (c:rmat "A" materiaal (ssget))

;;;  Render in autocad window
         (c:rpref "DEST" "FRAMEBUFFER" "")

;;;  Render
         (c:rpref "STYPE" "ARENDER")
         (c:render "r")

;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )

     (if (= kwaliteit "2")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (c:rmat "A" materiaal (ssget))

;;;  Render in autocad window
         (c:rpref "DEST" "FRAMEBUFFER" "")

;;;  photo real
         (c:rpref "STYPE" "Ascan")
         (c:render "r")

;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )

     (if (= kwaliteit "3")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (c:rmat "A" materiaal (ssget))

;;;  Render in autocad window
         (c:rpref "DEST" "FRAMEBUFFER" "")

;;;  photo raytrace
         (c:rpref "STYPE" "Aray")
         (c:render "r")

;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )


;;; stopt prog
   )
;;; stopt if
     )

     (if (= Soort "b")
   (progn
     (initget "1 2 3")
     (setq   kwaliteit
       (getkword
         "\nSelecteer uit: Render (1), Photo Real (2) of Photo Raytrace (3):"
       )
     )

     (if (= kwaliteit "1")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (c:rmat "A" materiaal (ssget))
         (c:rpref "STYPE" "ARENDER")
         (c:rpref "DEST" "file")
         (C:RFILEOPT "BMP" 640 480 1.0 "C8")
         (setq naam
           (getstring "\nGeef een bestandsnaam voor op aub: ")
         )
         (c:render naam)
;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )

     (if (= kwaliteit "2")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (c:rmat "A" materiaal (ssget))
         (c:rpref "STYPE" "Ascan")
         (c:rpref "DEST" "file")
         (C:RFILEOPT "BMP" 640 480 1.0 "C8")
         (setq naam
           (getstring "\nGeef een bestandsnaam voor op aub: ")
         )
         (c:render naam)

;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )

     (if (= kwaliteit "3")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (c:rmat "A" materiaal (ssget))
         (c:rpref "STYPE" "ARay")
         (c:rpref "DEST" "file")
         (C:RFILEOPT "BMP" 640 480 1.0 "C8")
         (setq naam
           (getstring "\nGeef een bestandsnaam voor op aub: ")
         )
         (c:render naam)

;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )

;;; stopt prog
   )
;;; stopt if
     )
   )
 )



 (if (= manier "la")
   (progn
     (setq materiaal (getstring "\nGeef een rendermateriaal op aub: "))
     (initget "a b ")
;;; nooit hoofdletters hier boven
     (setq Soort
        (getkword
          "\nSelecteer uit: Display (A) of File (B):"
        )
     )

     (if (= Soort "a")
   (progn
     (initget "1 2 3")
     (setq   kwaliteit
       (getkword
         "\nSelecteer uit: Render (1), Photo Real (2) of Photo Raytrace (3):"
       )
     )

     (if (= kwaliteit "1")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (setq layernaam
           (getstring "\nGeef de layernaam op aub: ")
         )
         (c:rmat "a" materiaal layernaam)

;;;  Render in autocad window
         (c:rpref "DEST" "FRAMEBUFFER" "")

;;;  Render
         (c:rpref "STYPE" "ARENDER")
         (c:render "r")

;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )

     (if (= kwaliteit "2")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (setq layernaam
           (getstring "\nGeef de layernaam op aub: ")
         )
         (c:rmat "a" materiaal layernaam)

;;;  Render in autocad window
         (c:rpref "DEST" "FRAMEBUFFER" "")

;;;  photo real
         (c:rpref "STYPE" "Ascan")
         (c:render "r")

;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )

     (if (= kwaliteit "3")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (setq layernaam
           (getstring "\nGeef de layernaam op aub: ")
         )
         (c:rmat "a" materiaal layernaam)

;;;  Render in autocad window
         (c:rpref "DEST" "FRAMEBUFFER" "")

;;;  photo raytrace
         (c:rpref "STYPE" "Aray")
         (c:render "r")

;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )


;;; stopt prog
   )
;;; stopt if
     )

     (if (= Soort "b")
   (progn
     (initget "1 2 3")
     (setq   kwaliteit
       (getkword
         "\nSelecteer uit: Render (1), Photo Real (2) of Photo Raytrace (3):"
       )
     )

     (if (= kwaliteit "1")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (setq layernaam
           (getstring "\nGeef de layernaam op aub: ")
         )
         (c:rmat "a" materiaal layernaam)
         (c:rpref "STYPE" "ARENDER")
         (c:rpref "DEST" "file")
         (C:RFILEOPT "BMP" 640 480 1.0 "C8")
         (setq naam
           (getstring "\nGeef een bestandsnaam voor op aub: ")
         )
         (c:render naam)
;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )

     (if (= kwaliteit "2")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (setq layernaam
           (getstring "\nGeef de layernaam op aub: ")
         )
         (c:rmat "a" materiaal layernaam)
         (c:rpref "STYPE" "Ascan")
         (c:rpref "DEST" "file")
         (C:RFILEOPT "BMP" 640 480 1.0 "C8")
         (setq naam
           (getstring "\nGeef een bestandsnaam voor op aub: ")
         )
         (c:render naam)

;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )

     (if (= kwaliteit "3")
       (progn
         (arxload "acrender")

         (c:matlib
      "i"
      materiaal
      "C:/Program Files/AutoCAD 2002/Support/render.mli"
         )
         (setq layernaam
           (getstring "\nGeef de layernaam op aub: ")
         )
         (c:rmat "a" materiaal layernaam)
         (c:rpref "STYPE" "ARay")
         (c:rpref "DEST" "file")
         (C:RFILEOPT "BMP" 640 480 1.0 "C8")
         (setq naam
           (getstring "\nGeef een bestandsnaam voor op aub: ")
         )
         (c:render naam)

;;;  "" enkel werkt niet er moet iets in staan :-s
         (arxunload "acrender")
       )
     )
   )

     )
   )
 )
)

Hier is een programma waar alles via de commando regel in te voeren is. Moest er iets niet werken laat me dit dan weten.
Sorry voor de lengte  :shock:
Titel: materialen toewijzen en renderen
Bericht door: Kenny H op vr 15 04 2005, 14:47:42
Er is nog 1 nadeel.  :?
Je moet de naam van uw render textuur kennen. Maar ik denk dat dit toch vele al kan helpen :!:
Titel: materialen toewijzen en renderen
Bericht door: Kenny H op vr 15 04 2005, 14:49:42
In mijn vorig  progje staat wel niets in om het in de render window te kunnen bekijken. Had daar niet veel zin voor  :D
Titel: Re: materialen toewijzen en renderen
Bericht door: humpieke op ma 26 03 2007, 08:46:09
Beste heren, is het eventueel mogelijk om te renderen via VBA? Of kan dit enkel via Lisp? Dit omdat ik mijn eindwerk in VBA moet maken en geen verstand heb van Lisp (helemaal niet zelfs). Het is de bedoeling dat ik mijn textures toewijs aan layers, maar kan dit wel via VBA?