Author Topic: Ceiling tiles lisp  (Read 461 times)

0 Members and 1 Guest are viewing this topic.

HasanCAD

  • Swamp Rat
  • Posts: 1184
Ceiling tiles lisp
« on: August 26, 2017, 05:09:11 am »
HI all

We draft ceiling tiles but all arount is gybsom bard so th tiles should me full no parts.
So is there such as a lisp tp dp that

VovKa

  • Swamp Rat
  • Posts: 817
  • Ukraine
Re: Ceiling tiles lisp
« Reply #1 on: August 26, 2017, 06:26:47 am »
just hatch the boundary with NET pattern, set scale, rotation and origin then explode (if needed)

HasanCAD

  • Swamp Rat
  • Posts: 1184
Re: Ceiling tiles lisp
« Reply #2 on: August 26, 2017, 06:50:29 am »
just hatch the boundary with NET pattern, set scale, rotation and origin then explode (if needed)
Thanks for reply
Put I am asking for a lisp to fraw the magenta line
each segmant shoud be multiply of 600 and in center or area.

I am doing these steps manualy then adding hatch
So I am askingid there such as a lisp to do that magenta line

fools

  • Newt
  • Posts: 52
  • China
Re: Ceiling tiles lisp
« Reply #3 on: August 26, 2017, 10:04:27 am »
Hasan, the following code can work, but still very rough.

