Raster Autocad ((install)) -

;; --- User Input --- (princ "\nSpecify first corner of raster area: ") (setq p1 (getpoint "\nPick first corner: ")) (if (null p1) (exit)) (setq p2 (getcorner p1 "\nSpecify opposite corner: ")) (if (null p2) (exit))

;; Ensure width and height are positive (if (or (<= width 0.0) (<= height 0.0)) (progn (princ "\nError: Width and height must be greater than zero.") (exit) ) ) raster autocad

;;; Alternative: Create 3D Raster Surface using 3DFACE (defun c:RASTER3D (/ p1 p2 width height rows cols x-spacing y-spacing i j x-pos y-pos z-base z-var pt-grid) (setvar "cmdecho" 0) (command "_.UNDO" "_BEGIN") (princ "\n*** 3D RASTER SURFACE ***") (setq p1 (getpoint "\nPick origin corner (lower-left): ")) (if (null p1) (exit)) (setq p2 (getcorner p1 "\nPick opposite corner (upper-right): ")) (if (null p2) (exit)) (setq width (abs (- (car p2) (car p1))) height (abs (- (cadr p2) (cadr p1))) ) (initget 7) (setq cols (getint "\nNumber of columns: ")) (initget 7) (setq rows (getint "\nNumber of rows: ")) (setq x-spacing (/ width (1- cols))) (setq y-spacing (/ height (1- rows))) ;; Optional Z variation (sine wave example) (initget "Yes No") (setq z-var (if (= (getkword "\nAdd Z-axis variation (sine wave)? [Yes/No] <No>: ") "Yes") T nil)) ;; Generate grid of 3DFaces (each quad split into two triangles) (setq i 0) (while (< i (1- rows)) (setq j 0) (while (< j (1- cols)) ;; Calculate four corners of current cell (setq x1 (+ (car p1) (* j x-spacing)) y1 (+ (cadr p1) (* i y-spacing)) x2 (+ x1 x-spacing) y2 y1 x3 x1 y3 (+ y1 y-spacing) x4 (+ x1 x-spacing) y4 (+ y1 y-spacing) ) ;; Get Z values (base from p1) (setq z-base (caddr p1)) (if z-var (progn ;; Add sine wave pattern: Z = sin(x * freq) * cos(y * freq) * amplitude (setq amp 2.0) (setq z1 (+ z-base (* amp (sin (* 0.2 x1)) (cos (* 0.2 y1)))) z2 (+ z-base (* amp (sin (* 0.2 x2)) (cos (* 0.2 y2)))) z3 (+ z-base (* amp (sin (* 0.2 x3)) (cos (* 0.2 y3)))) z4 (+ z-base (* amp (sin (* 0.2 x4)) (cos (* 0.2 y4)))) ) ) (setq z1 z-base z2 z-base z3 z-base z4 z-base) ) ;; Create first triangle face (lower-left to upper-right) (command "_.3DFACE" (list x1 y1 z1) (list x2 y2 z2) (list x4 y4 z4) (list x1 y1 z1) ) ;; Create second triangle face (upper-left to lower-right) (command "_.3DFACE" (list x1 y1 z1) (list x4 y4 z4) (list x3 y3 z3) (list x1 y1 z1) ) (setq j (1+ j)) ) (setq i (1+ i)) ) (princ "\n3D raster surface generated.") (command "_.UNDO" "_END") (setvar "cmdecho" 1) (princ) ) ;; --- User Input --- (princ "\nSpecify first

(command "_.UNDO" "_END") (setvar "cmdecho" 1) (princ) ) [Yes/No] &lt;No&gt;: ") "Yes") (progn (command "_

;; Check if spacing is too small (if (or (< x-spacing 0.001) (< y-spacing 0.001)) (progn (princ "\nError: Spacing too small. Increase grid size or reduce rows/columns.") (exit) ) )

;; Optional: Create a polyline border around the grid (initget "Yes No") (if (= (getkword "\nDraw border around grid? [Yes/No] <No>: ") "Yes") (progn (command "_.PLINE" (list (car p1) (cadr p1) (caddr p1)) (list (car p2) (cadr p1) (caddr p1)) (list (car p2) (cadr p2) (caddr p1)) (list (car p1) (cadr p2) (caddr p1)) "_C") (princ "\nBorder drawn.") ) )

;; Get number of rows and columns (initget 7) ; Non-zero, non-negative, no enter (setq cols (getint "\nNumber of columns (horizontal divisions): ")) (initget 7) (setq rows (getint "\nNumber of rows (vertical divisions): "))