Code - Auto/Visual Lisp: [Select]
  1. ;;Fill ceiling with 600 spacing
  2. ;;Author: Fools, 2017.8.26
  3. ;;Just for practice English and LISP :)
  4.  
  5. (DEFUN c:Ceiling (/ ANG ANGS E PT PTS SPACING UCSANG UCSPT)
  6.  (setq spacing 600.) ;_can be modified to obtain by input
  7.  (SETQ ucspt (GETVAR 'ucsorg))
  8.  (setq ucsang (angle (GETVAR 'ucsorg) (GETVAR 'ucsxdir)))
  9.  (IF (SETQ e (CAR (ENTSEL "\nSelect a pline boundary : ")))
  10.    (PROGN (SETQ pts (MAPCAR 'CDR (VL-REMOVE-IF (FUNCTION (LAMBDA (x) (/= 10 (CAR x)))) (ENTGET e))))
  11.   ;;Sort by yx , get a point that contains the smallest Y coordinate and relatively small X coordinate
  12.   (SETQ pt (CAR (VL-SORT pts
  13.  '(LAMBDA (p1 p2)
  14.     (COND ((AND (EQUAL (CADR p1) (CADR p2) 1e-3) (< (CAR p1) (CAR p2))) T)
  15.   ((< (CADR p1) (CADR p2)) T)
  16.   (T nil)
  17.     )
  18.   )
  19. )
  20.    )
  21.   )
  22.   ;;Get the angle of each edge in a polyline
  23.   (SETQ angs (MAPCAR 'ANGLE pts (APPEND (CDR pts) (LIST (CAR pts)))))
  24.   (SETQ angs (MAPCAR '(LAMBDA (x) (REM x (* 0.5 PI))) angs))
  25.   ;;Return the angle that appears most frequently
  26.   (SETQ ang (F_MaxNumAng angs))
  27.   (F_SetUcs pt ang)
  28.   (COMMAND ".hatch" "net" (/ (* spacing 600.) 1905.) 0 e "")
  29.    )
  30.  )
  31.  ;;Restore original ucs
  32.  (F_SetUcs ucspt ucsang)
  33.  (princ)
  34. )
  35.  
  36. ;;Return the angle that appears most frequently
  37. ;;If each angle is different , return 0.0
  38. (DEFUN F_MaxNumAng (lst / i AngNums LastAng)
  39.  (SETQ lst (VL-SORT lst '(LAMBDA (e1 e2) (< e1 e2))))
  40.  (SETQ i 1)
  41.  (SETQ LastAng (CAR lst))
  42.  (SETQ AngNums nil)
  43.  (FOREACH item (CDR lst)
  44.    (IF (EQUAL item LastAng 1e-3)
  45.      (SETQ i (1+ i))
  46.      (SETQ AngNums (CONS (LIST i LastAng) AngNums)
  47.    i    1
  48.    LastAng item
  49.      )
  50.    )
  51.  )
  52.  (SETQ AngNums (CONS (LIST i LastAng) AngNums))
  53.  (SETQ AngNums (VL-SORT AngNums '(LAMBDA (e1 e2) (> (CAR e1) (CAR e2)))))
  54.  (IF (<= (CAAR AngNums) 2)
  55.    0.0
  56.    (CADAR AngNums)
  57.  )
  58. )
  59.  
  60. ;;Set Ucs
  61. (DEFUN F_SetUcs (pt ang)
  62.  (COMMAND ".ucs"
  63.   "3"
  64.   "non"
  65.   (TRANS pt 0 1)
  66.   "non"
  67.   (TRANS (POLAR pt ang 100.) 0 1)
  68.   "non"
  69.   (TRANS (POLAR pt (+ ang (* 0.5 PI)) 100.) 0 1)
  70.  )
  71. )
  72.  
  73. (princ "\n Type Ceiling to start .")
« Last Edit: August 26, 2017, 10:08:52 am by fools »
Good good study , day day up . Sorry about my Chinglish .

ribarm

  • Water Moccasin
  • Posts: 1677
  • Marko Ribar, architect
Re: Ceiling tiles lisp
« Reply #4 on: August 26, 2017, 10:11:44 am »
Code - Auto/Visual Lisp: [Select]
  1. (defun c:ceilingbyorthopolygon ( / *error* unique clockwise-lw mr_IsPointInside adoc ucsf s lw pl al all a1 a2 plu dx p1 dy p2 un unx uny dxn dyn p pn kx ky p3 p4 o pea pp plst f a cec wid entlst pth fn gx gy gxp gyp ch )
  2.  
  3.  
  4.  (defun *error* ( m )
  5.    (if cec
  6.      (setvar 'cecolor cec)
  7.    )
  8.    (if wid
  9.      (setvar 'plinewid wid)
  10.    )
  11.    (if pea
  12.      (setvar 'peditaccept pea)
  13.    )
  14.    (if ucsf
  15.      (vl-cmdf "_.UCS" "_P")
  16.    )
  17.    (if adoc
  18.      (vla-endundomark adoc)
  19.    )
  20.    (if m
  21.      (prompt m)
  22.    )
  23.    (princ)
  24.  )
  25.  
  26.  (defun unique ( l )
  27.    (if l
  28.      (cons (car l) (unique (vl-remove-if (function (lambda ( x ) (equal x (car l) 1e-3))) l)))
  29.    )
  30.  )
  31.  
  32.  (defun clockwise-lw ( lw / minpt maxpt p1 p2 p3 p4 pmax )
  33.    (vla-getboundingbox (vlax-ename->vla-object lw) 'minpt 'maxpt)
  34.    (mapcar (function set) '(minpt maxpt) (mapcar (function safearray-value) (list minpt maxpt)))
  35.    (setq p1 minpt p2 (list (car maxpt) (cadr minpt)) p3 maxpt p4 (list (car minpt) (cadr maxpt)))
  36.    (setq pmax (max p1 p2 p3 p4))
  37.    (cond
  38.      ( (and (= pmax p1) (> p2 p4))
  39.        t
  40.      )
  41.      ( (and (= pmax p2) (> p3 p1))
  42.        t
  43.      )
  44.      ( (and (= pmax p3) (> p4 p2))
  45.        t
  46.      )
  47.      ( (and (= pmax p4) (> p1 p3))
  48.        t
  49.      )
  50.      ( t nil )
  51.    )
  52.  )
  53.  
  54.  (defun mr_IsPointInside ( pt ptlst / trianglst ptinsidetriangle-p trl )
  55.  
  56.    (defun trianglst ( ptlst / unique LM:ListClockwise-p clockwise-p l p1 p2 p3 trl )
  57.  
  58.      (defun unique ( l )
  59.        (if l (cons (car l) (unique (vl-remove-if (function (lambda ( x ) (equal x (car l) 1e-6))) l))))
  60.      )
  61.  
  62.      ;; List Clockwise-p - Lee Mac
  63.      ;; Returns T if the point list is clockwise oriented
  64.  
  65.      (defun LM:ListClockwise-p ( lst )
  66.        (minusp
  67.          (apply '+
  68.            (mapcar
  69.              (function
  70.                (lambda ( a b )
  71.                  (- (* (car b) (cadr a)) (* (car a) (cadr b)))
  72.                )
  73.              )
  74.              lst (cons (last lst) lst)
  75.            )
  76.          )
  77.        )
  78.      )
  79.  
  80.      (defun clockwise-p ( p1 p2 p3 )
  81.        (< (* (- (car  p2) (car  p1)) (- (cadr p3) (cadr p1)))
  82.           (* (- (cadr p2) (cadr p1)) (- (car  p3) (car  p1)))
  83.        )
  84.      )
  85.  
  86.      (setq l ptlst)
  87.      (while (> (length ptlst) 3)
  88.        (setq p1 (car ptlst) p2 (cadr ptlst) p3 (caddr ptlst))
  89.        (cond
  90.          ( (LM:ListClockwise-p ptlst)
  91.            (if
  92.              (and
  93.                (clockwise-p p1 p2 p3)
  94.                (= (length (unique (vl-remove nil (mapcar (function (lambda ( a b ) (inters p1 p2 a b))) l (cdr (reverse (cons (car l) (reverse l)))))))) 2)
  95.                (= (length (unique (vl-remove nil (mapcar (function (lambda ( a b ) (inters p2 p3 a b))) l (cdr (reverse (cons (car l) (reverse l)))))))) 2)
  96.                (= (length (unique (vl-remove nil (mapcar (function (lambda ( a b ) (inters p3 p1 a b))) l (cdr (reverse (cons (car l) (reverse l)))))))) 2)
  97.              )
  98.              (progn
  99.                (setq trl (cons (list p1 p2 p3) trl))
  100.                (setq ptlst (vl-remove p2 ptlst))
  101.                (setq ptlst (cdr (reverse (cons (car ptlst) (reverse ptlst)))))
  102.              )
  103.              (setq ptlst (cdr (reverse (cons (car ptlst) (reverse ptlst)))))
  104.            )
  105.          )
  106.          ( (not (LM:ListClockwise-p ptlst))
  107.            (if
  108.              (and
  109.                (not (clockwise-p p1 p2 p3))
  110.                (= (length (unique (vl-remove nil (mapcar (function (lambda ( a b ) (inters p1 p2 a b))) l (cdr (reverse (cons (car l) (reverse l)))))))) 2)
  111.                (= (length (unique (vl-remove nil (mapcar (function (lambda ( a b ) (inters p2 p3 a b))) l (cdr (reverse (cons (car l) (reverse l)))))))) 2)
  112.                (= (length (unique (vl-remove nil (mapcar (function (lambda ( a b ) (inters p3 p1 a b))) l (cdr (reverse (cons (car l) (reverse l)))))))) 2)
  113.              )
  114.              (progn
  115.                (setq trl (cons (list p1 p2 p3) trl))
  116.                (setq ptlst (vl-remove p2 ptlst))
  117.                (setq ptlst (cdr (reverse (cons (car ptlst) (reverse ptlst)))))
  118.              )
  119.              (setq ptlst (cdr (reverse (cons (car ptlst) (reverse ptlst)))))
  120.            )
  121.          )
  122.        )
  123.      )
  124.      (setq trl (cons (list (car ptlst) (cadr ptlst) (caddr ptlst)) trl))
  125.      trl
  126.    )
  127.  
  128.    (defun ptinsidetriangle-p ( pt p1 p2 p3 )
  129.      (or
  130.        (and
  131.          (not
  132.            (or
  133.              (inters pt p1 p2 p3)
  134.              (inters pt p2 p1 p3)
  135.              (inters pt p3 p1 p2)
  136.            )
  137.          )
  138.          (not
  139.            (or
  140.              (> (+ (distance pt p1) (distance pt p2)) (+ (distance p3 p1) (distance p3 p2)))
  141.              (> (+ (distance pt p2) (distance pt p3)) (+ (distance p1 p2) (distance p1 p3)))
  142.              (> (+ (distance pt p3) (distance pt p1)) (+ (distance p2 p3) (distance p2 p1)))
  143.            )
  144.          )
  145.        )
  146.        (equal (distance p1 p2) (+ (distance p1 pt) (distance pt p2)) 1e-8)
  147.        (equal (distance p2 p3) (+ (distance p2 pt) (distance pt p3)) 1e-8)
  148.        (equal (distance p3 p1) (+ (distance p3 pt) (distance pt p1)) 1e-8)
  149.      )
  150.    )
  151.  
  152.    (setq trl (trianglst ptlst))
  153.    (and
  154.      (vl-some (function (lambda ( x ) (ptinsidetriangle-p pt (car x) (cadr x) (caddr x)))) trl)
  155.      (not (vl-some (function (lambda ( a b ) (equal (distance a b) (+ (distance a pt) (distance pt b)) 1e-8))) ptlst (cdr (reverse (cons (car ptlst) (reverse ptlst))))))
  156.    )
  157.  )
  158.  
  159.  (if (= (getvar 'worlducs) 0)
  160.    (progn
  161.      (vl-cmdf "_.UCS" "_W")
  162.      (setq ucsf t)
  163.    )
  164.  )
  165.  (prompt "\nPick walls closed orthogonal LWPOLYLINE polygon boundary on unlocked layer...")
  166.  (setq s (ssget "_+.:E:S:L" '((0 . "LWPOLYLINE") (-4 . "<or") (70 . 1) (70 . 129) (-4 . "or>") (-4 . "<not") (-4 . "<>") (42 . 0.0) (-4 . "not>"))))
  167.  (while (not s)
  168.    (prompt "\nMissed... Please pick walls closed orthogonal LWPOLYLINE polygon boundary on unlocked layer again...")
  169.    (setq s (ssget "_+.:E:S:L" '((0 . "LWPOLYLINE") (-4 . "<or") (70 . 1) (70 . 129) (-4 . "or>") (-4 . "<not") (-4 . "<>") (42 . 0.0) (-4 . "not>"))))
  170.  )
  171.  (setq lw (ssname s 0))
  172.  (if (clockwise-lw lw)
  173.    (vl-cmdf "_.REVERSE" lw "")
  174.  )
  175.  (setq pl (mapcar (function cdr) (vl-remove-if (function (lambda ( x ) (/= (car x) 10))) (entget lw))))
  176.  (setq al (mapcar (function (lambda ( a b ) (if (>= (angle a b) pi) (- (angle a b) pi) (angle a b)))) pl (cdr (reverse (cons (car pl) (reverse pl))))))
  177.  (setq all (unique al))
  178.  (if (and (= (length all) 2) (equal (if (> (car all) (cadr all)) (- (car all) (cadr all)) (- (cadr all) (car all))) (* 0.5 pi) 1e-6))
  179.    (setq a1 (car all) a2 (cadr all))
  180.    (progn
  181.      (prompt "\nYour picked polygon isn't orthogonal... Quitting... Restart routine again with picked valid polygon type...")
  182.      (exit)
  183.    )
  184.  )
  185.  (vl-cmdf "_.UCS" "_3P" "_non" '(0.0 0.0 0.0) "_non" (polar '(0.0 0.0 0.0) a1 1.0) "_non" (polar '(0.0 0.0 0.0) a2 1.0))
  186.  (setq plu (mapcar (function (lambda ( x ) (trans x lw 1))) pl))
  187.  (setq dx (abs (- (caar (vl-sort plu (function (lambda ( a b ) (> (car a) (car b)))))) (car (setq p1 (car (vl-sort plu (function (lambda ( a b ) (< (car a) (car b)))))))))))
  188.  (setq dy (abs (- (cadar (vl-sort plu (function (lambda ( a b ) (> (cadr a) (cadr b)))))) (cadr (setq p2 (car (vl-sort plu (function (lambda ( a b ) (< (cadr a) (cadr b)))))))))))
  189.  (prompt "\nExtent dimensions of polygon are dx = ") (princ (rtos dx 2 50)) (prompt " ; dy = ") (princ (rtos dy 2 50))
  190.  (initget "MIllimeters CEntimeters MEters")
  191.  (setq un (getkword "\nSpecify measurements [MIllimeters/CEntimeters/MEters] <millimeters> : "))
  192.  (if (null un)
  193.    (setq un "MIllimeters")
  194.  )
  195.  (initget 7)
  196.  (setq unx (getdist "\nPick or specify X dimension of plate in centimeters : "))
  197.  (initget 7)
  198.  (setq uny (getdist "\nPick or specify Y dimension of plate in centimeters : "))
  199.  (initget 7)
  200.  (setq gx (getdist "\nPick or specify gap between ceiling plates in X direction in centimeters : "))
  201.  (initget 7)
  202.  (setq gy (getdist "\nPick or specify gap between ceiling plates in Y direction in centimeters : "))
  203.  (cond
  204.    ( (= un "MIllimeters")
  205.      (setq unx (* unx 10) uny (* uny 10) gx (* gx 10) gy (* gy 10))
  206.    )
  207.    ( (= un "MEters")
  208.      (setq unx (/ unx 100) uny (/ uny 100) gx (/ gx 100) gy (/ gy 100))
  209.    )
  210.  )
  211.  (setq gxp (/ gx 2) gyp (/ gy 2))
  212.  (setq dxn (* (fix (/ (- dx unx) unx)) unx))
  213.  (setq dyn (* (fix (/ (- dy uny) uny)) uny))
  214.  (setq p (list (car p1) (cadr p2)))
  215.  (setq pn (mapcar (function +) p (list (/ (- dx dxn) 2.0) (/ (- dy dyn) 2.0))))
  216.  (setq o (min (/ (- dx dxn) 2.0) (/ (- dy dyn) 2.0)))
  217.  (vla-offset (vlax-ename->vla-object lw) 0.01)
  218.    (setq o (- o))
  219.  )
  220.  (if (vl-catch-all-error-p (vl-catch-all-apply (function vla-offset) (list (vlax-ename->vla-object lw) o)))
  221.    (progn
  222.      (setq pea (getvar 'peditaccept))
  223.      (setvar 'peditaccept 1)
  224.      (vl-cmdf "_.EXPLODE" lw)
  225.      (while (< 0 (getvar 'cmdactive)) (vl-cmdf ""))
  226.      (vl-cmdf "_.PEDIT" "_L" "_J" "_P")
  227.      (while (< 0 (getvar 'cmdactive)) (vl-cmdf ""))
  228.      (setvar 'peditaccept pea)
  229.      (vla-offset (vlax-ename->vla-object (entlast)) o)
  230.      (setq plu (mapcar (function (lambda ( x ) (trans x (entlast) 1))) (mapcar (function cdr) (vl-remove-if (function (lambda ( x ) (/= (car x) 10))) (entget (entlast))))))
  231.      (entdel (entlast))
  232.    )
  233.    (progn
  234.      (setq plu (mapcar (function (lambda ( x ) (trans x (entlast) 1))) (mapcar (function cdr) (vl-remove-if (function (lambda ( x ) (/= (car x) 10))) (entget (entlast))))))
  235.      (entdel (entlast))
  236.    )
  237.  )
  238.  (setq kx -1)
  239.  (repeat (fix (+ (/ dxn unx) 1e-6))
  240.    (setq kx (1+ kx) ky -1)
  241.    (repeat (fix (+ (/ dyn uny) 1e-6))
  242.      (setq ky (1+ ky))
  243.      (setq p1 (mapcar (function +) pn (list (* kx unx) (* ky uny))))
  244.      (setq p2 (mapcar (function +) pn (list (* (1+ kx) unx) (* ky uny))))
  245.      (setq p3 (mapcar (function +) pn (list (* (1+ kx) unx) (* (1+ ky) uny))))
  246.      (setq p4 (mapcar (function +) pn (list (* kx unx) (* (1+ ky) uny))))
  247.      (if (and (mr_IsPointInside p1 plu) (mr_IsPointInside p2 plu) (mr_IsPointInside p3 plu) (mr_IsPointInside p4 plu))
  248.        (progn
  249.          (setq entlst (cons (entmakex (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 4) (cons 70 (1+ (* 128 (getvar 'plinegen)))) '(38 . 0.0) (cons 10 (trans (trans p1 1 0) 0 (trans '(0.0 0.0 1.0) 1 0 t))) (cons 10 (trans (trans p2 1 0) 0 (trans '(0.0 0.0 1.0) 1 0 t))) (cons 10 (trans (trans p3 1 0) 0 (trans '(0.0 0.0 1.0) 1 0 t))) (cons 10 (trans (trans p4 1 0) 0 (trans '(0.0 0.0 1.0) 1 0 t))) (cons 210 (trans '(0.0 0.0 1.0) 1 0 t)))) entlst))
  250.          (if (null f)
  251.            (setq pp p1 f t)
  252.          )
  253.        )
  254.      )
  255.    )
  256.  )
  257.  (setq p nil a 0.0 f nil)
  258.  (while (not (equal p pp 1e-6))
  259.    (if (null p)
  260.      (setq p pp)
  261.    )
  262.    (cond
  263.      ( (= (sslength (ssget "_C" pp pp)) 2)
  264.        (setq pp (polar pp a (if f uny unx)))
  265.      )
  266.      ( (= (sslength (ssget "_C" pp pp)) 1)
  267.        (setq plst (cons pp plst))
  268.        (if (null f)
  269.          (if (equal p pp 1e-6)
  270.            (setq pp (polar pp a unx))
  271.            (setq a (+ a (* 0.5 pi)) pp (polar pp a uny) f t)
  272.          )
  273.          (setq a (+ a (* 0.5 pi)) pp (polar pp a unx) f nil)
  274.        )
  275.      )
  276.      ( (= (sslength (ssget "_C" pp pp)) 3)
  277.        (setq plst (cons pp plst))
  278.        (if (null f)
  279.          (setq a (- a (* 0.5 pi)) pp (polar pp a uny) f t)
  280.          (setq a (- a (* 0.5 pi)) pp (polar pp a unx) f nil)
  281.        )
  282.      )
  283.    )
  284.  )
  285.  (setq cec (getvar 'cecolor))
  286.  (setq wid (getvar 'plinewid))
  287.  (setvar 'cecolor "magenta")
  288.  (setvar 'plinewid (cond ( (= un "MIllimeters") 50.0) ( (= un "CEntimeters") 5.0) ( (= un "MEters") 0.05)))
  289.  (vl-cmdf "_.PLINE")
  290.  (foreach pp plst
  291.    (vl-cmdf "_non" pp)
  292.  )
  293.  (vl-cmdf "_C")
  294.  (setq pth (vl-filename-directory (findfile "acad.pat")))
  295.  (setq fn (open (strcat pth "\\ceiling.pat") "w"))
  296.  (write-line "*CEILING,CEILING" fn)
  297.  (write-line (strcat "0," (rtos gxp 2 8) "," (rtos gyp 2 8) ",0," (rtos uny 2 8) "," (rtos (- unx gx) 2 8) "," (rtos (- gx) 2 8)) fn)
  298.  (write-line (strcat "0," (rtos gxp 2 8) "," (rtos (- uny gyp) 2 8) ",0," (rtos uny 2 8) "," (rtos (- unx gx) 2 8) "," (rtos (- gx) 2 8)) fn)
  299.  (write-line (strcat "90," (rtos gxp 2 8) "," (rtos gyp 2 8) ",0," (rtos unx 2 8) "," (rtos (- uny gy) 2 8) "," (rtos (- gy) 2 8)) fn)
  300.  (write-line (strcat "90," (rtos (- unx gxp) 2 8) "," (rtos gyp 2 8) ",0," (rtos unx 2 8) "," (rtos (- uny gy) 2 8) "," (rtos (- gy) 2 8)) fn)
  301.  (close fn)
  302.  (setvar 'cecolor cec)
  303.  (setvar 'plinewid wid)
  304.  (vl-cmdf "_.UCS" "_M" "_non" p)
  305.  (setvar 'hporigin '(0.0 0.0))
  306.  (setvar 'hpang 0.0)
  307.  (vl-cmdf "_.-BHATCH" "_S" (entlast) "" "_P" "CEILING" "" "" "_A" "_S" "_N" "_A" "_Y")
  308.  (while (< 0 (getvar 'cmdactive)) (vl-cmdf ""))
  309.  (initget "Yes No")
  310.  (setq ch (getkword "\nErase main rectangles [Yes/No] <Yes> : "))
  311.  (if (null ch)
  312.    (setq ch "Yes")
  313.  )
  314.  (if (= ch "Yes")
  315.    (foreach e entlst
  316.      (entdel e)
  317.    )
  318.  )
  319.  (vl-cmdf "_.UCS" "_P")
  320.  (vl-cmdf "_.UCS" "_P")
  321.  (*error* nil)
  322. )
  323.  

M.R.
« Last Edit: August 27, 2017, 07:02:38 am by ribarm »
Marko Ribar, d.i.a. (graduated engineer of architecture)

:)

M.R. on Youtube

BIGAL

  • Newt
  • Posts: 83
  • 30 + years of using Autocad
Re: Ceiling tiles lisp
« Reply #5 on: August 27, 2017, 01:33:04 am »
You can set "snap" to the size of your tile and turn it on as you draw a line it will snap at tile size increments with ortho on. You will need to  reset your origin at lower left cnr using UCS OR.
A man who never made a mistake never made anything

fools

  • Newt
  • Posts: 52
  • China
Re: Ceiling tiles lisp
« Reply #6 on: August 27, 2017, 08:47:47 am »
Wow, nice work, Marko.
Good good study , day day up . Sorry about my Chinglish .

HasanCAD

  • Swamp Rat
  • Posts: 1184
Re: Ceiling tiles lisp
« Reply #7 on: August 30, 2017, 08:13:51 am »
Thanks fools working good

Marko WOW WOW WOW More than incredible.

danglar

  • Newt
  • Posts: 138
  • Read My Li(s)(p)
Re: Ceiling tiles lisp
« Reply #8 on: August 30, 2017, 09:00:12 am »
Some modification for fools code...
May be it can improve his approach:

HasanCAD

  • Swamp Rat
  • Posts: 1184
Re: Ceiling tiles lisp
« Reply #9 on: September 06, 2017, 07:02:51 am »
Some modification for fools code...
May be it can improve his approach:
Thanks danglar.
But the lisp does not creata internal boundary for fixied number of tiles