Thư viện xây dựng: Tiêu chuẩn xây dựng- Văn bản- File mẫu- Sơ đồ- Quy trình- Phần mềm xây dựng

Tiêu đề: Bộ AutoLISP Do kts. Trần Ngọc Thắng TỰ BIÊN SOẠN + SƯU TẦM [In trang]

Tác giả: TranNgocThang76    Thời gian: 12/5/2025 18:11
Tiêu đề: Bộ AutoLISP Do kts. Trần Ngọc Thắng TỰ BIÊN SOẠN + SƯU TẦM
  1. ********************************************************************************
    : L7 P3 @/ o: o% g
  2. *             ACADLISP FOR AUTOCAD R.14 -> AUTOCAD R.2012                      *: L) P$ t- c: I7 m
  3. *         Tran Ngoc Thang DHXD-HaNoi41 from years 1999 -> 2015                 *
    6 D! @% |+ w1 u- ]8 n8 w
  4. *                         Suu tam & Soan                                       *
    ( k- `: J# z& o
  5. ********************************************************************************  b! M5 t: I! q% K+ R" B; A* S7 o

  6. - T4 J; K* x9 x+ O. v
  7. ; Next available MSG number is  104, I0 F4 ?% R# }
  8. ; MODULE_ID ACAD2000doc_LSP_
    ! X' f" I) R. D6 N8 d
  9. ;;;    ACAD2000DOC.LSP Version 1.0 for AutoCAD 2000
    . @, a" A& j! r
  10. ;;;
    ! L* w7 M2 q1 U3 o
  11. ;;;    Copyright (C) 1994 - 1999 by Autodesk, Inc.
    7 k5 t4 O( N' E/ @! B
  12. ;;;
    ' w6 z: _7 P. J8 H5 k' h0 t. B; r
  13. ;;;    Permission to use, copy, modify, and distribute this software
    ! W6 h6 P9 b1 v* v& w" L$ a
  14. ;;;    for any purpose and without fee is hereby granted, provided: j. t  V) e8 D% |& x
  15. ;;;    that the above copyright notice appears in all copies and
    2 h! X" O' L3 v* B' i
  16. ;;;    that both that copyright notice and the limited warranty and
    " c0 g* A/ N+ j  @& |
  17. ;;;    restricted rights notice below appear in all supporting" @. U0 e9 l+ |4 e$ d2 E* p6 W! t
  18. ;;;    documentation.
    0 n, p  q7 M& y* m/ Y  C/ k
  19. ;;;
    5 b* F, `' y6 l
  20. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    " p; ]' e# z1 N; L- X
  21. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF( s# e0 W- O0 f$ _
  22. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.+ k/ W& R4 T2 _8 q8 S: c
  23. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    ) |3 w1 g# L" J. J7 i; I: d& k
  24. ;;;    UNINTERRUPTED OR ERROR FREE.
    # U, e6 ]0 k# ?3 V6 S7 w
  25. ;;;+ R- e" _4 p2 A
  26. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to% f6 I! l1 k. V
  27. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    - N! a- W5 R4 s& s  ?
  28. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) 1 e5 t, d: H& \; W- x0 ]
  29. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    & j9 p7 k# J* F% m7 w$ C0 a
  30. ;;;
    1 G- j% i3 |8 S+ ]
  31. ;;;.
    2 f  k( b' R+ P$ l6 H& p
  32. ;;;
    - D: v6 ^' O4 I, [% @% |* ]& ]
  33. ;;;    Note:
    2 o( \. y8 U: J: s6 j& n
  34. ;;;            This file is loaded automatically by AutoCAD every time 1 H; V$ W8 h) c* h
  35. ;;;            a drawing is opened.  It establishes an autoloader and
    1 J7 h5 }3 d" U2 C: \2 f
  36. ;;;            other utility functions.
    8 O" r0 s4 b5 x6 i+ m. k0 S# \1 n
  37. ;;;
    2 }' c4 T. |0 s0 M1 T# l+ [
  38. ;;;    Globalization Note:   
    & {$ {# E/ z; P3 S  l
  39. ;;;            We do not support autoloading applications by the native
    , ~; C! u% [" F( @
  40. ;;;            language command call (e.g. with the leading underscore# n5 s) F  b# Y: G
  41. ;;;            mechanism.)
    # y! B' E4 z) l# W9 s9 g$ }- O
  42. 9 W- ?% p6 B+ E. w- C
  43. ) _1 Q2 d' z+ n/ Y2 k. p
  44. ;;;===== Raster Image Support for Clipboard Paste Special =====
    1 Q2 H8 m; f; J( F7 v. n9 n7 g
  45. ;;
    2 }+ o( ?9 N3 Y& n- V, |( s
  46. ;; IMAGEFILE- }% n6 f1 n* Q. v0 A7 j# a
  47. ;;
    8 |( s  Y) T! Y) J9 I; V
  48. ;; Allow the IMAGE command to accept an image file name without
    + f0 G3 o( D# H9 u- B- B. R
  49. ;; presenting the file dialog, even if filedia is on.
    ' U( S5 l5 g5 R# F3 _" [: u
  50. ;; Example: (imagefile "c:/images/house.bmp")
    ; U( C+ q0 S6 x5 Y8 o
  51. ;;
    * @+ U6 w! T  r! D# _: x- A% S
  52. (defun imagefile (filename / filedia-save cmdecho-save)- E, a7 k9 Y3 \5 \0 E' c3 x$ c% w" F
  53.   (setq filedia-save (getvar "FILEDIA"))+ `$ d, v5 E/ b3 |# b
  54.   (setq cmdecho-save (getvar "CMDECHO"))
    # X3 n4 ~6 @0 S9 D4 a
  55.   (setvar "FILEDIA" 0)
    0 T. Q4 b1 u6 V3 c  R5 C
  56.   (setvar "CMDECHO" 0)
    * k+ N: Z& B3 G' X1 ~, P/ r
  57.   (command "_.-image" "_attach" filename)' F$ ?  [) a$ h0 @+ O  o
  58.   (setvar "FILEDIA" filedia-save)
    / A& k& l8 `/ e& o' r# t
  59.   (setvar "CMDECHO" cmdecho-save)# N3 U# ?/ y& [. m$ @. @/ j; K
  60.   (princ)
    7 u3 o1 O" h* Q) m" z
  61. )
    8 a  V0 w1 o" f- z

  62. ! S/ m" m) m; q- ?# H
  63. (defun c:zx () (command "zoom" ".5x"))
    2 F4 [2 j! i% P6 y7 B5 B9 c( g
  64. (defun c:zz () (command "zoom" "p"))
    ' h1 j7 u; h$ ]0 M# O
  65. (defun c:za () (command "zoom" "a"))
    9 v0 V4 M  G. w
  66. (defun c:zd () (command "zoom" "d"))" J* D: b& s' L
  67. (defun c:ze () (command "zoom" "e"))' h% d4 _# U- P. Q% f3 |, J: j2 I
  68. (defun c:zr () (command "zoom" "" ""))
    8 y$ ?& s% x% m  z3 v/ O
  69. (defun c:vv () (command "ucs" "v"))( Q- `# ?3 p6 C1 T. n1 I; r
  70. (defun c:co () (ssget) (command "copy" "p" "" "m"))  c1 p1 T  j% r3 }1 ?& F8 Y
  71. (defun c:c () (command "circle"))
    ; k0 q, _! Y3 R" S/ Q$ R. g" d
  72. (defun c:rt () (command "rotate"))
    6 [% B! S1 o3 q1 r9 D
  73. (defun c:3q () (ssget) (command "_rotate3d" "ANGDIR" "value" pause (princ)))
    3 ~7 U. U2 I7 G8 X1 G% Z+ v
  74. (defun c:30 () (ssget) (command "rotate" "p" "" pause "30"))9 c% r4 S7 l% s6 J; s3 k. Q8 f
  75. (defun c:-30 () (ssget) (command "rotate" "p" "" pause "-30"))
    2 X& C1 a5 z5 U& C5 g
  76. (defun c:45 () (ssget) (command "rotate" "p" "" pause "45"))
    , J) O# M+ C6 [; _2 d: j7 P, o
  77. (defun c:r5 () (ssget) (command "rotate" "p" "" pause "5"))
    ' A  m; M8 R5 E+ Y
  78. (defun c:60 () (ssget) (command "rotate" "p" "" pause "60"))" Q# m! j* ~1 e0 A( W* @& @
  79. (defun c:-60 () (ssget) (command "rotate" "p" "" pause "-60"))2 U2 P5 @5 k& d# w/ x8 o
  80. (defun c:90 () (ssget) (command "rotate" "p" "" pause "90"))
    ( M& V" r7 z' n1 O( _" g+ X
  81. (defun c:180 () (ssget) (command "rotate" "p" "" pause "180"))
    $ }9 ~0 O+ e' ^* h3 i# d! ^
  82. (defun c:-45 () (ssget) (command "rotate" "p" "" pause "-45"))) I* x' Q( {  G8 }7 P2 e8 J
  83. (defun c:-90 () (ssget) (command "rotate" "p" "" pause "-90"))" z! u7 K! U; E" {0 \- r
  84. (defun c:md () (ssget) (command "mirror" "p" "" pause pause "y"))+ `* _0 y" c' j$ m5 U# m
  85. (defun c:fd () (command "find" "p" "" )(princ))(princ)
    / g1 Q- r. Q5 \* Y2 d: l
  86. 8 N3 z9 l' _# W  u
  87. (defun c:romantdim () (command "-style" "ROMANT-DIM" "romant,vnh.shx" "200""1""0""n""n""n"))(princ)
    - @  X6 |( ]' C' M0 g. n
  88. (defun c:romantext () (command "-style" "ROMANT-TEXT" "romant,vnh.shx" "200""1""0""n""n""n"))(princ)6 U& E' L' P2 U' J- j* V% [
  89. (defun c:vnhelvthuong () (command "-style" "VNHELVLT-Thuong" "vnhelv,vnh.shx" "500""1""0""n""n""n"))(princ)
    4 C/ A$ }" _* ?% _, O. u1 p. V; d
  90. (defun c:vnhelvhoa () (command "-style" "VNHELVLT-Hoa" "vnhelvh,vnh.shx" "500""1""0""n""n""n"))(princ)9 X9 c) z# k1 p- P% l
  91. (defun c:truc () (command "-style" "TRUC" "impact" "0""1""0""n""n""n"))
    ( e* a2 y. K& d
  92. (defun c:chu () (command "-style" "VERDANA" "verdana" "200""1""0""n""n"))# _/ Y& M3 u6 U7 Y1 H! y( V& d
  93. (defun c:cot () (command "-style" "COTES" "verdana" """1""0""n""n"))) T9 z: f0 V: s) P* R/ w
  94. , J# p; M4 D$ m. X" R0 _; ?9 b
  95. (defun c:an () (command "-style" ".AVANT" ".vnavant" "200""1""0""n""n"))
    $ Z. E6 a9 Z- Z1 ]3 j/ k2 F
  96. (defun c:ah () (command "-style" ".AVANTH" ".vnavanth" "200""1""0""n""n"))* d" h4 {; X1 d/ J- l) F
  97. (defun c:ha () (command "-style" ".ARIALH" ".vnarialh" "200""1""0""n""n"))
    , h1 o! [6 h9 \1 _
  98. (defun c:na () (command "-style" ".ARIALNARROWH" ".vnarial narrowh""1200""1""0""n""n"))/ J& I; v8 G, P2 _
  99. (defun c:vn () (command "-style" ".VNTIME" ".vntime" "200""1""0""n""n"))/ r  _" s0 \7 j0 j
  100. (defun c:vh () (command "-style" ".VNTIMEH" ".vntimeh" "200""1""0""n""n"))8 h  Y& T& Q/ j. z- D: ^$ c

  101. + l0 w/ U( ?, A/ j- h
  102. (defun c:ps () (command "PSOUT" "CorelDraw-import-Photoshop" "W"))(princ);export the current view of a drawing as an EPS file# e) p8 `* A: g/ a% T
  103. ! H& @6 \0 z# ~7 `! q1 D
  104. ;free lisp by cadviet,cd2k44* C" J  `9 Q% \3 R+ w" o+ O
  105. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830, V& Z* o4 r7 O2 F+ x' T0 B, _1 `
  106. (defun c:FTEXT (/ ent tstyle )+ L) P: f1 ~7 C7 n* W
  107. (command "undo" "be")- r  y, j8 J* Q- ^# g& I' P) T
  108. (setq ent (entsel "\n Pick text :"))
    " l: Q& S0 Y4 ^4 `
  109. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    1 p( k9 ?  x+ v/ d6 L4 p7 r
  110. (command "STYLE" TSTYLE "romant.shx,vnh.shx" "0" "1" "0" "N" "N" "n")9 s4 L1 ]- ?: p: {% s
  111. (setvar "TEXTSTYLE" Tstyle)- F5 q" `' _2 Q" L" W
  112. (command "undo" "end")7 f9 D. {9 R$ \! q( m
  113. )
    ; ~1 M9 Y. M9 d
  114. ;Cam on cadviet nhieu 27-11-2023 04h15p36s (thanks cadviet)
    / F* u! q# c6 Z

  115. 6 e# ]* }6 w) h/ \
  116. ;free lisp by cadviet,cd2k44
    8 G8 L  Q/ y5 b4 _: h
  117. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
    ) U' p: N, a$ Z5 Y0 Q) ~) f
  118. (defun c:Fvnh (/ ent tstyle )" u3 z5 x3 e1 m& p2 g% Y5 X/ m1 [
  119. (command "undo" "be")) [: W2 Z6 ]& L
  120. (setq ent (entsel "\n Pick text :")): g4 g% w/ c) D. \! j; u5 [8 q7 \
  121. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    8 V0 I0 S6 F% C" L
  122. (command "STYLE" TSTYLE "vnhelvh.shx,vnh.shx" "0" "1" "0" "N" "N" "n"): T4 o. e1 O( ?6 ]  M
  123. (setvar "TEXTSTYLE" Tstyle)+ R# Q: p( i8 k
  124. (command "undo" "end")
    3 K5 I/ r2 K2 q: \8 F* {
  125. )
    / }0 {6 o; D8 c& x7 D+ i6 i

  126. 5 n& T- o+ O( `
  127. ;free lisp by cadviet,cd2k44$ j  R& g' C8 f6 }% L/ b9 Q4 E
  128. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
    3 V/ t3 B* a; j8 Y! f" G" D
  129. (defun c:Chbg (/ ent tstyle )
    - ?$ e, w) e. D, K: R
  130. (command "undo" "be")' `( x$ A7 }( S- x: W$ Q
  131. (setq ent (entsel "\n Pick text :"))1 I+ I* w! H$ V
  132. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    # P& a. ?7 [1 }. _9 w
  133. (command "STYLE" TSTYLE "chhbg.shx,vnh.shx" "0" "1" "0" "N" "N" "n")
    - M" ~  a$ Z! C7 U
  134. (setvar "TEXTSTYLE" Tstyle)
    4 [! S3 E6 Y5 O4 u
  135. (command "undo" "end")- K; v$ p4 S0 U6 H0 x$ g, N  ~
  136. ), p8 Z8 w# t& z; X
  137. 8 t& V# l  s4 b" N
  138. ;free lisp by cadviet,cd2k44( ?6 Q  Z5 m( z! N0 d% W
  139. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830( j- c+ v3 I8 F
  140. (defun c:Chsm (/ ent tstyle )9 D" T% }! Q( Q8 m+ y% J/ `
  141. (command "undo" "be")
    7 c/ i! B  G0 K; J
  142. (setq ent (entsel "\n Pick text :"))9 J- F# _  w" T5 X8 r1 A9 W
  143. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))( C6 V6 c  ~3 o1 c$ m) T- S1 v
  144. (command "STYLE" TSTYLE "chhsml.shx,vnh.shx" "0" "1" "0" "N" "N" "n")/ s5 C  G* S+ |( Q
  145. (setvar "TEXTSTYLE" Tstyle)
    , k/ n7 K' Y. y$ O8 h, P3 x+ f
  146. (command "undo" "end")- U& }8 ~0 B- g1 H7 P0 Y
  147. )
    1 q$ y- H, w) u/ k! ?2 d) r( s0 s% n

  148. 6 p( Q- s" J% b% P( S" v
  149. ;free lisp by cadviet,cd2k447 b  D  X9 z3 a# d+ M4 V1 ]
  150. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
    " G! I; g5 I# Z8 Y  s; C! ]! M
  151. (defun c:Fttf (/ ent tstyle )
    - l! X3 O" r: `. @+ n0 X
  152. (command "undo" "be"): K' C( u1 h0 D9 g8 }1 A
  153. (setq ent (entsel "\n Pick text :"))
    % k& E; y& @+ u, v  M7 M. @7 o
  154. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    ! q3 f& l6 b4 n
  155. (command "STYLE" TSTYLE "verdana.ttf" "0" "1" "0" "N" "N" "n")! W6 P7 I( ^& Z  \" X
  156. (setvar "TEXTSTYLE" Tstyle)$ }! I4 q$ j& }* [0 z. M, b
  157. (command "undo" "end")
    - f' r4 D/ D; q, G/ g$ ]6 }
  158. )  E  i* }+ K. c. t9 {6 f
  159. ( f% ^3 q0 X) C. U1 r$ |3 s5 Z! K
  160. ;;; ============================================
    , r! `2 E- [. V) B6 }; H7 O
  161. ;;;6 Z4 ~4 R' J* P% q- v: u
  162. ;;;   LISP Creater Tao Duong Dan AUTOCAD2000
    0 ]9 L  }9 e& S: _7 X5 U6 G7 u
  163. ;;;
    # J2 {: P0 D( A
  164. ;;; ============================================
    " @: w) ~( R# A6 L; z* a
  165. ' f, x. D4 P3 j1 ?" D7 I
  166. ;;; ============================================
    , o% x$ Q# M- W9 X8 N
  167. ;;;& ]# ]$ i  S/ d' }) ?" M- R, c# s$ L
  168. ;;;          CREATING FROM AUTOCAD20002 y9 O1 K" n- w8 T; F& |: o( P( [, S
  169. ;;;/ z1 w) O* B) |9 `0 l# V
  170. ;;; ============================================
    7 f8 D1 i% N+ P( y; W8 {6 t8 G
  171. , P6 p; Q- F7 C
  172. (setvar "INSUNITS"4)* u, i- N; w1 U  d- c
  173. (setvar "ANGBASE"0)4 M8 S, D. L' `  ?& ?
  174. (setvar "ANGDIR"0)- k7 r7 N, D# F/ y  I
  175. (setvar "AUNITS"0)5 v# g3 o" T6 l) J! i
  176. (setvar "AUPREC"8)
    9 m& u1 R- p0 r& G
  177. (setvar "LUNITS"2)6 L/ w8 W: J4 A3 s2 o
  178. (setvar "LUPREC"8)2 M# r& o) E! l/ T
  179. (setvar "ACADLSPASDOC"1) # W7 b$ v$ f: B3 R1 r& D4 O
  180. (setvar "pickbox"5)
    5 D9 C$ F; X* C5 z# w
  181. (setvar "blipmode"0)
    / y! @( L4 D( Y# m6 @
  182. (setvar "mirrtext"0)
    2 P, ^& E; Y+ c& ~9 b5 N3 I
  183. (setvar "cursorsize"100)5 q0 Q: K0 F( k( z8 b2 U
  184. (setvar "ZOOMFACTOR"75)
    + @2 z' L4 i4 y+ {& w! {- P
  185. (setvar "LTSCALE" 10)
    ; q! f7 m0 w" D4 v8 S
  186. (setvar "lwunits"1); S8 d" `: R3 j+ G1 C7 _
  187. (setvar "DIMBLK" "Closed")
    ) K6 S0 r3 o. R  g
  188. (setvar "DIMGAP"0.0693)
    $ n6 `- x$ P! _3 p7 c) g( r4 N1 ?
  189. (setvar "DIMASZ"0.20)9 b- n( M- w7 p) u
  190. (setvar "DIMCEN"0.2)% f+ s# `) x2 N6 X/ H* T
  191. (setvar "DIMDLI"0.1)
    $ D! T" u7 U1 A) I5 B0 h
  192. (setvar "DIMEXE"0.0693)1 r$ i. o9 s5 X1 Y2 i' i. i- p
  193. (setvar "DIMEXO"0.25)- x* W3 n" l6 I+ J1 O% T3 g4 @
  194. (setvar "DIMDEC"0)* U/ Z" n% T* {' G0 a- J! A
  195. (setvar "DIMTIX" 1)
    3 w, y" `: j' F( R
  196. (setvar "DIMTXT" 0.099)4 O3 z5 r/ H6 w) [
  197. (setvar "DIMCLRT" 7)2 M! w; u) O. |5 w# ?2 k
  198. (setvar "DIMTVP" 1)
    * m) i5 V( M8 z$ n" L6 C/ j3 }
  199. (setvar "DIMJUST" 0)/ ?+ ^7 L+ p! n% |) m$ A
  200. (setvar "DIMTIH" 0)
    * E. a, o. x, \0 q' c
  201. (setvar "DIMTOFL" 1)
    ( k/ V$ g7 z7 e. _4 m0 i/ v
  202. (setvar "DIMSCALE" 1111.1111)9 h) D# f1 y! V& d& J: |" R  ?$ `
  203. . q+ {8 v/ U5 `% A* ~% N9 x) b4 }- Q4 q
  204. 2 E- _* A7 v" J8 H

  205. . _. k& n* y8 z: l1 I
  206. (defun c:zp ()  (command "'.zoom" "p"))) r7 y% B# i/ C9 M/ i
  207. (defun c:zz ()  (command "'.zoom" "p"))9 v4 g: L5 S! ]& f% S
  208. (defun c:ze ()  (command "'.zoom" "e"))
    / h* Y( s0 ^1 J9 e9 v' @: L
  209. (defun c:za ()  (command "'.zoom" "a"))( R9 U6 _+ E0 G* n) H; y" o
  210. (defun c:zd ()  (command "'.zoom" "d")); {# h$ e0 W0 R- |! T" Y
  211. (DEFUN C:ZZZ () (COMMAND "ZOOM" ".25X"))) |" p0 {$ p( y
  212. (DEFUN C:ZX  () (COMMAND "ZOOM" "2X"))% r; \' k; x7 {' |. w$ D
  213. (defun c:de () (command "ddedit")(princ))
    : `. Y1 T: n/ b  b# H
  214. (defun c:dda () (command "Dimaligned"))
    8 ?; |9 G6 K3 {/ i9 W# ^  U; L
  215. (defun c:ddb () (command "Dimabaseline"))7 w: Z3 q4 o% B( j* L; H+ E
  216. (defun c:ddc () (command "Dimcontinue"))
    ! I/ Y3 b! t0 g( X2 n  A
  217. (defun c:dde () (command "Dimtedit"))$ h4 h0 u4 p2 p5 F" X: a/ m
  218. (defun c:ddf () (command "Ddattdef"))
    # V) Q1 D8 H, ^8 b) v6 I
  219. (defun c:ddi () (command "Dimdiameter"))1 y: }0 F4 Y1 _5 R* r
  220. (defun c:ddl () (command "Dimlinear")), J! H& S" c9 b/ l/ r
  221. (defun c:ddn () (command "Dimangular"))
    6 V( M- k/ c4 h+ y
  222. (defun c:ddo () (command "Dimordinate")). i! q) H3 l* z0 a3 t# E) G/ ~! }' z
  223. (defun c:ddr () (command "Dimradius"))* q, J6 c1 E8 ]- b' R
  224. (defun c:dds () (command "Dimstyle"))1 Z5 i! i: T! M. ^' {

  225. * U) W3 L# D2 m4 m& E. u2 `: i
  226. (defun c:DU () (command "dim1" "up" "select" "exit" pause ))(princ)
    & Z3 [2 Q7 Y, K5 w. C
  227. (defun c:DH () (command "Dim1" "home" "select" "exit" pause))(princ)
    ! E: L7 i% E7 v5 ~8 E
  228. (defun c:UU () (command "dim1""update""all"))
    9 o3 G: l) M: p' e" S! w) q" ]
  229. (defun c:ded() (command "dim1""tedit"))1 D. z' P6 E6 q5 C( b+ a
  230. (defun c:da () (command "dim1""ali"))" P$ f$ o3 g+ }+ X* U
  231. (defun c:dll() (command "dim1""l"))
    . x# V1 P" ^2 H, K4 h
  232. (defun c:dan() (command "dim1""an"))- l% ~$ t5 n" q2 o2 d
  233. (defun c:d1 () (command "dim1""ra"))
    7 m) C8 S( I% i9 ]( I
  234. (defun c:n  () (command "dim1""new"))
    # g6 V. @( O9 `+ [9 X, {- F
  235. 5 n, k: v# a3 M5 @2 s
  236. (DEFUN C:PE  () (COMMAND "PEDIT"))
    4 O: F2 `( q6 o( b/ J
  237. (DEFUN C:PL  () (COMMAND "PLINE"))! e0 E6 d# f) x8 c  G8 p: [; C
  238. (defun c:dd () (command "dist")(princ))
    6 N7 g5 P, s2 k
  239. (defun c:w () (command "pedit" pause "w" "au")(princ))9 D- z, O/ _8 u
  240. (defun c:pg  () (command "polygon" "polygon"))
    0 p0 J. l/ {0 B. [2 Q) r
  241. (defun c:el  () (command "ellipse"))) ~8 y) s* |* N+ J5 x
  242. (defun c:xe  () (command "explode"))
    5 b( ?( G  z0 b, f- ~: T1 @
  243. (defun c:eex  () (command "extrude"))
    ' W  y' H$ S( ]# c1 F7 L( y
  244. (defun c:xg  () (command "xline""a"))/ E0 `" V3 `4 F5 I  {
  245. (defun c:xh  () (command "xline""h"))
    5 o/ s& `: G( }7 Q+ _: V$ j( r
  246. (defun c:xv  () (command "xline""v"))9 p' y; ]! p7 [* v# o  j, p# |

  247. % j$ F$ K+ Q6 v' e: q
  248. (defun c:oc () (command "osnap""cen"))
    3 u( o+ V" X8 y
  249. (defun c:od () (command "osnap""nod"))% v! l" j: v" f
  250. (defun c:oe () (command "osnap""end"))
    : C3 a4 ^1 \) Z3 S# F
  251. (defun c:oi () (command "osnap""int"))/ P! b5 {7 s  X
  252. (defun c:or () (command "osnap""per"))
    + U, S7 F9 m& [( u
  253. (defun c:on () (command "osnap""none"))+ \! y, ]+ |1 W. a& ~8 C
  254. (defun c:oq () (command "osnap""qua"))
    . T  f6 f$ m/ J; {% a6 Q
  255. (defun c:om () (command "osnap""mid"))! u6 _; k6 O5 j# T& D! n: ~8 Z
  256. (defun c:ot () (command "osnap""tan"))
    3 {8 p. e+ i3 C" ?. b9 {! A, z
  257. (defun c:oin () (command "osnap""ins"))6 Q2 J) H9 g3 @
  258. (defun c:oa () (command "osnap""nea"))4 N) F/ }8 n3 I! Z% i' f' J
  259. (defun c:ol () (command "osnap" "End,Mid,Cen,Node,Nea,Int,Perp,Qua")(princ))% ~4 W! k1 f  b; H- Z
  260. ;(defun c:du () (command "dim1" "up" "s" "pick" "other"))
    4 w) p! [- z$ @1 s! w! L
  261. ;(defun c:nn () (command "new" "y" ))
    2 u8 @  t; L" H' N% ]
  262. 4 Z. _8 O4 }! M/ b& U" }, c
  263. (defun c:/ () (command "limits"))
    % j7 m. `2 X" I
  264. (defun c:`1 () (command "region")): M5 \7 \! F; R
  265. (defun c:`2 () (command "subtract"))
    9 ~2 M6 z, G% e0 f0 W, ~5 m4 x; Q
  266. (defun c:`3 () (command "union"))
    : R* w% ^) p. e+ [! N0 m. a
  267. (defun c:`4 () (command "intersect"))
      @+ S( g8 x  [+ o. u/ I  [
  268. (defun c:`c () (command "cal"))
    % e1 V# T" [. [3 ^" y
  269. (defun c:`g () (command "Polygon"))
    $ J: |- Y; Z- s2 p& @" j4 e% f7 Z
  270. 8 ?3 @2 u, F" d  C
  271. (defun c:lmi() (command "LIMMAX" pause "" "zoom" "all" )(princ))
    % G- n% [3 d* |1 i! ]# b8 m/ o' |
  272. (defun c:drt () (command "DRAWORDERCTL" pause "Integer" "" "" )(princ))
    * C; L; g5 I7 n0 C5 C* y0 ^
  273. (defun c:ip () (ssget) (command "print,_plot" ))(princ)( C5 H4 o& D2 R- U0 E' J" u
  274. " E$ F9 e* N# B+ K
  275. (defun c:ddm () (command "ddlmodes" pause))
    ( c+ V' J+ ?7 @+ ]

  276. 4 l6 w" F- A& o# M* t7 ?/ B5 D
  277. (defun c:sha () (command "shade" pause))
    9 x/ _' Y3 I- N5 b

  278. ! o) s( |+ L- V) L+ e. Q. g& }
  279. (defun c:sr1 () (command "surftab1" "p" "" pause))" D( l) N; b1 @0 N" M' p3 \7 |
  280. (defun c:sr2 () (command "surftab2" "p" "" pause))9 @. @+ g8 h) d+ U
  281. 8 C- Z; ?( g& p- ^- A2 F
  282. (defun c:ad () (command "audit""y"))0 H+ G9 G  |9 k* n- l0 j( q: w7 M5 k
  283. (defun c:q () (command "quit")); G5 h) b. R; @, m

  284. 1 R6 S1 Y# O, E
  285. (defun c:30 () (ssget) (command "rotate" "p" "" pause "30"))
    ) ^4 l) R. D0 L2 k, \5 @( l. p; `
  286. (defun c:-30 () (ssget) (command "rotate" "p" "" pause "-30")), R$ ~( E# A  p9 V
  287. (defun c:45 () (ssget) (command "rotate" "p" "" pause "45"))
    8 U) x4 ~" H2 s3 T  M
  288. (defun c:-45 () (ssget) (command "rotate" "p" "" pause "-45"))  U) }+ t( u7 l' W$ d
  289. (defun c:60 () (ssget) (command "rotate" "p" "" pause "60"))
    * I+ W0 B* `) S7 Q1 `
  290. (defun c:-60 () (ssget) (command "rotate" "p" "" pause "-60"))+ ~2 [6 c/ \& q1 r* L. I1 Q/ A
  291. (defun c:90 () (ssget) (command "rotate" "p" "" pause "90"))
    ' V8 [2 R( w/ X( o$ f( M) i! M! ~
  292. (defun c:-90 () (ssget) (command "rotate" "p" "" pause "-90"))
    ' r! ~: m3 ~2 B
  293. (defun c:180 () (ssget) (command "rotate" "p" "" pause "180"))0 g0 V7 ^0 m( O0 r9 P
  294. $ Y0 c: I" [7 k" b( ^  ?
  295. (defun c:u3 () (command "ucs""3"))
      W6 z4 u( j3 ]3 o, A0 P
  296. (defun c:ue () (command "ucs""o""end"))
    + I5 a% V' {2 s! S, H- ?1 M
  297. (defun c:ui () (command "ucs""o""int"))% t* @- M3 a; P2 f8 i" V
  298. (defun c:um () (command "ucs""o""mid"))
    8 l6 y  M; U- p6 W1 u' y$ |
  299. (defun c:uc () (command "ucs""o""cen"))
    ' \, g& R2 o3 {/ Y+ t
  300. (defun c:uq () (command "ucs""o""qua"))
    $ N4 \3 @) n+ `% ?" Z% e
  301. (defun c:3s () (command "ucs""3"))7 C% W4 D0 v5 t" f: G  c4 F: j
  302. (defun c:sx () (command "ucs""s"))
    # j' f" E" O  s+ r5 ~  L- o' u: N
  303. (defun c:sf () (command "ucs""o"))
    ! M9 D# Q0 b! `' v. u
  304. (defun c:sz () (command "ucs""p"))$ }' n( t2 p  t6 `
  305. (defun c:sr () (command "ucs""r")). N8 V9 z) e6 ~4 R# {
  306. (defun c:sw () (command "ucs""w"))
    ; ^' V' S: a) W5 W2 s
  307. (defun c:fv () (command "ucs""v"))& m2 t/ i+ k" p; R
  308. (defun c:ux () (command "ucs""x"))8 Y/ ]- h# `) A- U( D$ p! T
  309. (defun c:uux () (command "ucs""x""90"))& J4 u6 ?+ Z% u  p  U9 c0 t
  310. (defun c:xxu () (command "ucs""x""-90"))8 \0 T0 C/ [; _' {  _9 R
  311. (defun c:uy () (command "ucs""y"))
    0 D1 `: ?& s. O- F: O$ E
  312. (defun c:uuy () (command "ucs""y""90"))
    / S0 z0 }" ^9 Q# m" [# D2 R' y
  313. (defun c:yyu () (command "ucs""y""-90"))# i8 ?+ y( r; R9 a4 O0 H. f
  314. (defun c:uz () (command "ucs""z"))
    $ }% A/ g7 J2 H8 j3 V
  315. (defun c:uuz () (command "ucs""z""90"))
    - K3 A$ q  K" Y) y) m# a3 z5 B" b
  316. (defun c:zzu () (command "ucs""z""-90"))8 F4 J+ C5 J/ I! a7 x' W& o
  317. (defun c:uci () (command "ucsicon" "Properties" ))(princ): N3 o9 \4 _/ N1 n
  318. (defun c:ucm () (command "ucsman" ))(princ)" y" z4 W/ H/ `/ i- }. M9 N

  319. + N! L( v9 }" r  }6 Q. V
  320. (defun c:sa () (command "vpoint""_non""-1,-1,1"))
    4 V' |& r- B( `
  321. (defun c:sd () (command "vpoint""_non""1,-1,1"))
    , [- Q2 c0 `, |- S
  322. (defun c:se () (command "vpoint""_non""1,1,1"))
    7 w4 T- R/ h: e8 i- l
  323. (defun c:sq () (command "vpoint""_non""-1,1,1")), z5 P6 p4 S" t' C" q
  324. (defun c:vc () (command "plan"""))( T) w; y* t+ P; E
  325. (defun c:vd () (command "dview""all")), D; Z! A( H: ]7 k9 M3 ^$ u% |$ j
  326. . G  I. T& E- [3 V0 c
  327. (defun c:TT0 () (command "tilemode""0"))* n& d$ A) `# s8 V' E8 q8 x( P$ v
  328. (defun c:TT1 () (command "tilemode""1"))+ R( i0 U% x$ m' H

  329. - b* @  u: X, g, v3 \0 w8 `0 S
  330. (defun c:vt () (command "vpoint""_non""0,0,1"))* }# e! o0 d/ b2 D$ K
  331. (defun c:vb () (command "vpoint""_non""0,0,-1"))1 k& G* H/ Z1 x2 \/ H  b
  332. (defun c:vl () (command "vpoint""_non""-1,0,0")): e# b0 t" l; m- M: |
  333. (defun c:vr () (command "vpoint""_non""1,0,0"))
    ) t( ^$ c- C( b& `5 d6 ~
  334. (defun c:vf () (command "vpoint""_non""0,-1,0"))
    ) m7 ?. ?6 w3 o" S1 V/ I
  335. (defun c:vk () (command "vpoint""_non""0,1,0"))( `( s! R8 Q! s! w' _' j/ u
  336. 7 X1 W- Q7 p4 R5 u4 [
  337. (DEFUN C:MM  () (COMMAND "MIRROR"))
    4 y( \& b/ v" a+ d0 G) f! P/ l
  338. (DEFUN C:MP  () (COMMAND "MOVE" "P"))$ ?) M8 w# J* n1 _, K8 S; G5 I

  339. 8 `$ t' A. K8 {: L
  340. (defun c:mee (/ a)+ A- k1 q4 C  d
  341.   (setq a (ssget))(command "move"a"""end"pause"end"))- N! [$ ^( k, h% V7 p
  342. (defun c:mc (/ a)
    $ l5 v9 R0 g0 J1 J9 G" [" C1 K  i; d
  343.   (setq a (ssget))(command "move"a"""cen"pause"cen"))- k' q8 r  H9 C! K( p; \* a
  344. (defun c:cc (/ a)
    % t4 f. N$ h7 Y, W
  345.   (setq a (ssget))(command "copy"a"""m"))% Y/ x. T: d7 f; X0 A
  346. (defun c:ce (/ a)
    ) x! C) m) g; \+ j& O, D
  347.   (setq a (ssget))(command "copy"a"""m""end"pause"end"))  E6 C& z6 v" }6 G  r% }
  348. (defun c:cn (/ a)
    ( p2 e; F$ u7 M% x1 ^( ^0 G* v8 I
  349.   (setq a (ssget))(command "copy"a"""m""cen"pause"cen"))2 h9 z& G; V. t( r, j' p3 ]
  350. (defun c:tl ()(command "trim""l"""))3 j5 |5 D6 b+ v% K* ^& L
  351. (defun c:tf (/ a): h! L* R0 q5 n& b7 z$ b& J8 `
  352. (setq a (ssget))(command "trim"a"""f"))
    & G6 b1 e% q# l$ h! `7 d. i2 C
  353. (defun c:el ()(command "extend""l"""))
    ( q  q( F2 w: ~9 m" u; F& N: |7 ^* B
  354. (defun c:ef (/ a)
    8 t/ \2 P* T* y+ s/ Z
  355.   (setq a (ssget))(command "extend"a"""f"))
    - J* w& n1 q4 z" n1 W

  356. ' O  ], x( J. [% c$ f4 X( a4 N( e
  357. ( y3 H; R# G* q. L3 \( X
  358. (DEFUN C:110   ()(princ "\nChon doi tuong can offset ra 110.......") (COMMAND "offset" "110"))
    7 i5 f# Z# S, U& H" p1 t
  359. (DEFUN C:220   ()(princ "\nChon doi tuong can offset ra 220.......")(COMMAND "offset" "220"))6 u4 O  D. ^/ d! A/ q0 V
  360. (DEFUN C:330   ()(princ "\nChon doi tuong can offset ra 330.......")(COMMAND "offset" "330")). u5 q2 I9 [' F) s
  361. (DEFUN C:400   ()(princ "\nChon doi tuong can offset ra 400.......")(COMMAND "offset" "400"))# \. D. j2 w) W! P" A# x
  362. (DEFUN C:55   ()(princ "\nChon doi tuong can offset ra 55.......") (COMMAND "offset" "55"))0 K, N# t5 Z" V% B- @: d; E
  363. (DEFUN C:600   ()(princ "\nChon doi tuong can offset ra 600.......") (COMMAND "offset" "600"))4 e; f& b! I5 i1 P' t! `9 h
  364. (DEFUN C:700   ()(princ "\nChon doi tuong can offset ra 700.......") (COMMAND "offset" "700"))
    " R0 @: x, B9 l% W* D
  365. (DEFUN C:800   ()(princ "\nChon doi tuong can offset ra 800.......") (COMMAND "offset" "800"))* e' v2 F& k7 A. l+ g) D1 s! J3 \7 K
  366. (DEFUN C:900   ()(princ "\nChon doi tuong can offset ra 900.......") (COMMAND "offset" "900"))
    , r  x1 K# f* R7 d
  367. (DEFUN C:1200   ()(princ "\nChon doi tuong can offset ra 1200.......") (COMMAND "offset" "1200"))
    + W  w% d! }- q6 A5 J8 N! U. m& I
  368. (DEFUN C:1500   ()(princ "\nChon doi tuong can offset ra 1500.......") (COMMAND "offset" "1500")). O+ ]# I6 K3 V
  369. (DEFUN C:1800   ()(princ "\nChon doi tuong can offset ra 1800.......") (COMMAND "offset" "1800"))
    , J8 |, r9 Q" S  l1 v7 s" A
  370. (DEFUN C:2400   ()(princ "\nChon doi tuong can offset ra 2400.......") (COMMAND "offset" "2400"))
    # n' \% g. W& }* v0 Q& B5 Y0 @9 h
  371. (DEFUN C:3000   ()(princ "\nChon doi tuong can offset ra 3000.......") (COMMAND "offset" "3000"))
    5 H' q5 A, C; K2 A
  372. (DEFUN C:3600   ()(princ "\nChon doi tuong can offset ra 3600.......") (COMMAND "offset" "3600"))+ V+ N1 U) `* I0 v* b& h# X
  373. (DEFUN C:4200   ()(princ "\nChon doi tuong can offset ra 4200.......") (COMMAND "offset" "4200"))3 M- a, H8 F( B6 j- T8 f, f" W
  374. (DEFUN C:5000   ()(princ "\nChon doi tuong can offset ra 5000.......") (COMMAND "offset" "5000"))
    : u1 P8 k) h% z( e( c- f2 }, A
  375. - D1 a2 _4 t0 F$ m! x
  376. (defun c:mla () (command "-mledit""av"))
    2 @4 A. p. _3 D4 p& L
  377. (defun c:mlc () (command "-mledit""mc"))6 y; n8 C0 o2 [0 I! L0 s: t5 F) g- O3 R
  378. (defun c:mld () (command "-mledit""dv"))4 S0 n* |3 l' z1 G
  379. (defun c:mle () (command "mline""end"pause"end"))
    - O8 K' u- T6 y6 t& N& l+ N/ W
  380. (defun c:mli () (command "-mledit""ca""int"pause"int"))/ v5 E( m; Q, E$ |9 `1 o
  381. (defun c:mlj () (command "-mledit""cj"))8 t- K. }% O& t( _! |: z; Z
  382. (defun c:mlt () (command "-mledit""mt"))! }* P) e- Q# b: S" Q! j
  383. (defun c:mlk () (command "-mledit""ca""end"pause"end"))0 \7 m4 N( p& V
  384. (defun c:mlw () (command "-mledit""wa"))( n1 g% T6 [" Z3 a

  385. 1 k9 u$ O3 ~5 ]/ E
  386. (DEFUN C:DCA () (COMMAND "DVIEW" "all" "" "CA"))4 d8 j- r5 G1 i
  387. (DEFUN C:DPA () (COMMAND "DVIEW" "all" "" "PA"))
    0 B) J9 I  q  H# V0 ]1 e5 [
  388. (DEFUN C:DPO () (COMMAND "DVIEW" "all" "" "PO"))
    0 B" }) ~$ U/ N4 u
  389. (DEFUN C:DDD () (COMMAND "DVIEW" "all" "" "D"))* u" L8 O& F6 B" a0 S# {
  390. (DEFUN C:DZ  () (COMMAND "DVIEW" "all" "" "Z"))
    ; g( D8 w! X: @! M
  391. + M4 V4 e1 F( B
  392. (defun c:p0 () (command "pline""""w""0""0"))( S$ b- j0 r* S( a2 _( i( O
  393. (defun c:ot  () (command "offset""t"))
    7 z7 ]$ ?, a6 K7 D4 q) y( l
  394. (defun c:t  () (command "mtext"pause"j""bl""h"pause))' R) k) m) x6 v4 p+ \, ?. [  H
  395. (defun c:uo () (command "ucs""ob"pause))6 E- c* X9 q; Q4 V
  396. (defun c:f0 () (command "fillet""r""0")), A5 _: w5 l! C  X
  397. (defun c:fr () (command "fillet""r"))
    1 J: ~( N& w6 k$ M

  398. . i$ {1 E! P$ G* o0 T
  399. ;CHAMFER) J0 P! L7 Y! K' s2 k5 g
  400. (defun c:cf () (command "chamfer"))
    * ]0 F' c4 h" X8 ~4 N# \  m4 z
  401. (defun c:cfd () (command "chamfer" "d"))
    / k% @: G7 k9 B# @* e( }6 e
  402. (defun c:cf0 () (command "chamfer" "d" "0" ""))- j. m. a/ a* j; c3 i& X

  403. : @) W/ W8 D$ M; Z! x4 V5 e" L' R
  404. ;FILLET1 f6 W: t  K3 Z* u
  405. (defun c:f () (command "fillet"))
    * W1 u3 v) O7 r# L2 a
  406. (defun c:fr () (command "fillet" "r"))
    $ q5 U, k: B, O
  407. (defun c:f0 () (command "fillet" "r" "0"))" o/ P- D& A1 b  P0 _0 v

  408. 1 p7 h0 K# B! c; L* A3 P
  409. (defun c:OO  () (command "oops"))
    , D6 T9 S7 T0 ^5 ^7 j
  410. (defun c:dln  () (command "dimlinear"))4 X# u  u+ w  i- t' P; K; q) d) Y, W
  411. (defun c:dan  () (command "dimaligned"))8 I- j5 z4 n6 ]; ?7 C) a
  412. (defun c:ddc  () (command "dimcontinue"))& H# T: \9 o/ m! K1 [
  413. ( r# i$ z* A# [& F: i& c6 B
  414. (defun c:sc () (command "scale" "auto"))
    + L6 S5 g" R  k! `3 K9 p
  415. (DEFUN C:XO  () (COMMAND "snapang"))
    6 |; ]& a; X. L# j  g6 |# L  U
  416. (defun c:cc (/ a)
    6 i# {/ x9 v) i. B4 A% l, Z
  417.   (setq a (ssget))(command "copy"a"""m"))( O  O! V7 \: g& D8 Q

  418. 7 y1 X" g  u8 P; j" K
  419. (defun c:PJ (/ a): g: `) |- }( U4 h0 @2 o# N; R5 w, l6 c
  420.   (setq a (ssget))(command "pedit"a"""j""all""y"))
    " d' D" d7 P/ |2 j" y
  421. (defun c:JJ (/ a)
    # R: Z! K; [/ W
  422.   (setq a (ssget))(command "pedit"a"""j""y"))! H7 q7 m& G5 x4 h
  423. (defun c:TN (/ a)/ Z) b, o/ T, V6 j
  424.   (setq a (ssget))(command "change"a"""p""T"))
    $ g& j" K# b! c/ p: `* [7 r
  425. , b; q$ S' f: ^- o; j
  426.   n. Z% l8 l% a4 S( x3 O& |6 I
  427. ;=======================Tran Ngoc Thang - Tu nam 2000 - Hoc nam cuoi KTS . DHXD=========================
    4 d! O; j# v; O! Y8 `; v2 e. ]

  428. ' O7 C# v0 f( W, B3 Y
  429. (defun C:IB ()(setvar"cmdecho"1)4 _# O' b5 ^% W0 D' O. G" z
  430.   (setq pt(cadr(entsel"\nSelect Block:")))
    " v4 a0 [$ r$ }
  431.   (setq e1(ssget pt))
    ) z0 g: x6 M8 y
  432.   (setq e2 (entget (ssname e1 0)))% t8 S' v/ ]3 T% D' Y" b; ~; Y. ?* ^
  433.   (setq blname (cdr(assoc 2 e2)))
    * L) s+ k( \# u, R% S  H+ S+ H
  434.   (setq oer *error* *error* err2)(command ".insert" blname))0 T5 i. q* x9 H5 E) j, O3 W3 p' A) ~
  435. 3 n( G/ _; p* k. L, l
  436. (defun c:II ()
    : `' N7 b3 ^( p% l* u$ g8 W- t
  437.     (setvar "cmdecho" 0)/ K  b6 m" W  u# H3 {* S1 u" A
  438.     (setq olderr *error* *error* myerror)) l; T3 ~8 r) K; B0 L3 @6 Q
  439.     (prompt "\nSelect objects: ")
    9 x9 x+ r4 g& b" O/ r- f5 j7 m6 [
  440.     (command "select" "au" pause)- U8 ~& k; U: i
  441.     (setq sstxt (ssget "p")* \3 ^8 M& j) p! A9 M7 u
  442.           sslen (sslength sstxt)
    5 v6 N8 k! @3 u
  443.           ctr 01 z" ?% X. R/ J3 W1 w
  444.     )1 L$ x0 ^3 x0 s8 S' B3 x" |
  445.     (command ".undo" "mark")
    # {" \" b8 [" M
  446.     (while (< ctr sslen)) z2 B, Z( A4 v2 v5 @
  447.            (setq listxt (entget (ssname sstxt ctr))% I0 W+ ~" \4 g. g6 c  o( V. Q: ]# n
  448.                  txttxt (cdr (assoc 1 listxt))' ~, ?1 u  c) t1 g9 d
  449.                  enttxt (cdr (assoc 0 listxt))
    * p0 T& L0 M/ N6 L
  450.            )6 m) n: g% f6 B' K! E
  451.            (if (= enttxt "TEXT")
    % `- H0 x' d' G, S
  452.                (progn
    $ l+ H. q1 i. a
  453.                    (setq testxt (substr txttxt 1 3))
    7 @7 @, G- `6 _1 M3 k6 j
  454.                    (if (or (= testxt "%%C") (= testxt "%%C"))
    9 l3 W2 \" d4 L$ |$ g
  455.                        (setq newtxt (substr txttxt 4)), f8 G  O  j8 J' @
  456.                        (setq newtxt (strcat "%%C" txttxt))1 m# {& G- J# o) S0 F
  457.                    )$ m. r' H0 o0 G+ X& n6 F1 j
  458.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    : o2 [& b0 `# O1 N% o9 G. p
  459.                    (entmod listxt); i- ^+ b( i, G( [
  460.                 ), E- @5 K+ R! a) C* I& }
  461.             )
    ' K- `* q3 u* A, ?7 n7 p4 R  {, i
  462.             (setq ctr (1+ ctr))) z3 l. F& o' b- l5 x3 J
  463.     ), K- }4 N' q+ M- {9 @/ ~  Q5 U
  464.     (setq *error* olderr)$ D& \! P, j4 D; C5 K
  465.     (setvar "cmdecho" 1)+ a7 x6 |) X$ S& }
  466.     (princ)0 _9 r) \/ k$ e
  467. ); j, Q! m$ T( I' t3 |

  468. ) J: `% B; \) a
  469. (defun c:DG ()
    7 r: J, ^6 a* Q) [
  470.     (setvar "cmdecho" 0)
    " q6 B; i+ b% u: R
  471.     (setq olderr *error* *error* myerror)
    6 Q$ l2 Y) g1 L% a' a* r
  472.     (prompt "\nSelect objects: ")6 j/ P, _0 U9 R
  473.     (command "select" "au" pause)  b/ F, R) F- J6 I' m7 M1 f7 s9 g
  474.     (setq sstxt (ssget "p"): ^* \2 v5 T7 \" I
  475.           sslen (sslength sstxt)
    , l. I3 P7 h" w" J' d
  476.           ctr 0
    ( }) a0 Q0 u$ b+ ^! Q' i. x
  477.     )( S3 x" n1 n8 b
  478.     (command ".undo" "mark")7 G! J' `5 Q/ b% D4 U' e6 u' `
  479.     (while (< ctr sslen): b9 e4 Q8 }& ?  h& f4 ^7 ]2 y
  480.            (setq listxt (entget (ssname sstxt ctr))
    ( D" P: Q' S3 I" B1 y
  481.                  txttxt (cdr (assoc 1 listxt))# e' p% R+ i9 x: W
  482.                  enttxt (cdr (assoc 0 listxt))
    8 I! ~0 ~) w8 `0 A8 R6 ?
  483.            )) f9 Y& }( H9 N2 R5 a) N3 n. ^  o
  484.            (if (= enttxt "TEXT")
      c' S% I# h, f. q' z: @
  485.                (progn
    # u) k4 J4 \5 I2 V
  486.                    (setq testxt (substr txttxt 1 3))
    " v, ^* w! B- r5 e3 q
  487.                    (if (or (= testxt "%%d") (= testxt "%%d"))! k( F% @% l3 R- Q1 b8 b
  488.                        (setq newtxt (substr txttxt 4))2 Z; F9 e9 q& G. ^
  489.                        (setq newtxt (strcat txttxt "%%dC" ))
    & `. ~! T8 x$ _/ D4 i" m7 k0 ]
  490.                    )
    / s! f0 c. h$ }& p
  491.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    6 V; S) E6 ]: g
  492.                    (entmod listxt)
    " V0 L) l+ N: @+ c, n
  493.                 )
    " j. e! Y/ N2 Q& }1 b
  494.             )+ X( O, l7 u- X+ R* B
  495.             (setq ctr (1+ ctr))
    . v4 m, A+ ?' o0 ?. j* w
  496.     )
    3 x7 A  j  W) q/ o: [, D
  497.     (setq *error* olderr)  a5 r0 |" G$ S+ G! R& G1 y& ~3 [
  498.     (setvar "cmdecho" 1)
    7 g& m  n( P  o
  499.     (princ)% w) G% J' r# S" m9 z
  500. )
    1 c9 s6 C& k; {! i8 B% X! U
  501. ; a! b" c2 f% c
  502. (defun c:PI ()
    " x. X* N  F; D, @9 V( k
  503.     (setvar "cmdecho" 0)
    + [4 R; C* ~4 [& E6 Y
  504.     (setq olderr *error* *error* myerror)! x0 W- c( o: W$ r
  505.     (prompt "\nSelect objects: ")* }0 Q2 G5 f" `$ `9 [2 S  f
  506.     (command "select" "au" pause)
    . W8 {1 S+ f; T' n$ L5 x; x' \0 X6 K
  507.     (setq sstxt (ssget "p")( r* M" M/ w6 }5 C
  508.           sslen (sslength sstxt)
    7 b( g0 D$ Y% b7 {; r4 U  k
  509.           ctr 0
    8 Y3 `" R% e3 V. C; a2 h
  510.     ). @  S, P; B5 D
  511.     (command ".undo" "mark")
    : C, H" ~" t9 f" E5 j
  512.     (while (< ctr sslen)
      J4 ~$ S0 }+ `; a' {
  513.            (setq listxt (entget (ssname sstxt ctr))& ?( e7 }; }) j. m
  514.                  txttxt (cdr (assoc 1 listxt))
    " C0 l' b/ O; E& D$ E3 U# c& D
  515.                  enttxt (cdr (assoc 0 listxt))
    - Y$ b% A. K9 J
  516.            )
    ; O5 E4 h9 E" [3 k4 Y3 r* I
  517.            (if (= enttxt "TEXT")
    : f& r9 J; \$ |% Q
  518.                (progn
    ' D3 e# B) E8 M. I: e
  519.                    (setq testxt (substr txttxt 1 3))
    . o3 F- a; B7 F; x) E. u6 U& r
  520.                    (if (or (= testxt "%%p") (= testxt "%%p"))* R; e& ~. [% [! ^" ?# `# m
  521.                        (setq newtxt (substr txttxt 4))
    , w( {5 n9 J4 L5 F& i  Y
  522.                        (setq newtxt (strcat "%%p" txttxt))
    & W4 G' u* {) R/ W3 O) Z
  523.                    )* X8 Z! Y* z3 g- _, C) z8 q
  524.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))" J! \* D# S# V
  525.                    (entmod listxt)3 Q3 F4 O- s  H1 l
  526.                 )( [, i) |# S/ J
  527.             )
    ' C. [, n& S5 Q: L0 D* h1 c. x
  528.             (setq ctr (1+ ctr))
    6 j/ O0 c9 ]7 }6 v1 P; X
  529.     )
    $ l* S4 o4 _) J# C0 \) v% e/ g4 J/ _
  530.     (setq *error* olderr)& z; a; \' O+ E
  531.     (setvar "cmdecho" 1); ?- B. {( q9 y% R$ r8 q
  532.     (princ)
    " h; Z: s5 m1 h/ W. f  N: }3 e
  533. )
    ; z3 P% w! T7 c6 Z0 X' g# X

  534. 3 w1 d, @( z8 x& d4 r2 r" j
  535. (Defun c:CB (/ a)
    + G$ |4 S, _) [) |$ K. Y2 e
  536.    (setq olderr *error* *error* myerror)% _5 `- Q. ?( F; V8 x4 W# T$ V9 x
  537.    (setq ocmd (getvar "cmdecho"))
    . g; g7 |% Y# j8 Q: N
  538.    (setq oblp (getvar "blipmode"))4 Y9 Y( I0 P0 f' G2 W2 u
  539.    (setvar "cmdecho" 0)
    8 ~4 d, {" ^$ j" X; ~
  540.    (setq a (ssget))! D. L5 V1 X& g+ v
  541.    (command "CHPROP" a "" "C" "bylayer" "")7 Z; Z9 U% [- m" m3 |  o
  542.    (setvar "cmdecho" ocmd)
    # Y% O4 K" a3 q- g& u* _: m
  543.    (setvar "blipmode" oblp)
    6 m0 D  o) {2 B, a
  544.    (setq *error* olderr)
    , I. k6 E. G9 p4 ?6 K, K: e2 [- r
  545.    (princ), x( `5 B* ^1 p7 l7 |# r$ y
  546. )8 T; I# B, X" g2 G1 T+ F5 G

  547. ) r4 r7 B2 H# }% I4 H' m
  548. (defun c:LCC (/ co43 obj23 la23)
    % |; Y, g' B# S" ^) u$ y7 o
  549.    (setvar "cmdecho" 0); _2 ^, U: F% x$ P$ z' x# H$ H& j4 v; c! f
  550.    (setq co43 (getstring "\nNew color : "))
    3 j* H2 U& Z5 v) B+ Y9 h/ X1 f1 O
  551.    (setq obj23 (car (entsel "\nPick object on desired layer: ")))- a; K# Y% e: S( |( a
  552.    (if obj23 (progn7 Y3 s/ Z3 C+ t; q' X% W
  553.              (setq obj23 (entget obj23))
    , A  {% v& S, ^/ i
  554.              (setq la23 (cdr (assoc 8 obj23)))& Q7 z& H" N' V. K; l2 a/ w
  555.              (command "layer" "c" co43 la23 "")/ ~# W: M7 y/ G: S4 N4 Z" e; D3 F
  556.           )8 f+ X. g8 E4 c  L
  557.     )
    ' N$ p% r, N/ ^
  558.    (prompt (strcat  "\nLayer has changed..." la23))
    - X6 K+ B, r: W6 x! ^
  559.    (setvar "cmdecho" 1)5 S3 z7 L, b  @+ S4 I5 M
  560.    (princ)
    2 A; Y% N# ^& V5 l" X8 V3 ]
  561. )  4 e. S* P2 L0 r, Z2 W

  562. 0 `9 U+ h" k8 t& w9 K. c
  563. (Defun c:RP (/ a)% p/ H. |2 E3 W* j
  564.    (setq olderr *error* *error* myerror)- U: U1 Y4 Z& z5 L  k
  565.    (setq ocmd (getvar "cmdecho"))
    & [4 K9 Q/ H# k! A- Q8 [. x
  566.    (setq oblp (getvar "blipmode"))
    " |2 n! f+ j0 x4 K$ X
  567.    (setvar "cmdecho" 0)
    % `) G6 ]" U1 J$ Y( H+ j0 X
  568.    (prompt (strcat "\nUSE: Delete object(s) belonging to"
    , c" {% ?8 @' n, O* ~9 m- t1 Z
  569.                    " the layer of the entity picked...!"))4 y7 n; y7 A5 _9 X% r
  570.    (setq a (entsel "\nPick the entity with the desired layer to delete: "))0 w6 _0 ?' b  j+ m
  571.    (if (/= a nil)" u# H& B3 y: Z- \# Y+ ~6 `! F% j# z
  572.       (progn (setq a (cdr (assoc 8 (entget (car a )))))6 h4 J$ Z5 Z% \5 X
  573.       (command "Erase" (ssget "x" (cons (cons 8 (eval a)) tempword)) ""))- A2 [7 G. {8 ]- R# p
  574.       (prompt "\nNo entity selected!"))0 M0 T5 i" A) @- W' X
  575.    (setvar "cmdecho" ocmd)
    ; H- O" A/ F7 e4 z" u1 d
  576.    (setvar "blipmode" oblp); I) B  ^0 v  ?3 ~' v$ [
  577.    (setq *error* olderr)
    % f2 e! T. @! e! D) Y9 x1 E- ]# I
  578.    (princ)
    / h# t/ }+ E. O# E- C
  579. )
    9 j+ d" U+ F( P' ^+ Z2 B

  580. ; [( u+ D0 v& [7 k0 z( l
  581. (DEFUN C:WL(/ SSET NET SSL M)
      W& Y' E9 D9 ?$ j
  582.    (PRINC "\nSelect lines :")7 i9 Y3 @# `! n& X
  583.    (SETQ SSET (SSGET))# |' L: ?' h( ?$ h
  584.    (IF (/= NIL SSET) (PROGN. P- f2 C1 E9 R+ G
  585.    (SETQ SSL (SSLENGTH SSET))  B/ r& D7 i- i4 |: [
  586.    (INITGET 4)( B% `- k0 f" {+ \5 V. J5 [
  587.    (SETQ NET (GETREAL "New width : "))+ j1 q0 S) {7 o: n% O, O
  588.    (IF (/= NIL NET)
    4 v. M+ m- R9 _
  589.     (WHILE (> SSL 0), U- e9 {0 c( @; N% G. I' a7 O" w* B
  590.       (SETQ M (SSNAME SSET (SETQ SSL (- SSL 1)) )); K% t  B5 W: y  s
  591.       (IF (= (CDR (ASSOC '0 (ENTGET M))) "LINE")
    - K2 j: r1 _) Q' C( |3 ]
  592.           (COMMAND "PEDIT" M "Y" "W" NET "") 3 \$ c* V' n) n$ k! e. f
  593.       ) - y6 `' r1 v8 O. _3 o4 L/ D
  594.     )
    / G0 T" V. g* K5 u* n
  595.    )))
    ' h; Q7 d5 h: D" L: }( G( Y
  596.    (PRINC)
    $ K$ h/ n$ f; p# {
  597. )
    % j# d- X2 d/ `" F: P
  598. " D: q0 c- e& z5 |2 p: i
  599. (defun C:MML ()5 R% }3 O  W! l) }
  600.   (princ "\nSelect objects to move to another Layer.")% i( U, U) E# z+ h- u
  601.   (setq ss (ssget))+ E3 w1 ^3 L8 R: C2 l/ V& v+ |
  602.   (SETQ UL1(GETSTRING "\nLayer to move entities to : "))# j9 @; E$ y5 T- g2 P
  603.   (setq counter 0)3 p* o/ Z" }" K
  604.   (prompt "Moving to layer.....")(princ ul1), P) N. C; P6 p' T
  605.   (setq e (ssname ss counter))/ M) D; B' R3 x  L. G
  606.   (setq l (cdr (assoc 8 (entget e))))
    ' Y0 v2 x/ L, R0 b0 z# j
  607.   (setq S (ssget "X" (list (cons 8 l))))
    8 g1 U% _+ D6 \, e
  608.   (command "CHANGE" ss "" "P" "LA" UL1 "")
    : [9 s4 f/ G/ E7 P
  609.   (setq counter (+ counter 1))) T% z$ j, Y* p! ~# S
  610. (princ)
    5 Y; e4 Q, t4 ?! w7 x7 l. L
  611. ) . r# m1 z3 D" K6 T% E" ]0 y; [

  612. - a& L0 f& S* _: k# _8 w- Y7 Q( @
  613. ;;; ================================ GHI CHU ============================
    : A5 u1 v8 D) E8 P
  614. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    8 n" I# m/ i( ?$ X' v& h
  615. ;;; =======================Thuong Dung Font Romant.vnh===================; j! J8 I4 b" {2 O" a
  616. . j* H  }) m0 S! h! h9 k" ^+ X
  617. (defun c:RS (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)
    1 v1 W% [/ d" G/ y" C% u2 v
  618.   (setq oer *error* *error* err2)! n# A  l4 X$ R  N
  619.   (PROMPT "\n(UNICODE-Verdana)(D)ining room. (S)torage. c(L)oset. (C)onference. (O)ffice. (K)itchen. (B)ath. (M)aster Bedroom. ")
    / v6 Y& o! S3 w" t, ~
  620.   (SETQ Cpt(GETSTRING "\n (ROMANT-vnh)(DD).(SS).(LL).(CC).(OW).(KK).(BB).(MM). (UNKNOWN-font)(oD).(oS).(oL).(oC).(oww).(oK).(oB).(oM).")): {, S$ r& H- D" a. k8 b6 Q7 \
  621.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT ' "Nha`  Bê´p"))
    ) u6 D( v5 \  W
  622.   (IF(OR(= cpt "B")(= cpt "b"))(SETQ CPT ' "Pho`ng Vê? Sinh"))
    & t' Q, \2 b: h9 L
  623.   (IF(OR(= cpt "C")(= cpt "c"))(SETQ CPT ' "Pho`ng  Ho?p"))8 s3 ^) p' z, g
  624.   (IF(OR(= cpt "O")(= cpt "o"))(SETQ CPT ' "Pho`ng La`m Viê?c"))
    # m$ T: E' k+ S  ]  }5 O) m
  625.   (IF(OR(= cpt "M")(= cpt "m"))(SETQ CPT ' "Pho`ng Ngu?"))
    . T' K5 u9 A0 j1 M
  626.   (IF(OR(= cpt "D")(= cpt "d"))(SETQ CPT ' "Pho`ng Bê´p + An"))
    : I; s2 v1 I9 N. T9 d
  627.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT ' "Nha`  Kho"))8 m9 [3 b% r" T' x
  628.   (IF(OR(= cpt "L")(= cpt "l"))(SETQ CPT ' "Pho`ng Ðê? Ðô`"))
    ! b3 w9 ~! D1 j- V+ |& t

  629. 3 N1 d  c* H8 z+ |) B% I! T
  630.   (IF(OR(= Cpt "KK")(= cpt "kk"))(SETQ CPT ' "Nhµ BÕp"))# q! ]  n+ v8 ]- D& _
  631.   (IF(OR(= cpt "BB")(= cpt "bb"))(SETQ CPT ' "Phßng VÖ Sinh"))/ M3 v) R2 z5 w- s& ~0 H4 g, d9 V
  632.   (IF(OR(= cpt "CC")(= cpt "cc"))(SETQ CPT ' "Phßng Häp"))1 {* @/ o/ E2 U3 z* p4 A7 u+ c2 x9 K
  633.   (IF(OR(= cpt "OW")(= cpt "ow"))(SETQ CPT ' "Phßng Lµm ViÖc"))
    # }( c+ q2 ?* g4 Q
  634.   (IF(OR(= cpt "MM")(= cpt "mm"))(SETQ CPT ' "Phßng Ngñ"))( J' G0 O1 p  A. @% B5 T0 }
  635.   (IF(OR(= cpt "DD")(= cpt "dd"))(SETQ CPT ' "Phßng BÕp-¡n"))
    ! u! `& p6 [/ q# u7 E, R
  636.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "Nhµ Kho"))2 h/ f  J5 [/ Q9 ~- F4 |
  637.   (IF(OR(= cpt "LL")(= cpt "ll"))(SETQ CPT ' "Phßng §Ó §å"))" C& ~# b8 ~/ i" U! m- ?0 w

  638. ! q/ G. R4 b0 S1 f
  639.   (IF(OR(= Cpt "oK")(= cpt "ok"))(SETQ CPT '"NHA/F BE/M/SP"))
    $ k: f, M3 |( Y3 _2 h
  640.   (IF(OR(= cpt "oB")(= cpt "ob"))(SETQ CPT '"PHO/F/NG TA/W/SM"))/ ^' X% @# d" L7 X' b5 h3 p) n
  641.   (IF(OR(= cpt "oC")(= cpt "oc"))(SETQ CPT '"PHO/FNG HO/JP"))0 ]0 `3 r$ n8 w# a; w8 P
  642.   (IF(OR(= cpt "oww")(= cpt "oww"))(SETQ CPT '"P.LA/FM VI/E/M/JC"))+ s; q" A: ^2 Z/ @' j
  643.   (IF(OR(= cpt "oM")(= cpt "om"))(SETQ CPT '"PHO/FNG NGU/R"))9 o% E% V1 o2 X+ B7 U; _; [
  644.   (IF(OR(= cpt "oD")(= cpt "od"))(SETQ CPT '"PHO/FNG A/WN"))
    - f0 ?9 l& C+ P
  645.   (IF(OR(= cpt "oS")(= cpt "os"))(SETQ CPT '"NHA/F KHO"))) l* r  K& L) N0 U
  646.   (IF(OR(= cpt "oL")(= cpt "ol"))(SETQ CPT '"PHO/FNG /DO/M/F"))$ P3 R! g! ^5 h5 ?" z
  647. (setq pta (getpoint  k- b( [% a- g8 p) t" S
  648.     "\nPick first corner. : "))8 F) M  [/ y6 L) n
  649.   (setq ptb (getcorner pta
    0 c9 Y6 u; b8 b* |4 z* t5 \
  650.     "\nPick second corner. : "))
    & U  ?7 Y& X0 Z6 l" T  S
  651.   (setq ptc (list (car ptb)(cadr pta)))! q' c# @9 Y$ _, M
  652.   (setq ptd (list (car pta)(cadr ptb)))) ?: o# [8 d" W! @* f
  653.   (setq ang (angle pta ptb))
    % V+ b$ ]* v  L4 x/ @7 t; d- z
  654.   (setq d1 (/(distance pta ptb) 2))
    * X0 K# D: `, o, `
  655.   (setq cp (polar pta (- ang (dtr 0)) d1))
    ; _+ H2 O( `# l. C) `/ U* Y. ~6 ?
  656.   (setq X (distance pta ptc))
    8 m& d1 A5 h8 c4 g, i
  657.   (setq Y (distance pta ptd))& u6 ^, W, z7 |
  658.   (setq X1 (rtos x 2 1))
    4 t- J* R; B2 O( b! C+ F
  659.   (setq Y1 (rtos y 2 1)), Y) {+ x/ l- G" \
  660.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))
    5 X7 T; M& N: t: l  y# L: q
  661.   (command "TEXT" "c" cp "0" CPT "ROMANT-TEXT" "" rmsz))
    & l' h5 D. \/ }$ N. v" M( x6 c
  662.   (defun dtr (angg)5 Y; _5 {1 L/ Z7 F. J; j$ C3 e
  663.   (* pi (/ angg 180.0)))3 `+ H9 I' g+ F8 {+ u
  664.   t' v! v6 b5 q1 h( x
  665. (defun c:WS (/ pta ptb rmsz pl1)! `5 R4 q+ F% T6 @
  666.   (setq oer *error* *error* err2): s) y% }: n0 J* C
  667.   (PROMPT "\n (RomanT.TXT)floorp(L)an.(E)levation.(S)ection.(M)planFoundation.(C)Found.(K).(P).")9 V& K! k. q# L9 s" C+ F) M
  668.   (SETQ Cpt(GETSTRING "\n (VnHELVH.Vnh)(LL)floorplan.(EE)elevation.(SS)section.(BM)planFoundation.(CM)foundation.(KC)Structure.(PP)perspective."))
    ) Z1 o' O8 l& N7 `& P  x

  669. 7 `+ K* s. S9 n8 x/ \
  670.   (IF(OR(= Cpt "LL")(= cpt "ll"))(SETQ CPT ' "MÆt B»ng TÇng 1 : TØ LÖ - 1:100"))2 ~  \# F" J6 b2 m! d* c# H: w. K
  671.   (IF(OR(= cpt "EE")(= cpt "ee"))(SETQ CPT ' "MÆt §øng Trôc ?-? : TØ LÖ - 1:100"))$ D2 L" i6 k3 k! J, }$ H
  672.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "MÆt C¾t A-A : TØ LÖ - 1:100"))
    9 w* i$ e% U* Y7 ?) X
  673.   (IF(OR(= cpt "BM")(= cpt "bm"))(SETQ CPT ' "MÆt B»ng Mãng : TØ LÖ - 1 : 100"))7 E, @) a6 o+ f
  674.   (IF(OR(= cpt "CM")(= cpt "cm"))(SETQ CPT ' "MÆt C¾t Mãng : TØ LÖ - 1 : 100"))* o; X; J! |, c+ _. I
  675.   (IF(OR(= cpt "KC")(= cpt "kc"))(SETQ CPT ' "KÕt CÊu Khung Däc Nhµ : TØ LÖ - 1 : 100"))! ]* Y/ M( w4 A9 t
  676.   (IF(OR(= cpt "PP")(= cpt "pp"))(SETQ CPT ' "Phèi C¶nh Mét Gãc Nh×n"))+ {0 b' F: G) H) F; Z1 i: C
  677. % K: i  m; m6 w. R9 U6 G4 C
  678.   (IF(OR(= Cpt "L")(= cpt "l"))(SETQ CPT '"MA/W/JT BA/W/FNG TA/M/FNG 1 : TI/R LE/M/J - 1:100"))
    : g  h" l6 ^* J& n
  679.   (IF(OR(= cpt "E")(= cpt "e"))(SETQ CPT '"MA/W/JT /D/}/SNG TRU/JC ?-? : TI/R LE/M/J - 1:100"))
    ; U5 ?# ^$ q! I1 I9 q2 G
  680.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT '"MA/W/JT CA/W/ST A-A TI/R : LE/M/J - 1:100"))
    2 l. h: W2 A# Y0 ?  j7 b
  681.   (IF(OR(= Cpt "M")(= cpt "m"))(SETQ CPT '"MA/W/JT BA/W/FNG MO/SNG : TI/R LE/M/J - 1:100"))
    " F* R3 n! L2 f6 C5 ~: _
  682.   (IF(OR(= Cpt "C")(= cpt "c"))(SETQ CPT '"MA/W/JT CA/W/ST MO/SNG : TI/R LE/M/J - 1:100"))2 c+ d: I  y$ E( |# a
  683.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT '"KE/M/S/T CA/M/SU KHUNG DO/JC NHA/F : TI/R LE/M/J - 1:100"))
    ) |: T3 p& T  R# {  `- J
  684.   (IF(OR(= cpt "P")(= cpt "p"))(SETQ CPT '"PHO/M/SI CA/R/NH MO/M/JT GO/SC NHI/FN"))
    1 ]. A( H7 r- w; W+ `& B
  685. (setq pta (getpoint, j$ Q& J0 k/ k0 R9 r7 F4 v/ u
  686.     "\nPick first corner. : "))1 k& Q4 `! W* g: ~
  687.   (setq ptb (getcorner pta
    , h4 d3 m+ h+ p3 l. [
  688.     "\nPick second corner. : "))
    1 B& }# V, k8 g# }' j% h9 U
  689.   (setq ptc (list (car ptb)(cadr pta)))$ d' v# i; Q% z% N
  690.   (setq ptd (list (car pta)(cadr ptb))); @. @4 W- O! i& X) `9 k
  691.   (setq ang (angle pta ptb))2 b# L# p5 }: r' Y7 H: u
  692.   (setq d1 (/(distance pta ptb) 2))2 o) o* R  \2 v$ F9 I$ r4 k
  693.   (setq cp (polar pta (- ang (dtr 0)) d1))
    * l) H3 T' K( R1 p2 A6 m( |0 `
  694.   (command "TEXT" "c" cp "0" CPT "ROMANT-TEXT" "" rmsz))/ Z- [6 S" P+ v" r% S" e
  695.   (defun dtr (angg), i9 t: v5 \, H5 H
  696.   (* pi (/ angg 180.0))). w+ R( R! ^( W1 ?! E% b

  697. ( {$ m' i5 D; w1 D/ L& z. }8 h; L: G
  698. ;;; ================================ GHI CHU ============================
    3 l# w7 f7 j1 c, k: z8 }
  699. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    * G) r; ]6 F/ g' b
  700. ;;; =======================Thuong Dung Font Romant.vnh===================
    ! e) k$ M; H( L* m
  701. 3 ]# g0 I' V. Z8 X1 Y9 S
  702. (defun c:RRS (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)% U+ P  r4 d" e7 {+ `& C
  703.   (setq oer *error* *error* err2)
    - a( ]- I" K; W" p
  704.   (PROMPT "\n(D)ining room. (S)torage. c(L)oset. (C)onference. (O)ffice. (K)itchen. (B)ath. ")2 S' q4 [0 C! ^; m
  705.   (SETQ Cpt(GETSTRING "\n(M)aster Bedroom. (DD). (SS). (LL). (CC). (OO). (KK). (BB). (MM). "))+ K: a0 k! p- W1 @6 q
  706.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT ' "Nhà B?p"))# i+ w* e* H3 V
  707.   (IF(OR(= cpt "B")(= cpt "b"))(SETQ CPT ' "Phòng T?m"))" X9 H  i2 Y  y% y4 k/ e' b0 {9 Z" H& `3 v
  708.   (IF(OR(= cpt "C")(= cpt "c"))(SETQ CPT ' "Nhà H?p"))
    ' L* r1 G  t! A# x/ Z2 m
  709.   (IF(OR(= cpt "O")(= cpt "o"))(SETQ CPT ' "Phòng Làm Vi?c"))) V. ^% D3 c! a( R1 Z6 g
  710.   (IF(OR(= cpt "M")(= cpt "m"))(SETQ CPT ' "Phòng Ng?"))
    # f! }$ g5 |/ Y2 a
  711.   (IF(OR(= cpt "D")(= cpt "d"))(SETQ CPT ' "Phòng B?p-An")); ?7 a' v6 V4 F1 P( y" M
  712.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT ' "Nhà Kho"))0 o. y0 k. o7 E, N! ]( X/ p' {
  713.   (IF(OR(= cpt "L")(= cpt "l"))(SETQ CPT ' "Phòng d? Ð?"))
    ! T9 q+ T4 h7 n3 [; f
  714.   (IF(OR(= Cpt "KK")(= cpt "kk"))(SETQ CPT ' "Nhµ BÕp"))( Q. y* D6 w, H$ P# l0 ^
  715.   (IF(OR(= cpt "BB")(= cpt "bb"))(SETQ CPT ' "Phßng VÖ Sinh"))+ ?9 |! e' Q) b
  716.   (IF(OR(= cpt "CC")(= cpt "cc"))(SETQ CPT ' "Phßng Häp"))6 K1 z& U3 d2 t% g4 S8 p% s
  717.   (IF(OR(= cpt "OO")(= cpt "oo"))(SETQ CPT ' "Phßng Lµm ViÖc"))
    & _+ ]# P9 p6 {, A, t! y  I2 Y1 ~
  718.   (IF(OR(= cpt "MM")(= cpt "mm"))(SETQ CPT ' "Phßng Ngñ"))
    ) N* k% x# l6 X: m* @
  719.   (IF(OR(= cpt "DD")(= cpt "dd"))(SETQ CPT ' "Phßng BÕp-¡n"))0 Y% W* \9 m/ I$ v; F" i% X
  720.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "Nhµ Kho"))
    " S- g2 O# d( Q: T
  721.   (IF(OR(= cpt "LL")(= cpt "ll"))(SETQ CPT ' "Phßng §Ó §å"))
    & D) i: ?: l! N- m0 o
  722. (setq pta (getpoint
    4 ^7 y: C6 Z; F  q
  723.     "\nPick first corner. : "))
    ) V+ Q/ O6 w4 E3 H$ P) a( Z
  724.   (setq ptb (getcorner pta8 o  h4 O% \6 _; U4 L
  725.     "\nPick second corner. : "))0 J0 H) m. _, T
  726.   (setq ptc (list (car ptb)(cadr pta)))
    9 w3 u+ E% G5 p  y9 v! _) F# x
  727.   (setq ptd (list (car pta)(cadr ptb)))
      n6 P4 F' t. r$ v5 P! g+ \/ l0 a" J
  728.   (setq ang (angle pta ptb))( \. W* R! ]9 F: t6 O4 T
  729.   (setq d1 (/(distance pta ptb) 2))
    3 W  f0 L( \) o7 x; z6 W
  730.   (setq cp (polar pta (- ang (dtr 0)) d1))
    " E( O; [" n; q& }
  731.   (setq X (distance pta ptc)), E) b1 r# N3 a5 q/ ^
  732.   (setq Y (distance pta ptd))
    # G7 o( P) L; a0 c5 v1 A: Z* R
  733.   (setq X1 (rtos x 2 1))
    , m9 _5 d  ~; r1 r# e. z
  734.   (setq Y1 (rtos y 2 1))7 H/ t7 Q, j- I4 N
  735.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))
    + F7 q( V& Y5 C2 v
  736.   (command "TEXT" "c" cp "0" CPT "text" "" rmsz))
    ) j  ]9 ]: _" o" p
  737.   (defun dtr (angg)
    " k  [- t4 D, }$ ?. D
  738.   (* pi (/ angg 180.0)))7 T0 S# O( F% h' R3 d7 H# |, j0 b

  739. % N, b8 q: V/ O4 N  f) `) E& k0 a
  740. ;;; ================================ GHI CHU ============================$ t3 a8 Y# d% f9 y) |7 z7 g/ C' j# W
  741. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
      M( L6 m- M, Z" m. J/ B6 \
  742. ;;; =======================Thuong Dung Font Romant.vnh===================* {6 A4 y0 L- H% g- U

  743. ! e$ S2 t4 i% J  s
  744. (defun c:GS (/ a b c d)
    3 Z0 J$ u, j& f6 j( ^- n' X* Y
  745.   (graphscr)6 K" U9 S( o$ ~: T) ^" q
  746.   (prompt "\nSelect text to set style....")" G- i: m3 X0 r2 ~6 r- W6 C
  747.   (setq a (entsel))6 [0 m4 O. t1 S/ s
  748.   (setq b (entget (car a)))
    2 i) C# @8 [. R# B
  749.   (setq c (cdr (assoc 7 b)))
    / l2 C4 {2 F& f; @
  750.   (setq d (cdr (assoc 40 b)))
    ; u  q( V; Y( J0 n5 o; F
  751.   (command "style" c "" d "" "" "" ""))2 g8 f5 E) L! e
  752.   (princ "\nType GS to set text style.")8 T, y2 N( }1 z$ w* |& [9 y

  753. 4 F8 X3 M7 ^5 ]0 L
  754. (defun c:RC (/ olderr ocmd oblp pt1 pt2 pt3 pt4 l w). o+ j. X9 y: p% {3 Z6 H
  755.   (setq olderr *error* *error* myerror)& |. M7 s' |+ o9 r& {# e0 O- }
  756.   (setq ocmd (getvar "cmdecho"))
    ' ?5 B2 u5 A4 [$ X4 d( n( _
  757.   (setq oblp (getvar "blipmode"))/ A# d( W* s  S) N+ G! m
  758.   (setvar "cmdecho" 0)
    * G, d# Q) @9 T$ ]* E9 x; d
  759.   (initget 1)                         ;3D point can't be null6 X8 Y) m/ S/ h) o, H
  760.   (Setq pt1 (getpoint (strcat "\nCorner of rectangle or square: ")))$ v# r. L" \$ S  m3 h$ m# `
  761.   (setvar "ORTHOMODE" 1)8 ?9 _  X! B' l/ i4 }/ w2 Q5 k
  762.   (initget 7)                         ;Length can't be 0, neg, or null
    - F; O7 j1 F) f  u/ g% X
  763.   (Setq l (getdist pt1 "\nLength: "))+ a7 _6 L' N( p5 c! t2 L% L/ @
  764.   (Setq pt2 (list (+ (car pt1) l) (cadr pt1) (caddr pt1)))6 N! z; o2 a# m; p2 |" L
  765.   (grdraw pt1 pt2 2)
    # `5 a: C% [! r7 r* ?
  766.   (initget 7 "Square")                ;Width can't be 0, neg, or null+ {6 V& j/ T. |
  767.   (setq w (getdist pt1 "\nSquare/<Width>: "))! r6 a& f& o9 g, |1 U" ?
  768.   (if (= w "Square")
    : X( g9 F1 N; t" }7 I
  769.       (setq w l)
    2 p' x% E- R4 t* q1 a0 T$ e
  770.   )' e: V9 l& G# w! Y+ H4 R/ }) U
  771.   (setq pt3 (list (car pt2) (+ (cadr pt2) w) (caddr pt2)))
    : c$ s1 X* X8 s& k: y
  772.   (setq pt4 (list (car pt1) (+ (cadr pt1) w) (caddr pt1)))) b% I' x- i# S5 ^6 w6 T
  773.   (grdraw pt2 pt3 2): \$ y# y- e& P. t
  774.   (grdraw pt3 pt4 2)
    ' O6 Y0 S2 L: e5 C( e) M
  775.   (grdraw pt4 pt1 2)
    / u1 r( ]6 H( v! J
  776.   (setvar "ORTHOMODE" 0)
    3 I  j& B% H- X' L. D
  777.   (command "pline"  pt1 pt2 pt3 pt4 "close"); i- s3 C4 S+ ]3 }/ k: \
  778.   (setvar "cmdecho" ocmd)9 t# [! }" h9 B2 `  k
  779.   (setvar "blipmode" oblp)$ p* i8 H: l) b8 W5 S* T
  780.   (setq *error* olderr)               ; Restore old *error* handler
    5 R5 [+ b& d& J% s4 t
  781.   (princ)
    5 A. m6 s& x3 [
  782. )
    2 E' H% p- W& C4 @4 i8 n

  783. / x3 j# A; z" z, _1 U1 b" X
  784. (defun c:SG (/ ent pt1 pt2 ang)* k5 e9 y7 u4 _8 c
  785.   (setq cmd (getvar "cmdecho"))
      e7 Y* b( s3 T2 Q9 ~2 q2 Z/ G1 c
  786.   (setvar "cmdecho" 1)
    " ?+ Z4 a9 k" z7 x/ Y" A6 h
  787.   (prompt (strcat"\nSnap angle will be set to angle of line"))* l/ a4 G5 C" @$ m, o
  788.   (setq ent (entget (car (entsel))))# z# ~$ s1 j1 ~
  789.   (setq pt1 (cdr (assoc 10 ent)))
    & C5 _. x3 F! e3 D8 Y
  790.   (setq pt2 (cdr (assoc 11 ent)))
    * ~: ]: d+ r$ T3 p. N/ S
  791.   (setq ang (angle pt1 pt2))
    3 @/ b: ^. j2 H& c
  792.   (setq ang (/ (* ang 180.0) pi))
    . ~5 B, q( U  ?
  793.   (setvar "cmdecho" 0)
    + s0 n. B  A6 r; k# v  X7 J. x2 u
  794.     (command "setvar" "snapang" ang)' p9 `7 |9 @9 K8 W# C4 g3 Y
  795.     (setvar "cmdecho" cmd)
    4 u* @" x, d0 c9 W
  796. )
    7 q. _/ C- _$ y) a( W( T8 @3 t4 z
  797. ( F! t% _% h( A1 c! \
  798. (defun C:TG ()
    1 O4 j/ }! w' B! U% Z& n7 _
  799.   (initget "Increase New")
    . ], H1 I$ c2 Q( X) G& x; _& d
  800.   (setq ans (getkword "Increase/<New>: ")). f- V1 G' N, _- e. A
  801.   (modang)7 h" N/ {, t3 L) L- B% y+ |
  802. )! F% h' q, Q! j* s
  803. (defun modang (/ ang ss ca e na ssl)& ^! b3 X3 C  ]5 p! h
  804. (if (= ans "Increase")' A# j/ g3 W  |2 r* R
  805.      (princ "\nIncrease angle for text by: ")
    9 h2 u; k" z4 y3 `0 e1 H- q
  806.      (princ "\nNew angle for text: ")
    " \, L3 X8 s9 e9 T6 T+ \, @$ r
  807. )! O2 K; K! f, M3 h
  808. (setq ang (getreal))
    ' Y; p: E3 g2 g7 w
  809. (setq ang (* (/ ang 180) pi))
    + w7 w8 Q$ Z, K; r+ ]
  810. (setq ss (ssget))
    1 E% P! x5 Q( w- _" s
  811. (setq ca 0 ssl (sslength ss))- J& z3 s9 e" p
  812. (while (< ca ssl)& {1 i; o/ u& M* t. u: b
  813.   (if (= "TEXT" (cdr (assoc 0 (setq e (entget (ssname ss ca))))))
    : J- O6 e. A- g0 G! w* F- j; y0 N" \3 Y
  814.    (progn
    ( H3 D/ R8 g5 Q
  815.     (if (= ans "Increase")% `+ C- U2 C# W* ?% w
  816.         (setq na (cons 50 (+ (cdr (assoc 50 e)) ang)))8 Y2 r, x% [  y8 n2 e/ |6 t, {6 R
  817.         (setq na (cons 50 ang)); F) O( y0 n9 @% u. n* p+ Q
  818.     )
    ) C; ?1 k% [7 p! X% z# Z
  819.     (setq e (subst na (assoc 50 e) e))
    6 l& N" s+ {! Y- E3 n% T+ H% Z( M
  820.     (entmod e)
    ' ?8 l; @) X& A: Y" G8 [
  821.   (setq ca (1+ ca))2 a* U6 Q$ T* R
  822. )  J4 B' v$ c; P' H
  823. )
    * e3 x9 c6 e9 L2 C/ r8 j* x
  824. )( b* k4 G( j  [
  825. (terpri)8 n/ R% f% u* _/ M: }
  826. )
    5 E+ j7 f. q7 u* e& s4 @% l3 ^) X
  827. & I% d. o3 G. ~9 D. B* E( e+ i

  828. * b* a& ?  n, y( x& Q
  829. (defun c:WL ()+ T9 q: ?9 p- _7 F
  830.   (setvar "cmdecho" 0)5 U; O& y  b+ x+ g
  831.   (setq a 1)( v( E' s: K1 C, P- b# }6 [9 ^
  832.   (prompt "\nSelect Polylines to change: ")& q8 j/ d( w9 o9 ~0 K8 q
  833.   (while (/= a nil)7 v- b, ~8 Y$ s& n; L3 |3 ^
  834.     (progn9 I8 T# t; X! A- t& G$ I
  835.     (setq a (entsel)); s1 w! A( A' ]& A9 s+ R
  836.     (if (/= a nil)
    1 N# a, m* W& y- y# l1 z
  837.         (progn5 Q6 c* ~; T, U# D
  838.           (setq b (entget (car a)))
    - h; H+ ^7 m) J' w
  839.           (setq c (cdr (assoc 40 b)))% a- @$ l+ u5 L4 d/ ?2 A
  840.           (princ c)0 r2 u5 p. S. H  T$ O8 k3 f
  841.           (command "pedit"a"w""lw""")
    ( E+ Z0 g+ x$ X% a& t! Z
  842.         )))) . V) J0 e  v8 T$ k
  843.   (princ)
    " _1 Y8 `( [( X/ b5 s
  844. )
    1 L, \: P7 N# C! D* a6 C6 L6 j

  845. 0 g/ R, W8 ~0 K% B$ s$ M( K: _
  846. ;;; ================================ TEXT FIT ============================( a5 y2 I) ~& v6 p3 v( i  l

  847. 3 u' ]0 _+ X' n  B3 T
  848. (Defun c:FT ( )
    / |* W; ^9 U  ~- V, z$ J& q
  849.   (defun setsnapang (arg /) (setvar "snapang" (angtof (angtos (cdr (assoc 50 arg)) 0 8) 0 ))  )
    7 E6 Y  C5 X# s% _5 w2 @0 n
  850.   (Defun LL-xyz (arg) (CAR (TextBox arg))  )" _& g) c% e1 j/ s) P! ?5 m) L
  851.   (Defun UR-x (arg) (CAADR (TextBox arg))  )! U% V; [# G" _$ ?6 f; a
  852.   (Defun LL-y (arg)     (CADAR (TextBox arg))  )
    0 c+ S1 q" |! S' U/ a# \& K
  853.   (Defun LR-xy (arg)     (List (UR-x arg) (LL-y arg))  )
    % {8 H) h$ B& _& ]4 `! A  z
  854.    (Setq ename (CAR (EntSel "\nSelect Text to stretch/shrink:"   )  )- ~, ]/ G/ T% U8 T5 W* j
  855.       Textent (If ename (EntGet ename))   )   
    ! p- V, y. Q5 l6 }  m% w
  856.    (If (= (CDR (Assoc 0 textent)) "TEXT")
    . D; I7 H" _( V* h; \$ _
  857.       (Progn (initget 0 "Start")2 p* p) R; s3 I% H
  858.          (Setq  NewEnd  (Distance  (LR-xy Textent) (LL-xyz Textent) ) )
      W" [/ X$ S1 j! }6 l: ?2 s8 {
  859.          (setsnapang Textent)                 ;set snap along text entity$ I* p, K. z9 Q  U9 |( q! g  X! g
  860.          (setvar "ORTHOMODE" 1)                   ;drag along the text- G1 W' e8 Q; u7 r  q
  861.          (setq ; A! U/ p1 U6 D1 @+ W# b" z' X2 k8 Q
  862. TMP (getpoint (cdr (assoc 10 Textent)) "\nStarting Point/<Pick new ending point>: ") )
    8 v( x4 f3 c# v% m  r- D. I
  863.          (setvar "snapang" 0)
    4 e5 i$ G: p$ {+ D' ~3 B" P* \
  864.          (cond
    1 [, A+ b# ]% o9 V; i" n6 M( X3 b- L1 }: n
  865.            ((= (type TMP) 'STR) ;;new starting point to be selected9 B: a9 I$ Q1 [! l
  866.                (setq Start (getpoint "\nPick new starting point: "))
    9 y+ S1 n; T0 ^  f
  867.                (if Start  (progn2 Q1 B, e- G* Z
  868.                   (command "_UCS" "_E" (cdr (assoc -1 textent)))
    / T( W! {, H- B
  869.                   (setvar "ORTHOMODE" 1)
    6 t0 Y# K- h, q* v+ @% C! {% G" O
  870.                   (setq NewPt
    0 P( K8 `" j4 S0 C9 z6 q: ?
  871.                         (if Start/ c8 l+ i7 J0 Z( N
  872.           (getpoint (trans Start 0 1) " ending point: ") nil ) )5 x) S* T6 e3 D6 Y3 c1 d
  873.                   (if NewPt (setq NewPt (trans NewPt 1 0)))& |$ S* j: i# C& Q
  874.                   (setvar "ORTHOMODE" 0)) t% k" r: f7 ]7 U5 n
  875.                   (command "_UCS" "_W") ) ) )7 a7 G  K' w  s+ ~* D
  876.            ((not (null TMP))    ;;new ending point selected
    " M( \  Z9 e) @" t. p; J
  877.                (setq Start (cdr (assoc 10 Textent)) NewPt TMP)  )
    # r4 k7 L! @& @
  878.            (t  (setq Start nil NewPt nil) ) )6 b7 @9 P* V2 W  ~+ G0 H. k
  879.          (if (and Start NewPt) (progn) s# H% N6 p  g' C2 X  a
  880.            (setq Val (Assoc 41 Textent) ;;current width factor
    6 }5 ^6 n/ w+ ]- H
  881.                  Val (if Val (cdr Val) 1.0)  LTC_%      
    & x, y0 r+ }& b$ F* X: N8 R
  882.           (* (/ (Distance Start NewPt) NewEnd ) Val )6 c( z, @+ G3 z1 b% u. x
  883.                  textent (Subst (cons 41 LTC_%)
    " C6 F+ V7 {1 Q; S. A
  884.            (assoc 41 textent) textent)/ ?8 W, ^+ b: l- ]! ~; T# q/ Q
  885.   textent (subst (cons 10 Start) (assoc 10 textent) textent)& f* m% t+ \& S" H
  886.   textent (subst (cons 11 NewPt) (assoc 11 textent) textent) )$ O$ w2 D$ |& x% M8 ^% z
  887.    (EntMod textent) (EntUpd (cdr (assoc -1 textent))))))) (Princ))0 _& \+ ]6 s: a

  888. + |7 m$ c5 s1 I9 D/ d( T9 k
  889. ;=====================================================================* s7 p# _: h: _5 F" y2 X3 o5 y+ R
  890. ;=========================COPY + ROTATE ==============================
    1 g. D( e1 {3 i# n8 \
  891. ;=====================================================================
    2 R) h: v. }+ l) M3 @% \5 }0 v
  892. % h3 I8 I* `5 m& m1 A( s5 f4 L& Y
  893. (defun c:CR(/ olderr cm loop ss1 ss2 bp mult lent ss2 lp1 lp2)7 d- \$ O" N5 F8 w' Z4 K# Y0 r
  894.   (setq olderr *error*, L. t! n: P# ^( |
  895.         *error* croerr)
    0 ^1 v) Z  z! K  b" o2 S- x, r
  896.   (setq cm (getvar "cmdecho"))
    ! G; w& t+ N7 W) d! q" v# e
  897.   (setvar "cmdecho" 0): \) F" `7 O0 j/ z% a
  898.   (setq loop t)- }; h3 t5 ^0 X) ^
  899.   (while (not (setq ss1 (ssget))))
    0 C* L# k( A9 d$ Y; |1 Z
  900.   (initget 1 "Multiple")
    ! o1 r7 L& N$ r* V" ^& X
  901.   (setq bp (getpoint "\nBase point or displacement>/Multiple: "))
    / @* Q- k. l7 r" G
  902.   (if (= bp "Multiple")" X3 W( J, E" T1 g7 y: i$ F
  903.     (progn! e3 W9 T. K" c" G; M3 w1 O
  904.       (setq bp (getpoint "\nBase point: "))0 _$ w7 P+ i# R# N+ p9 b; U
  905.       (setq mult t)
    * v' C2 y' b7 b' Z4 i/ s4 n2 V1 F
  906.     )' s1 \- P' t5 Q- M
  907.   )
    , |& ^# I! i: R6 \! b
  908.   (while loop% c! N4 e# v8 I4 y0 l4 d
  909.     (setq loop mult)
    * h! T" m! y4 d' Y, m  V8 m
  910.     (setq lent (lastent)); r$ D' C1 q9 A1 y- I& ?% |
  911.     (command ".copy" ss1 "" bp bp)
    , N1 t, _/ j  a# l
  912.     (setq ss2 (lss lent))9 v4 w3 K% b3 D8 B; o4 I6 u* R
  913.     (setq lp1 (getvar "lastpoint")): _6 s! R8 `$ V. P0 t  P( V
  914.     (prompt "\nSecond point of displacement: ")( h5 e' f+ \  E& d
  915.     (command ".move" ss2 "" bp pause)3 s  _$ f. V/ s( r7 T' }
  916.     (setq lp2 (getvar "lastpoint"))1 T0 }& G( x- a9 X2 o& |
  917.     (redss ss1)
    " T1 z! k$ M0 A' J) O( E
  918.     (if (and (not mult)
    # K& t+ w; A4 K6 K
  919.              (= (distance lp1 lp2) 0)
    7 o, R; |1 S& C$ }" \' U. @, q  }
  920.         )( \9 F$ o: U1 v. N1 s
  921.       (setq lp2 (getpoint "\nRotation Point: "))
    & z" H2 g4 Q' Q+ i' I$ _
  922.     )- D" A2 Y) _; i2 l/ \4 e* O3 g+ B
  923.     (if mult) y' F, S) _, l1 m5 r3 `( U: n. v
  924.       (prompt "\nRotation angle ")
    % p6 G' r5 b$ t5 k  ?! T) k4 k
  925.       (prompt "\nReference/<Rotation angle>: ")
    4 j% Y2 h* Y+ i  }2 q7 A1 N) c
  926.     )
    4 g& ~* q9 i7 r, {& e/ o$ L
  927.     (command ".rotate" ss2 "" lp2 pause)
    ; k+ G1 t# b  p6 L% y- P" z
  928.   )$ }6 M5 o& O% a  T: E) e* B9 Y
  929.   (setvar "CMDECHO" cm)
    9 F1 Q" ]. Y4 {' v
  930.   (setq *error* olderr)
    " R: }$ h3 |4 n+ h" R, M
  931.   (princ): f: a+ x) Z& K8 n( X: S
  932. )6 ~1 i3 u& n) S, v* _8 V4 H8 ^& q
  933. (princ)
    $ I$ e+ L- a! `5 K
  934. (defun croerr (s)        $ t& l6 B/ d9 X6 B! ^3 k
  935.   (if (/= s "Function cancelled")
    ; Y3 u0 ^; d) K, i, H
  936.     (princ (strcat "\nError: " s))/ h' l# e# v1 L' W
  937.   ) " J2 r" ~. w: `  o0 [
  938.   (setq S nil)) G9 t  Q/ \" i- t
  939.   (setvar "CMDECHO" cm), e& b8 \% P# }% r9 `  H$ E
  940.   (setq *error* olderr)4 a1 @& I, e8 [* S- x' N
  941.   (princ)/ R$ b1 P+ V# U9 s2 B2 `
  942. )
    / k5 }2 U- ^- O' A# m/ V) N8 l. |
  943. (defun lastent (/ a b)/ V/ F; }8 w. v$ ~$ f0 ]" y
  944.   (if (setq a (entlast))
    ' T' t4 W9 D& \( D3 ]. H+ u/ D2 m
  945.     (while (setq b (entnext a))9 z1 H% x# R' k, e* e
  946.       (setq a b)+ J# b5 E2 d* F4 ^1 B; K
  947.     )# w5 ~! p2 e3 ~0 y1 @
  948.   )
    " B9 a+ a1 a! D) L/ K, ~
  949.   a* w, ]. a: n- s1 y' \
  950. )
    ! P) H0 z# J. R
  951. (defun redss (ss / en i)! y5 a7 x; a" x" ^. W
  952.   (setq i 0)! R' K  w  @# E' V7 J. m, ^+ d! U6 n
  953.   (while (setq en (ssname ss i))) F& F7 t9 X# v$ N) D
  954.     (redraw en 1)7 s% z8 [. Z7 r) D* i
  955.     (setq i (1+ i))
    ; k& A' m) y( `, l( Q6 u2 |
  956.   )) G* i1 U) D! w8 i
  957. )2 R+ E0 o% Q! ~$ L' m$ E
  958. (defun lss (en / sels ed)" K( I' S  ~3 d
  959.   (setq sels (ssadd))2 B) p- W9 Q3 N! N; a8 [
  960.   (while (/= en nil)9 A$ O  D5 N8 [, d
  961.     (if (setq en (entnext en)) (setq ed (entget en)))' q; X5 E3 Y- ]% N3 v
  962.     (if (/= en nil) (setq sels (ssadd en sels)))
    2 p* K0 V! g& F& a( C  `  \% u
  963.     (if (or (= (cdr (assoc 0 ed)) "Polyline")
    $ K9 t6 a2 y* \" [) Y: v
  964.             (= (cdr (assoc 0 ed)) "Insert"): v! q) E- U% |  s
  965.         )
    8 b+ z1 _- k2 Z* G: g  a3 D- P2 e
  966.       (while (/= (cdr (assoc 0 (entget (setq en (entnext en))))) "Seqend"))
    - \+ {/ _0 Y3 t  J5 P
  967.     )
    2 O/ E9 \9 C, r1 }  H
  968.   ). q6 l/ g5 m# j3 {+ A5 |
  969.   sels8 U) I, \  m# @1 s  Z. D5 g
  970. )
    + O% k# F# A. }, z& d
  971. 9 B+ i2 D) I( h0 P5 L0 j9 A
  972. ;;;; ================== CAC FUNCTIONS DUNG TRONG ACAD.LSP ==================% m* d' U" Y% r0 [6 g

  973. + F" X( U" }9 ~1 y1 C
  974. (defun c:00 ()(princ "\nChon doi tuong net Defpoints")(ssget)(command "change" "p" "" "p" "la" "Defpoints" ""))
      b1 Z* f$ j+ t# H- L/ A3 b, _
  975. (defun c:0 ()(princ "\nChon doi tuong net 0")(ssget)(command "change" "p" "" "p" "la" "0" ""))
    - t4 _+ x$ I; J$ _+ t
  976. (defun c:1 ()(princ "\nChon doi tuong net COT")(ssget)(command "change" "p" "" "p" "la" "COT" ""))
    6 h) p1 }0 x* y
  977. (defun c:11 ()(princ "\nChon doi tuong net DIM")(ssget)(command "change" "p" "" "p" "la" "DIM" ""))2 Y# p( k! H6 v; v; y% h
  978. (defun c:22 ()(princ "\nChon doi tuong net MANH")(ssget)(command "change" "p" "" "p" "la" "MANH" ""))
      Q; U/ K( u( V' }5 G* Y
  979. (defun c:33 ()(princ "\nChon doi tuong net NETMANH")(ssget)(command "change" "p" "" "p" "la" "NETMANH" "")). o  {4 Y3 T4 o7 j/ H- @2 n
  980. (defun c:2 ()(princ "\nChon doi tuong net NETDUT")(ssget)(command "change" "p" "" "p" "la" "NETDUT" ""))' U/ x3 G9 T" s+ e
  981. (defun c:3 ()(princ "\nChon doi tuong net NOITHAT")(ssget)(command "change" "p" "" "p" "la" "NOITHAT" ""))
    , d6 Q7 N0 f, m' G3 Z
  982. (defun c:4 ()(princ "\nChon doi tuong net TUONG")(ssget)(command "change" "p" "" "p" "la" "TUONG" ""))6 ]+ _" Z* e* A7 L( ^- K" z5 y0 \# m
  983. (defun c:44 ()(princ "\nChon doi tuong net KHUNGTEN")(ssget)(command "change" "p" "" "p" "la" "KHUNGTEN" ""))
    + Z3 e4 Y0 k* n7 |  m7 X
  984. (defun c:5 ()(princ "\nChon doi tuong net TIMTUONG")(ssget)(command "change" "p" "" "p" "la" "TIMTUONG" ""))
    : l: O( H! y6 K8 C# S) k
  985. (defun c:6 ()(princ "\nChon doi tuong net CUA")(ssget)(command "change" "p" "" "p" "la" "CUA" ""))6 M! P7 g# o$ q3 r
  986. (defun c:7 ()(princ "\nChon doi tuong net THAY")(ssget)(command "change" "p" "" "p" "la" "THAY" ""))1 C: n! @$ T' {7 ~  m
  987. (defun c:77 ()(princ "\nChon doi tuong net NETTHAY")(ssget)(command "change" "p" "" "p" "la" "NETTHAY" ""))
    / m( E. f9 t5 H* P
  988. (defun c:8 ()(princ "\nChon doi tuong net HATCH")(ssget)(command "change" "p" "" "p" "la" "HATCH" ""))
    6 h4 E, q2 e3 J" x, W: q  W# j
  989. (defun c:9 ()(princ "\nChon doi tuong net TEXT")(ssget)(command "change" "p" "" "p" "la" "TEXT" ""))/ o& c$ q( h% [5 \
  990. (defun c:99 ()(princ "\nChon doi tuong net CUAMATDUNG")(ssget)(command "change" "p" "" "p" "la" "CUAMATDUNG" "p" "C" "bylayer" ""))1 H$ G$ s6 K$ h' v
  991. (defun c:td ()(princ "\nChon doi tuong net THEPDOC")(ssget)(command "change" "p" "" "p" "la" "THEPDOC" ""))6 c' f0 d0 I, ?. D: P2 O
  992. (defun c:ddt ()(princ "\nChon doi tuong net THEPDAI")(ssget)(command "change" "p" "" "p" "la" "THEPDAI" "")), j( V4 r( ^7 e1 U
  993.   x9 @$ Z3 M% h" a  I( W
  994. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =============
    3 [3 W5 T0 Q( H: ^! a

  995. + j9 s) P0 K9 ^" n% \( q0 Y  P
  996. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =============- `8 A# Y: v  y- D% ]( z( b2 f

  997. ) o' I: \" x, E) i" w8 l
  998. (alert "Using the NetXuatAnh-[ 5940.00 x 4200.00 <pixels> ] command!")
    + m) \) V7 w7 f% T) p4 g
  999. (princ "\nEnter (DEFUN C:netxuatanh () to get to real LAYER command.\n") (command "NETXUATANH")5 b9 T5 p1 ?* ]& z; ?

  1000. : h0 X! o; K( f( }4 E
  1001. ;=============== DAT LAYER NET de xuat anh JPG [W x H] [5940.00 x 4200.00] ===DRAW===$ z4 L3 ~( B. ~2 ?+ E7 Y' H
  1002. - N" H, Z0 Y0 ^# Z" d1 _
  1003. ;(DEFUN C:netxuatanh ()
    % v8 [3 Y; ^& R4 e
  1004.                  (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.6" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "5" ""
    4 K6 h: k: W  M, h
  1005.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "1.58" ""6 J, f8 Q/ [4 Q
  1006.                                            "M" "MANH" "C" "9" "" "Lw" "0.5" ""
    5 {# ?/ t  F' J' y  ?* {% `
  1007.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""
    $ A- P: C1 |& N/ C
  1008.                                        "M" "DIM" "C" "1" "" "Lw" "0.6" ""% u3 C8 `" C6 x7 C$ S0 l
  1009.                                        "M" "THAY" "C" "7" "" "Lw" "0.7" ""
    ; B# Y* u4 U; C3 f- G
  1010.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.5" ""; h, v/ ~7 [! @
  1011.                                        "M" "HATCH" "C" "5" "" "Lw" "0.35" ""9 q5 Z4 V& a9 `6 W  o
  1012.                                        "M" "COT" "C" "2" "" "Lw" "2" ""
    7 s0 V. P! o8 H) C4 c- H3 \# ~
  1013.                                        "M" "Defpoints" "C" "7" ""; W8 B3 J& y* l) F
  1014.                                        "M" "0" "C" "3" "" "Lw" "0.5" ""
    7 I8 x% j) q1 I& S( i- L; S
  1015. ;                                       "M" "1" "C" "1" "" "Lw" "0.5" ""  R5 }4 A4 k& \
  1016. ;                                       "M" "2" "C" "31" "" "Lw" "0.5" "": ^( h- V/ i8 V& c% P3 ^. d# L
  1017. ;                                       "M" "3" "C" "8" "" "Lw" "0.35" ""
    " n' H7 F' @+ M* j+ G
  1018. ;                                       "M" "4" "C" "4" "" "Lw" "0.8" ""7 y: i8 B& D* O# y5 U
  1019. ;                                       "M" "6" "C" "6" "" "Lw" "0.35" ""
    - G4 t) @# w2 n" I
  1020. ;                                       "M" "7" "C" "7" "" "Lw" "0.4" ""' ?7 A+ ]1 H/ o( |% Q
  1021. ;                                       "M" "8" "C" "8" "" "Lw" "0.35" ""
    1 b& z9 `( F+ k+ u2 @5 z3 n
  1022.                                        "M" "DAY-DIEN" "C" "3" "" "Lw" "0.5" ""
    , u9 M  W+ a3 w3 f( G8 f) ]2 S* }7 b% ]0 E
  1023.                                        "M" "DUONGBAO" "C" "7" "" "Lw" "1" ""
    9 u4 d; u& ^  c; w1 _, H1 c
  1024.                                        "M" "KE" "C" "8" "" "Lw" "0.3" ""/ @0 E+ W/ g$ T: x8 N
  1025.                                        "M" "KT" "C" "9" "" "Lw" "0.35" ""
    ) E! U4 E+ J7 l1 J1 z
  1026.                                        "M" "NETTHAY" "C" "255" "" "Lw" "0.7" ""
    ( P3 P7 g% \+ f$ r. X' \
  1027.                                        "M" "NETMANH" "C" "43" "" "Lw" "0.5" ""5 _! v+ h6 b! P4 m3 }: o5 k
  1028.                                        "M" "TBD" "C" "2" "" "Lw" "0.8" ""2 a# S% P: h' P
  1029.                                        "M" "TEXTTXT" "C" "7" "" "Lw" "0.4" ""' U* ?( p& O1 y( ]3 V4 Q8 {
  1030.                                        "M" "TEXTVN" "C" "132" "" "Lw" "0.4" ""1 a# ~6 s  R4 O8 P) [4 }9 x
  1031.                                        "M" "THEPDAI" "C" "3" "" "Lw" "0.7" ""
    ( B7 M  M' r+ X
  1032.                                        "M" "THEPDOC" "C" "2" "" "Lw" "1.58" ""% n1 `9 M$ L- u# |
  1033.                                        "M" "CUA" "C" "6" "" "Lw" "0.5" ""
    9 @/ o! ]) U$ H+ y
  1034.                                        "M" "CUAMATDUNG" "C" "6" "" "Lw" "0.5" ""# O6 ]" o% W3 N/ L8 U

  1035. " q- n8 m  ?  ^1 n# f
  1036. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] ===NUOC===$ z4 k+ {2 w/ w
  1037. " s& n& w, t% @7 x. x
  1038.                                        "M" "10-VAN_KHOA" "C" "10" "" "Lw" "0.5" ""7 s/ ?& z2 \" Q; s
  1039.                                        "M" "4-WateR_IN" "C" "4" "" "Lw" "0.6" "" "LT" "FENCELINE1" "") _: G( k  u# c: c/ @$ a
  1040.                                        "M" "4-WateR_OUT" "C" "4" "" "Lw" "0.6" "" "LT" "FENCELINE2" ""
    ( Q4 D, a1 Y$ t) |8 K
  1041. ;                                       "M" "250" "C" "250" "" "Lw" "0.35" ""
    + k7 E  g8 y% z+ S+ j1 O
  1042.                                        "M" "KHUNGTEN" "C" "4" "" "Lw" "1" "". ?$ ~' H6 v  w
  1043.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.5" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "10" "" )1 S8 p1 q; P! ~7 i' {7 M" q: h5 Q

  1044. 5 p$ K! G3 M- |8 W2 f$ H/ R& g
  1045. ;=============== DAT LAYER TEXT de xuat anh JPG [DIM] [TEXT] [GHI CHU]======
    6 x5 x$ S5 p& V( q, X$ B# \
  1046. ;===================================30|04|2024==============================5 b1 b) ~( c8 r1 ?; h$ e" t2 I" _
  1047. % D& k. _/ V0 i4 Q% W
  1048.                      (Command "-style" "Vni-VietNam" "vn_vni,vns.shx" "0" "1" "0" "n" "n" "n" )
    , a9 @# ?' i2 d: Q1 u
  1049.                      (Command "-style" "Vni-ROMANS-TEXT" "vni-romans,vns.shx" "200" "1" "0" "n" "n" "n" )  P/ W0 R0 `; p* x& F0 X
  1050.                      (Command "-style" "COTES" "verdana" "" "1" "0" "n" "n" )' A& B: }( R! n( ^
  1051.                      (Command "-style" "TRUC" "impact" "0" "1" "0" "n" "n" "n" )5 h8 _( ~6 k  p& B* N
  1052.                      (Command "-style" "VNHELVLT-Hoa" "vnhelvh,vnh.shx" "500" "1""0" "n" "n" "n" )5 N% b# g% u0 a1 E4 e3 d
  1053.                      (Command "-style" "VNHELVLT-Thuong" "vnhelv,vnh.shx" "500""1" "0" "n" "n" "n" )
    . j$ @2 L. m$ d3 s
  1054.                      (Command "-style" "STANDARD" "Verdana" "200" "1" "0" "n" "n" "n" )8 M" E, l& N" g% P( z3 V% ]0 p+ G
  1055.                      (Command "-style" "VERDANA" "verdana" "200" "1" "0" "n" "n" )$ f4 I" |4 x: t) }& {0 V
  1056.                      (Command "-style" "ROMANT-DIM" "romant,vnh.shx" "0" "1" "0" "n" "n" "n" ); \0 w, h* |/ C$ w9 e7 \; S
  1057.                      (Command "-style" "ROMANT-TEXT" "romant,vnh.shx" "200" "1" "0" "n" "n" "n" )(princ)
    4 h+ a5 V; n" R# u$ d
  1058. 2 t5 H- {. A+ b1 p3 z5 z
  1059. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=  M/ _6 u  U4 z: `# G8 Z
  1060. ;===================================17|10|2024===================================6 k3 f, i" K+ t) L9 ], b) e' W5 k
  1061. 9 P/ @; U9 S2 m& u! P  @* Y
  1062.                      (Command "DIMTXSTY" "ROMANT-DIM" )
    ' j. }- A8 _0 W5 R+ {" |6 _& w
  1063.                      (Command "DIMBLK" "" "Closed" )/ S9 b6 D0 r- [3 T4 p; q$ g& U

  1064. $ K1 r9 K% b( A" P6 ^+ _. N
  1065. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=
    $ T8 T8 T  y* c
  1066. ;===================================17|10|2024===================================
    3 U; [/ v/ v) G4 K1 O, F
  1067.   M6 D) N3 |" ~, D$ F
  1068. ;(Command "-units" "2" "8" "1" "8" "" "N")
    0 g2 q( I' Z) I6 b7 b" f  y
  1069. (Command "-plot" "Y" "" "publishtoweb jpg.pc3" "User 1 (5940.00 x 4200.00 Pixels)" "Landscape" "N" "Display" "Fit" "Center" "Y" "monochrome.ctb" "Y" "")(princ)8 b  {- a3 P1 \8 r, d
  1070. * j, W$ |/ k) V7 o' k' d$ f; {9 ^
  1071. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=
    3 B" E* R: [6 A; W/ D0 g
  1072. ;===================================17|10|2024===================================( D8 W* y! T3 t" P
  1073. * b' K$ b7 s, U
  1074. ;======== KET THUC - DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =====
    ' L: W8 y, h% l+ o- d/ s

  1075. & z7 h6 ?" [2 B9 A% s6 e3 E3 k
  1076. ;======================== DAT NET IN & TI LE BAN VE =============================
    , P) j$ s  K" J5 e" X0 j
  1077. ; j" C- \& f0 b8 L8 Q' g; O
  1078. ;=================LENH VE KHUNG TEN - Tieu Diet Lenh==================4 n3 z4 D& z( Q. j$ [+ x
  1079. ;=============== DAT KHO GIAY BAN VE - KIEU KHUNG TEN ================- k3 L+ Z, z2 a; r0 V" h" Y
  1080. ;=============================11|07|2025==============================) a( j) `6 F  Y3 {4 d3 r
  1081. ;Ti Le Ban Ve - 1 : 100
    0 s5 j9 o, D# @0 y9 }1 r% }
  1082. (Defun c:kta4 (); N, M6 J/ E, a- \! \' Y
  1083.     (setq mv_sc 100);Ti le  ban ve
    : d5 x+ ~2 u. ]4 ]3 ]' T8 \
  1084.       (setq x4  297)
    - [2 T( N+ j! D( }
  1085.       (setq y4  210)6 h. ^5 R0 X5 Q$ C* h
  1086.   (setq x4 (* mv_sc x4)
    + E5 p0 }: P1 @/ r
  1087.         y4 (* mv_sc y4)  ), A8 e# v7 a. I
  1088.   (command  
      {0 ~% C) c3 u; s' i
  1089.     "LIMITS" "0,0" (list x4 y4)5 s1 l2 T% E% z" p/ f' r. q
  1090.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    ) X& t2 m* A& U8 a* I/ E& ]
  1091. ;Khung CHU NHAT Chinh    # I! d  ]; b( A/ }
  1092.     "RECTANG" "500,500" "@28700,20000": I2 u3 B: Z9 h. l2 n
  1093.     "RECTANG" "700,700" "@28300,19600"
    1 ~$ J! T) P' L
  1094. ;Khung Ten Chung
    ! V# p4 ]3 e7 o$ I9 p
  1095.     "RECTANG" "700,700" "@8000,1250"" X% E0 o! O7 _) E7 [$ F) s& V4 T( d
  1096.     "RECTANG" "700,700" "@17300,2500"
    0 z( ^( H7 C' \* h
  1097. ;Ten Ban Ve: ~, W  J  }+ K. W
  1098.     "RECTANG" "18000,700" "@11000,1250"0 L' h! f( u* P5 e+ B& o8 T
  1099.     "RECTANG" "18000,700" "@11000,2500"7 u6 v9 Q' a) U& g
  1100. ;Khung Ti Le + Ngay Thang Nam, C* Z# d6 @5 e; n$ O/ J
  1101.     "RECTANG" "22500,700" "@2000,2500"8 }; O, @" ]5 ?; [  Q. k4 t% ?
  1102. ;Khung CHU TRI
    # x7 q, k- `+ r, ^: A& V
  1103.     "RECTANG" "8700,700" "@3800,2500"
    8 w( C2 @( L5 j9 @, z3 h
  1104. "ZOOM" "_a"  ))  J+ \6 A5 Z: F/ @( y
  1105. ;=====================================================================
    3 {/ Y1 {) v2 ?. L, s* ]& C
  1106. ;Ti Le Ban Ve - 1 : 1004 Y8 r1 o7 y2 P5 W- R; B) @
  1107. (Defun c:kt4a ()  _6 f3 u1 }4 z+ O; J
  1108.     (setq mv_sc 100);Ti le  ban ve
    & D3 L  `8 z3 |- y3 g* R& s
  1109.       (setq x4  297)
    ; @$ J/ F/ F  }% K' v
  1110.       (setq y4  210)
    7 V" d$ a, a- N# ~6 }4 S; a
  1111.   (setq x4 (* mv_sc x4) . x+ G1 \, l" a
  1112.         y4 (* mv_sc y4)  )3 M, A. u5 M- e/ t/ g0 O
  1113.   (command  
    7 B( k9 Z3 D, C0 E& A
  1114.     "LIMITS" "0,0" (list x4 y4)
    8 X. V( F! b/ N1 {9 m# n% _
  1115.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    9 A& k- b# Y7 @. z  Q4 f
  1116. ;Khung CHU NHAT Chinh  7 }  {6 U1 I/ g5 ^9 q
  1117.     "RECTANG" "2000,500" "@27200,20000"
    : ~' L) [3 Q9 @
  1118.     "RECTANG" "2200,700" "@26800,19600"1 Q0 K! s: K- q3 x
  1119. ;Khung Ten Chung2 c' h3 {3 m+ j9 B( d; i) a
  1120.     "RECTANG" "2200,700" "@6500,1250"+ T. f* R3 |) l3 ]0 o0 ^! ]0 P- _
  1121.     "RECTANG" "2200,700" "@15800,2500"" R1 {& ^; [( m2 D* y4 ^
  1122. ;Ten Ban Ve
    3 `- [5 v! s; h: I3 t0 J/ g
  1123.     "RECTANG" "18000,700" "@11000,1250"2 L+ s- b9 R0 A; K: d
  1124.     "RECTANG" "18000,700" "@11000,2500"
    8 `- o" [* M& F" F6 R0 e* o* K
  1125. ;Khung Ti Le + Ngay Thang Nam  `3 K( {$ Z. ?: A# H
  1126.     "RECTANG" "22500,700" "@2000,2500"
    % ?5 k! ~; U4 z+ P
  1127. ;Khung CHU TRI
    ! D- B" _4 h5 L7 r4 v: A
  1128.     "RECTANG" "8700,700" "@3800,2500"! L1 j4 l7 q3 R/ {7 `4 K
  1129.     "ZOOM" "_a"  ))! h, O) e$ B' \( E# L5 D
  1130. ! v4 }& y9 K- K9 v% i4 b
  1131. ;;; ============================GHI CHU Khung Ten========================2 S' a6 O9 W8 N0 o9 s) G+ q3 h
  1132. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    5 j% @( G* z* i' m
  1133. ;;; =======================Thuong Dung Font Romant.vnh===================
    & _5 _2 \/ q& g2 n" Y" h( D

  1134. . m) L8 a- V" u
  1135. (defun c:GhiChu (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)
    - N$ O8 f6 T4 l* h5 y6 N
  1136.   (setq oer *error* *error* err2)
    " b! t; \% e% E5 j3 u: T6 F( g
  1137.   (PROMPT "\nChuTri. ThietKe. KiemTra. TiLe. Ngay. HangMuc. QuyMo. KieuNha. CongTrinh. KyHieu. TenBanVe. Kts. TranNgocThang. ")- ~+ T, u0 C: J: E5 @
  1138.   (SETQ Cpt(GETSTRING "\n(CT). (TK). (KT). (TL). (Ng). (HM). (QM). (KN). (CTr). (KH). (TBV). (Kts). (TnT). ")). R, ]( Z3 Z' ^2 D
  1139.   (IF(OR(= Cpt "QM")(= cpt "qm"))(SETQ CPT ' "Hå S¬ ThiÕt KÕ Nhµ D©n Dông quy M« :")); m! Z) ]7 ?2 u: Z9 s% l9 x5 X  P
  1140.   (IF(OR(= cpt "KN")(= cpt "kn"))(SETQ CPT ' "2 TÇng 1 Tum Thang"))# ~) T7 U5 S' L1 n9 N% b9 j6 V
  1141.   (IF(OR(= cpt "CT")(= cpt "ct"))(SETQ CPT ' "Chñ Tr× :"))( G; A1 {& S! ?* A7 Y7 K( r
  1142.   (IF(OR(= cpt "HM")(= cpt "hm"))(SETQ CPT ' "H¹ng Môc :"))
    ! {8 g' p1 h4 V) F
  1143.   (IF(OR(= cpt "CTr")(= cpt "ctr"))(SETQ CPT ' "Nhµ ë Gia §×nh - Nhµ LiÒn KÒ"))
    - o+ o2 R  ]  k2 \, o' i" c% N" }
  1144.   (IF(OR(= cpt "TK")(= cpt "tk"))(SETQ CPT ' "ThiÕt KÕ :"))$ s% y5 K; L  L* S) e  C1 [4 h
  1145.   (IF(OR(= cpt "KT")(= cpt "kt"))(SETQ CPT ' "KiÓm Tra :"))
    ! ]/ y* M% H/ O* k+ ^' k% W
  1146.   (IF(OR(= cpt "TL")(= cpt "tl"))(SETQ CPT ' "TØ LÖ :"))( n3 z) t: V- _1 w; T
  1147.   (IF(OR(= cpt "KH")(= cpt "kh"))(SETQ CPT ' "Ký HiÖu :"))
    ! ?, @; o2 d3 ~
  1148.   (IF(OR(= cpt "TBV")(= cpt "tbv"))(SETQ CPT ' "Tªn B¶n VÏ :"))9 t) f0 q8 F5 ~' y
  1149.   (IF(OR(= cpt "Ng")(= cpt "ng"))(SETQ CPT ' "Ngµy :"))
    " P- I: O# j7 l& Z( j  C) ?8 X& F
  1150.   (IF(OR(= cpt "Kts")(= cpt "kts"))(SETQ CPT ' "Kts. TrÇn Ngäc Th¾ng"))
    " D3 k5 D2 j% @2 k' J# R
  1151.   (IF(OR(= cpt "TnT")(= cpt "tnt"))(SETQ CPT ' "TrÇn Ngäc Th¾ng"))' A- |5 Z. M3 ]  y, o9 y
  1152. (setq pta (getpoint
    / d& o  R) K" q; @: n
  1153.     "\nPick first corner. : "))
    ; F3 c- ~; A! `3 ], d
  1154.   (setq ptb (getcorner pta
    0 S+ c3 E( o5 {9 J. Q
  1155.     "\nPick second corner. : "))
    3 `+ s! p' h; v% w
  1156.   (setq ptc (list (car ptb)(cadr pta)))
    2 c( F! r5 m/ A, t3 ^' \% o* i
  1157.   (setq ptd (list (car pta)(cadr ptb)))2 @$ b5 R9 s, x7 Y
  1158.   (setq ang (angle pta ptb))
    : k+ Z  Y" Q/ [, T. o4 c  f5 w0 H6 ^: I
  1159.   (setq d1 (/(distance pta ptb) 2))7 @# |" Z0 x. G$ D
  1160.   (setq cp (polar pta (- ang (dtr 0)) d1))
    4 p0 W6 J9 S" h: v; ~/ p
  1161.   (setq X (distance pta ptc))
    * q" z4 h, f3 v+ {
  1162.   (setq Y (distance pta ptd)): @) I/ ^% `% J  o+ s
  1163.   (setq X1 (rtos x 2 1))
    ) K$ K7 S3 ?" _
  1164.   (setq Y1 (rtos y 2 1))
    ' R1 ]. R) A* L5 p$ @9 f
  1165.   (setq rmsz (strcat "(" X1 " x " Y1 ")")). L0 h4 B* G; d7 I  _& Y" m9 @, c
  1166.   (command "TEXT" "c" cp "0" CPT "text" "" rmsz)): {" Y5 x8 h& u+ {  i3 H
  1167.   (defun dtr (angg); o* x& h: v+ Z2 Z
  1168.   (* pi (/ angg 180.0)))
    ; f: u9 ^. r) E0 S3 y9 t1 F7 g( D4 a

  1169. 7 M4 i% n+ {0 P) o; E5 C1 O9 g( G3 Z
  1170. ;=====================================================================( w+ ~' o+ m3 S& {' l* m3 z+ c6 }
  1171. ;==========================DAT KHO GIAY BAN VE - KIEU 1========================
    6 R7 h4 ^0 [/ ?% z: w' o
  1172. ;=====================================================================! z9 [7 D6 C. K6 a/ u

  1173. ; i3 u) F* ^. S& ~  [
  1174. (Defun c:a6 ()
    8 P1 N  e6 S6 A. N5 {# i* t: \
  1175.         (setq mv_sc 100);Ti le  ban ve; B& x. B. m& O+ |
  1176.       (setq x4  74.25)- _' k# s5 Q' z7 E- a+ `; v( S2 Y
  1177.       (setq y4  52.5)
    8 u) K6 f  B& u8 B: |, q! z
  1178.   (setq x4 (* mv_sc x4) , {) Q1 B1 |& x- @5 y
  1179.         y4 (* mv_sc y4)  )0 `# n4 Z* w% c' m8 Z% U
  1180.   (command  " |! u/ q$ i( C- V0 K/ l
  1181.     "LIMITS" "0,0" (list x4 y4)& V- `4 }" {& ]3 T* s& N
  1182.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C") I9 w6 M$ S; z, C9 K
  1183.     "RECTANG" "125,125" "@7175,5000"
    ) A  f( B. S! `
  1184.     "RECTANG" "175,175" "@7075,4900"# S5 A' y# I3 c& `( B' i
  1185.     "ZOOM" "_a"  ))
    ; z8 n( _6 s& D& h, R! \
  1186. ;=====================================================================
    0 M8 F% f5 m8 I. e
  1187. (Defun c:a5 ()3 V$ B$ q4 K+ x8 V5 U" t8 y
  1188.         (setq mv_sc 100);Ti le  ban ve1 _8 D# h, B% d0 y/ \$ ~3 n2 e# r
  1189.       (setq x4  147.5)
    8 r2 |  R9 `0 G/ F4 v
  1190.       (setq y4  104)) z* V- l' {% {
  1191.   (setq x4 (* mv_sc x4) # d, P2 ?9 e( E
  1192.         y4 (* mv_sc y4)  )% O$ h" P8 d9 o7 u* v: Z
  1193.   (command  & S0 K6 o( A) F. }, {
  1194.     "LIMITS" "0,0" (list x4 y4)! q9 y% D+ h9 u% A/ v9 b6 _: ^& F
  1195.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"1 s+ k* K3 H* j) N' Q
  1196.     "RECTANG" "250,250" "@14350,10000"& B0 L1 ^3 t* N: v7 S3 `6 g8 M8 r
  1197.     "RECTANG" "350,350" "@14150,9800"/ ]6 i2 H7 {# z8 z- q- q
  1198.     "ZOOM" "_a"  ))
    8 b3 E1 {( W: J# T; I$ P
  1199. ;=====================================================================( ~9 R' n( d% U& e  i) ~4 a
  1200. (Defun c:a4 ()9 I8 e4 B, _$ b9 T+ g) w
  1201.         (setq mv_sc 100);Ti le  ban ve! F# m0 n: z  U+ l; U
  1202.       (setq x4  297)
    # r4 Q. i. d# H* E( H0 n
  1203.       (setq y4  210)7 a" V* m9 O6 L1 O$ J& {
  1204.   (setq x4 (* mv_sc x4)
    2 a; j. x& g$ \- b* A5 m/ F# `
  1205.         y4 (* mv_sc y4)  )6 H" @& l  C+ Q
  1206.   (command  # Y! z/ m/ ~6 I% r, }' z
  1207.     "LIMITS" "0,0" (list x4 y4)( d% B- ~, _. h$ |$ T) O
  1208.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"3 H. s& q6 O9 Y3 C
  1209.     "RECTANG" "500,500" "@28700,20000"3 X& E, p5 t# G, k: f( l9 Y
  1210.     "RECTANG" "700,700" "@28300,19600"* P/ m, f$ z) O- C, o6 {6 Q
  1211.     "ZOOM" "_a"  ))# f$ G* N7 E8 s( u- E
  1212. ;=====================================================================
    . c  o3 {, @$ g* H
  1213. (Defun c:a3 ()1 S6 X- F" U# A% Y. v3 v
  1214.         (setq mv_sc 100)9 K% e- u! g- l
  1215.       (setq x3  420)+ R$ e* a! E* k- }5 `; c
  1216.       (setq y3  297)  L" \5 N" M5 u2 J: H
  1217.   (setq x3 (* mv_sc x3)
    + ^" w5 V0 x9 {: |" D1 \5 ?1 |
  1218.         y3 (* mv_sc y3)  )
    6 A, u* r4 X7 j
  1219.   (command  
    / s, C' L' Z6 R2 m9 J
  1220.     "LIMITS" "0,0" (list x3 y3). d3 P5 G7 m3 h2 ]7 |6 P
  1221.     "PLINE" "0,0" (list 0 y3) (list x3 y3) (list x3 0) "0,0" "_C"* w4 f5 O( d6 X% j
  1222.     "RECTANG" "707.14285714,707.14285714" "@40590,28285.71428571"7 W5 i' y2 a, W$ T3 `; ~- @& m
  1223.     "RECTANG" "990,990" "@40024.28571429,27720"
    + {2 \  V" z3 e
  1224.     "ZOOM" "_a"  )); [; H  w- {, l7 d# }* O" @. D
  1225. ;=====================================================================4 ^  G  R1 d! T; `
  1226. (Defun c:a2 ()
    $ K  M) s2 E3 |! ]) a! w/ c
  1227.         (setq mv_sc 100)
    ( X8 \$ t! |9 S8 f; ?4 Z( G# D
  1228.       (setq x2  594)& W( l# C  I7 D, ~
  1229.       (setq y2  420)+ @1 N2 c- V, @" `
  1230.   (setq x2 (* mv_sc x2)
    8 z  l( d: ~) B
  1231.         y2 (* mv_sc y2)  )
    9 g: g, ^5 f5 E( L
  1232.   (command  5 }- d8 @9 D, d9 d; @
  1233.     "LIMITS" "0,0" (list x2 y2)
    " i! t9 L  J7 v  t( k5 v- i/ p
  1234.     "PLINE" "0,0" (list 0 y2) (list x2 y2) (list x2 0) "0,0" "_C"
    & }+ V/ F; U0 E7 R, R5 r$ Q
  1235.     "RECTANG" "1000,1000" "@57400,40000"
    & q8 R% ^2 a# W. [
  1236.     "RECTANG" "1400,1400" "@56600,39200"$ o; u: z& |% [/ A. W, a, [5 k. a4 x
  1237.     "ZOOM" "_a"  ))( i7 A7 H; ?+ w! G
  1238. ;=====================================================================7 i2 G+ \" S% f! ?7 K
  1239. (Defun c:a1 ()! ~7 ~- }. b  A5 N
  1240.         (setq mv_sc 100)# q* U0 a' l5 g0 V
  1241.       (setq x1  840)
    4 U1 \; p/ w6 F$ r. a
  1242.       (setq y1  594)
    8 ]* n% I# G- J+ F5 d
  1243.   (setq x1 (* mv_sc x1) 1 H6 M' ^6 F. C" z! E4 s! Y
  1244.         y1 (* mv_sc y1)  )0 P* A+ p2 d; \2 L
  1245.   (command  + }/ x/ |; Y6 i6 W* p3 V4 `5 T
  1246.     "LIMITS" "0,0" (list x1 y1)
    " {- K: ^5 }4 x: r
  1247.     "PLINE" "0,0" (list 0 y1) (list x1 y1) (list x1 0) "0,0" "_C"' H$ G7 l6 Q- t. m" u
  1248.     "RECTANG" "1414.28571429,1414.28571429" "@81180,56571.42857143"
    ) g9 `/ z/ V4 C
  1249.     "RECTANG" "1980,1980" "@80048.57142857,55440"
    1 k2 V2 A6 w. X* }7 r
  1250.     "ZOOM" "_a"  ))
    . k+ \0 v6 c5 X
  1251. ;=====================================================================$ `: e+ n: s+ v+ }0 s
  1252. (Defun c:a0 (). q, a0 ~" b$ J: v
  1253.         (setq mv_sc 100)3 Y( M1 p3 A% o: j2 x: n3 P1 y6 B
  1254.       (setq x0  1188)
    7 v, G2 w" B$ n& ?& i' h
  1255.       (setq y0  840)
    * s# \: y! q1 |' G% r# W+ r
  1256.   (setq x0 (* mv_sc x0) 7 m0 l% K: x0 v' u& A' Q
  1257.         y0 (* mv_sc y0)  )$ H1 V5 _! V8 `0 J) x- N
  1258.   (command  0 v) \6 J) M- E; ^" v
  1259.     "LIMITS" "0,0" (list x0 y0): t# K" n# n/ W: m3 j0 o4 t, j
  1260.     "PLINE" "0,0" (list 0 y0) (list x0 y0) (list x0 0) "0,0" "_C"! ^7 C# M" e* V
  1261.     "RECTANG" "2000,2000" "@114800,80000"
    * a6 o5 n6 _1 X% ^- ~* ]
  1262.     "RECTANG" "2800,2800" "@113200,78400"/ ^+ ?$ G- y, U  G; b
  1263.     "ZOOM" "_a"  ))
    - @  L2 v( u# E3 f% ]2 k

  1264. : J5 [8 ?7 b$ f# _
  1265. ;=====================================================================
    2 {8 }3 S+ D: h
  1266. ;=========================DAT KHO GIAY BAN VE - KIEU 2=========================$ C- Q; x9 y% p4 W
  1267. ;=====================================================================% X! o1 \3 H  E: d4 ^* h
  1268. ) j' _6 |3 R6 B* g
  1269. (Defun c:6a ()
    + M% V% u! ~7 O" o1 Z
  1270.         (setq mv_sc 100);Ti le  ban ve
    ' |! ?, e) E. _4 j" e9 W9 K
  1271.       (setq x4  74.25)
    8 \" d- k2 C9 O7 j9 E/ y
  1272.       (setq y4  52.5)
    ' V( s9 ^" m0 Z: |5 v' A( a
  1273.   (setq x4 (* mv_sc x4) 4 p. R! Y& E3 T# k
  1274.         y4 (* mv_sc y4)  )( y0 t7 |& @0 G* c" l
  1275.   (command  
    ( w0 O: |+ c6 h; Z, m$ y1 N% Q4 W
  1276.     "LIMITS" "0,0" (list x4 y4)
    2 @4 }; o# ~6 {" v! L5 X
  1277.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"4 @3 s3 @  e3 j. l) g
  1278.     "RECTANG" "505,125" "@6800,5000"& n3 o2 @1 U: t5 y- p9 H( T
  1279.     "RECTANG" "555,175" "@6700,4900": ~1 ?6 i0 l+ s* r
  1280.     "ZOOM" "_a"  )), x) [6 x) t' s- }
  1281. ;=====================================================================( f- R0 W7 h* M( {5 ^4 O
  1282. (Defun c:5a ()( Y+ h- Z6 T8 m9 M+ T7 V7 V
  1283.         (setq mv_sc 100);Ti le  ban ve
    " S( m4 e. [( Q4 I
  1284.       (setq x4  148.5)( i0 i) }( g7 Z. U& E
  1285.       (setq y4  105)
    % t5 G; q3 N8 }3 L8 @, @! p
  1286.   (setq x4 (* mv_sc x4)
    ) u4 A! C% c$ Y& L+ b8 p, d7 Q
  1287.         y4 (* mv_sc y4)  )
    " I3 J' V0 h9 s  Y7 V8 P" L6 _
  1288.   (command  # Q. i. N. G; N8 I! o( I# b
  1289.     "LIMITS" "0,0" (list x4 y4)
    % k# q8 T; [2 b4 ~, t, S
  1290.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    # z! L: `% O, [. F: r
  1291.     "RECTANG" "1000,250" "@13600,10000"/ j) r; O; Q% A! e- U
  1292.     "RECTANG" "1100,350" "@13400,9800"
    0 D& ~3 E: c, H. @& \. B6 J4 @$ {8 {
  1293.     "ZOOM" "_a"  ))
    : o, p/ e1 x/ j1 u4 \2 \! U& ~
  1294. ;=====================================================================" a6 m' D4 Q( h9 u, c  H
  1295. (Defun c:4a ()
    0 W: V( B/ D/ j# x2 N' v" ^1 i
  1296.         (setq mv_sc 100);Ti le  ban ve
    # c4 g# a+ k, F2 _
  1297.       (setq x4  297): B3 c. f8 E* ?
  1298.       (setq y4  210)
    5 R4 \# [7 Q! m  J+ h' `
  1299.   (setq x4 (* mv_sc x4) 6 ~! U" g# e( o* w/ A: e
  1300.         y4 (* mv_sc y4)  )$ |4 w6 Z5 o; C
  1301.   (command  
    9 k( P: U) ]! ^1 e
  1302.     "LIMITS" "0,0" (list x4 y4)
    % ?4 Q+ D$ h7 i
  1303.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    ) t2 t% T2 d, w% ]1 I+ ~7 s
  1304.     "RECTANG" "2000,500" "@27200,20000"
    2 @. D* ~# A5 ^5 T; c
  1305.     "RECTANG" "2200,700" "@26800,19600"$ {7 Y; a, j' v' t
  1306.     "ZOOM" "_a"  ))
    & w, w% e# s  c) j  R2 P: n
  1307. ;=====================================================================* Y9 N. Z% c' M! w) k
  1308. (Defun c:3a ()" a  o% m' p1 i1 v
  1309.         (setq mv_sc 100)
    - f0 P# d' Z# ]& k5 e8 J
  1310.       (setq x3  420.0428571429)
    9 H; A/ |8 Y! D4 }
  1311.       (setq y3  297)
    9 e8 W; ^/ X# M& X2 t8 w$ P# N
  1312.   (setq x3 (* mv_sc x3) 5 z5 l, e1 m: \. E. Q
  1313.         y3 (* mv_sc y3)  )5 k! l# X0 Q" ?  M+ |; q% `& m
  1314.   (command  
    9 z3 }8 x4 w. K: _
  1315.     "LIMITS" "0,0" (list x3 y3)
      e$ q" ~( w- Z* l; k, l2 b) O/ L- n' `
  1316.     "PLINE" "0,0" (list 0 y3) (list x3 y3) (list x3 0) "0,0" "_C"( p8 D; d  o5 X/ j& M8 u& P- B
  1317.     "RECTANG" "2828.57142857,707.14285714" "@38468.57142857,28285.71428571"
      I7 e! Y0 E9 D, z' a& J! t
  1318.     "RECTANG" "3111.42857142,989.99999999" "@37902.85714287,27720.00000001"
    ; s& a( ^, R+ L3 C& l0 H! z% Y1 B4 P
  1319.     "ZOOM" "_a"  ))) J4 c4 p$ B* [) ]6 Q
  1320. ;=====================================================================
    $ [- G/ Y" l% C1 |- z# o4 H
  1321. (Defun c:2a ()
    2 k/ S1 F6 _" t3 f4 E/ v
  1322.         (setq mv_sc 100)
    % ]/ [! d& f9 @& c6 y, ~! N" F
  1323.       (setq x2  594)
    ) O0 }- M' D# q! _: G
  1324.       (setq y2  420)- W9 F$ @( n' x: b( ]1 A4 p
  1325.   (setq x2 (* mv_sc x2) : Z$ z  r* R7 b0 G! J: d% F
  1326.         y2 (* mv_sc y2)  )
    6 H0 n0 j1 G. v9 ]9 m. R
  1327.   (command  $ J+ r  F( ?+ k, S9 ~
  1328.     "LIMITS" "0,0" (list x2 y2)8 M. u- c) N$ ~3 }$ k5 @
  1329.     "PLINE" "0,0" (list 0 y2) (list x2 y2) (list x2 0) "0,0" "_C"
    $ ?" f8 B+ n: F8 e
  1330.     "RECTANG" "4000,1000" "@54400,40000"; a; ?* t; v  B+ s: R
  1331.     "RECTANG" "4400,1400" "@53600,39200"" f+ L. {# [* G: |2 z3 t
  1332.     "ZOOM" "_a"  ))
    , y: N( W2 t* g% j
  1333. ;=====================================================================7 c0 ^6 G8 G2 H# D/ a9 |9 O
  1334. (Defun c:1a ()
    4 Q& r; v6 r9 s5 `' k  W
  1335.         (setq mv_sc 100)
    & a3 V3 _  D  o/ X
  1336.       (setq x1  840.0857142857)4 k& N# Y4 Q+ z
  1337.       (setq y1  594)
    % k; A2 x% ~' f8 m! s
  1338.   (setq x1 (* mv_sc x1)
    4 }, d, B5 W6 e4 }' U
  1339.         y1 (* mv_sc y1)  )- O8 D) q% o" n" d  p0 v0 v$ ]- Z
  1340.   (command  
    4 r9 p9 Q) T3 m- S: S5 Y
  1341.     "LIMITS" "0,0" (list x1 y1)
    9 W+ D. `6 x$ N& \, B. _3 _2 _# i8 R
  1342.     "PLINE" "0,0" (list 0 y1) (list x1 y1) (list x1 0) "0,0" "_C"2 s5 H' @$ `8 Y6 u: c8 a3 U, X
  1343.     "RECTANG" "5657.14285714,1414.28571429" "@76937.14285714,56571.428571436"
    1 |: m. a/ G8 Z
  1344.     "RECTANG" "6222.85714286,1980.00000001" "@75805.71428570,55440"
    + w4 ~, w! T5 M4 B& H
  1345.     "ZOOM" "_a"  ))- X4 V8 t$ L( P  r' D7 W6 @
  1346. ;=====================================================================$ U2 a& Z2 r. Z5 y
  1347. (Defun c:0a ()
    $ o8 o4 s. y: f" R  M) X, G. x
  1348.         (setq mv_sc 100)
    8 F+ N% A; ^$ E3 D0 s7 i8 l1 n
  1349.       (setq x0  1188)
    - Y$ m5 X. V: k
  1350.       (setq y0  840)
    1 Q- h$ a( Y; \, Z
  1351.   (setq x0 (* mv_sc x0) 4 U" a1 U8 b' H6 b. L* O, _
  1352.         y0 (* mv_sc y0)  ). ]) E. ]7 T9 w7 D
  1353.   (command  
    4 _- P+ `1 _  ]( l
  1354.     "LIMITS" "0,0" (list x0 y0), k) X5 c$ a1 ~$ ?4 U  A0 J
  1355.     "PLINE" "0,0" (list 0 y0) (list x0 y0) (list x0 0) "0,0" "_C"
    7 a/ K* x" i7 F5 e  I- B, Y
  1356.     "RECTANG" "8000,2000" "@108800,80000"! L$ V5 j+ ]" V2 X& W3 o4 h
  1357.     "RECTANG" "8800,2800" "@107200,78400"" Q4 a) Z. b; v, `
  1358.     "ZOOM" "_a"  ))9 {( s3 T7 y- y- `- _( R2 n
  1359. & ^5 ~( J- D' }8 x
  1360. ;=====================================================================0 X3 A8 `0 @0 g( J  x* D
  1361. ;==================DAT KhoGiay Theo KHO GIAY BAN VE===================2 v5 I& K& y# [% s; R& }
  1362. ;=====================================================================
    / d7 i# N' I9 C
  1363. (defun c:khogiay (/ oldlst a b c d e f g h kho TL)- \3 k% Y4 C' b& c
  1364. (command "undo" "be")
    1 {7 \/ ]' {5 r, C% x/ v* I7 \6 s5 J
  1365. (setq oldlst (mapcar 'getvar (list "CMDECHO" "OSMODE" "cecolor")))) F( W# b- _: b" s# o
  1366. (setvar "CMDECHO" 0)% e$ ~1 C# J. D" d! A0 ?8 C' P
  1367.     (setq a (getpoint "\n chon diem chen :"))+ ?8 e7 T1 q' T1 B& }5 j
  1368. (if (not TL) (setq TL 1.00))
    + J2 ]% T( v5 c1 V, X6 y7 N
  1369. (setq TL1 (getDIST (strcat "\nScale <" (rtos TL 2 2) ">:")))6 B/ D! d) ]0 e5 ], D8 ?
  1370. (if TL1 (setq TL TL1))5 J7 r2 I  a/ U+ T; J
  1371. (setvar "osmode" 0)0 [  l) h( K: v+ x% \
  1372. (if (not (tblsearch "layer" "Defpoints")) (Command "layer" "N" "Defpoints" ""))
    8 T6 u* e$ r. m
  1373. (initget "0 1 2 3 4")& P3 U. D! I+ \7 Q0 B% M
  1374.        (setq kho (getkword "\Kho A0 _ Kho A1 _ Kho A2 _ Kho A3 _ Kho A4 [0/1/2/3/4]? <0>:"))
    : `) V) Y! ^" n2 A2 x3 @7 x# ?) z
  1375. (if (= kho "0")+ |+ C* E# f9 S+ \2 V
  1376.      (progn, y/ D5 ~0 d3 ?( d0 A5 v& s5 s" ]# l
  1377.              (setq b (polar a 0 (* TL 1189)))
    1 c$ Q- M0 G  e; ~
  1378.                      (setq c (polar b (/ pi 2) (* TL 841)))* g% l; i# T' ]/ p  z. y
  1379.                      (setq d (polar a (/ pi 2) (* TL 841)))
    " X+ j% H1 D: o0 j% R0 }
  1380.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 12 12)))))
    5 a% E0 i4 F. E
  1381.                      (setq f (polar e 0 (- (* TL 1189) (* TL 24)))); ], y7 A6 A+ ?$ n1 X: a
  1382.                      (setq g (polar f (/ pi 2) (- (* TL 841) (* TL 24))))
    0 ~: d' e5 c5 f4 Y
  1383.                      (setq h (polar e (/ pi 2) (- (* TL 841) (* TL 24))))0 e% R# A% a  n8 s5 p  E
  1384.   (command "Pline" e f g h "c")            0 ?9 W" }+ W- s* S1 f
  1385. (command "change" "last" "" "properties" "layer" "0" "")0 J* u4 d0 K' ~' A+ a5 k
  1386. (setvar "cecolor" "4")
    / Q  X" Q: I. t" e$ o
  1387.   (command "Pline" a b c d "c")
    : E$ O- g. `6 b
  1388. (command "change" "last" "" "properties" "layer" "defpoints" "")))    5 M: u3 a8 X# H( W
  1389. (if (= kho "1")
    1 B( G3 A6 R, _. |
  1390.      (progn; o6 V5 }* V+ I. c
  1391.              (setq b (polar a 0 (* TL 841)))+ X  D: h; _8 E+ @, Q# @
  1392.                      (setq c (polar b (/ pi 2) (* TL 594)))
    . l4 w8 V2 w5 h( e" p7 A
  1393.                      (setq d (polar a (/ pi 2) (* TL 594)))
      P, `9 M$ N) G# V- E
  1394.             (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 12 12)))))7 ?0 w& K; p0 U5 g  e% P
  1395.                      (setq f (polar e 0 (- (* TL 841) (* TL 24))))/ B5 Y, B- F7 @  t
  1396.                      (setq g (polar f (/ pi 2) (- (* TL 594) (* TL 24))))
      b' T0 N/ f' L0 _. k  X
  1397.                      (setq h (polar e (/ pi 2) (- (* TL 594) (* TL 24))))
    ; B- u* H7 R6 _8 [6 y9 C
  1398.   (command "Pline" e f g h "c")            
    : s6 Y) G' l9 ?
  1399. (command "change" "last" "" "properties" "layer" "0" "")
    " a0 b5 k( \" @' j
  1400. (setvar "cecolor" "4")
    . G' l4 g: q5 g1 ?! C6 [' P
  1401.   (command "Pline" a b c d "c")# [! U4 j$ c5 l+ E; ^  K' x  u
  1402. (command "change" "last" "" "properties" "layer" "defpoints" "")))
    : P) k4 s4 c. h
  1403. (if (= kho "2")0 P9 f! Y8 C- }+ I% x( G: p
  1404.      (progn. G& G2 ^2 k4 G& {, }+ _; _4 u& v
  1405.              (setq b (polar a 0 (* TL 594)))* j3 D! a6 x0 s- k; E: q
  1406.                      (setq c (polar b (/ pi 2) (* TL 420)))
    ; Q  o3 O8 H1 m+ o, w4 ~* g
  1407.                      (setq d (polar a (/ pi 2) (* TL 420)))
    4 d5 s) c9 l; u& P  _
  1408.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 100)))))% B# o4 ], l! \# c! A
  1409.                      (setq f (polar e 0 (- (* TL 594) (* TL 20))))% T& z/ ?) q, v- `
  1410.                      (setq g (polar f (/ pi 2) (- (* TL 420) (* TL 20))))* T2 t* {2 M) J
  1411.                      (setq h (polar e (/ pi 2) (- (* TL 420) (* TL 20))))( m  ^' C$ ?" Z. y- b# ?
  1412.   (command "Pline" e f g h "c")            
    * f9 `7 a: G* I1 u6 L* L
  1413. (command "change" "last" "" "properties" "layer" "0" "")  s- U6 A4 p) o+ J( e' N6 K
  1414. (setvar "cecolor" "4")/ M1 U; B6 L& f
  1415.   (command "Pline" a b c d "c")" X! `0 \4 p* q) ^. l8 r
  1416. (command "change" "last" "" "properties" "layer" "defpoints" "")))& L# ~0 S* O7 Y! L, z
  1417. (if (= kho "3")! c3 f0 U+ l1 \/ [1 G
  1418.      (progn
    1 r; J* Z: O/ R, t8 q) k' t8 k
  1419.              (setq b (polar a 0 (* tl 420)))- q: w4 Z1 j1 n7 m. O$ a' s
  1420.                      (setq c (polar b (/ pi 2) (* TL 297)))' I9 ]6 P8 a" R& {
  1421.                      (setq d (polar a (/ pi 2) (* TL 297)))
    9 ^, |( }- O0 l- E9 E9 V6 J
  1422.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 100)))))- ]! g. S* l9 Y" `6 s4 v
  1423.                      (setq f (polar e 0 (- (* TL 420) (* TL 20))))
    " Q& N- I& E% e" M4 I3 o9 H
  1424.                      (setq g (polar f (/ pi 2) (- (* TL 297) (* TL 20))))3 \# j# M* l$ A' A4 J# N' f
  1425.                      (setq h (polar e (/ pi 2) (- (* TL 297) (* TL 20))))5 S3 }7 N$ |5 H7 [! b
  1426. (command "Pline" e f g h "c")
    1 w0 D9 h. o  }- Y4 B! o
  1427.   (command "change" "last" "" "properties" "layer" "0" "")
    + N" R  f! U8 A
  1428. (setvar "cecolor" "4")
      V2 e( ?. o- E3 @
  1429. (command "Pline" a b c d "c")$ X- U! z$ G5 _. C
  1430.   (command "change" "last" "" "properties" "layer" "defpoints" "")))- w( L5 p& c" M0 \- P& m+ V
  1431. (if (= kho "4")
    6 g; H5 p- N) j- k7 L& X
  1432.      (progn
    9 h1 O4 H2 P& s0 A) L. T
  1433.              (setq b (polar a 0 (* TL 297)))
    , E, z% c8 k; j7 y. ?% z
  1434.               (setq c (polar b (/ pi 2) (* TL 210)))
    2 R8 l3 [7 |+ o4 y; }
  1435.                      (setq d (polar a (/ pi 2) (* TL 210)))
    2 j! `) C( q0 ~. C; u8 t4 g
  1436.             (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 81)))))- N" E! j, \5 A* A, F9 k
  1437.                      (setq f (polar e 0 (- (* TL 297) (* TL 18))))
    / |4 U3 h0 K0 i" G/ N
  1438.                      (setq g (polar f (/ pi 2) (- (* TL 210) (* TL 18))))
    # v- F& Q# _: B4 p  D
  1439.                      (setq h (polar e (/ pi 2) (- (* TL 210) (* TL 18))))
    " n- b0 g1 J  O" X+ l( t
  1440.   (command "Pline" e f g h "c")            
    * \; @8 I! r1 [6 W3 v: b- t: a: d
  1441. (command "change" "last" "" "properties" "layer" "0" ""); g' Q: n2 W5 ^- B* e! w
  1442. (setvar "cecolor" "4")8 P' Y% l4 k$ T. j* z' P% \
  1443.   (command "Pline" a b c d "c")
      J6 d% _- c. Y+ C/ Z
  1444. (command "change" "last" "" "properties" "layer" "defpoints" "")))
    ' j0 C2 ^+ O( E* |
  1445. (mapcar 'setvar (list "CMDECHO" "OSMODE" "cecolor") oldlst)
    $ R4 y: x& X/ e- k" p2 T/ _; {
  1446. (command "undo" "e")/ ~3 o7 K* o3 v5 X, J2 _
  1447. (princ))2 M3 ~* [) \8 s& J+ v
  1448. ;=====================================================================! `! ]# ^" s; g5 v# Y. V' o
  1449. ;==================DAT KhoGiay Theo KHO GIAY BAN VE===================
    . ~2 h; h  I3 T; c* }
  1450. ;=====================================================================, k8 X$ ?" `/ k, G
  1451. 9 c: Q! m7 v4 v: G5 A( d
  1452. ;=====================================================================7 _. K" S# ?' i$ w
  1453. ;===================DAT Ti Le Theo KHO GIAY BAN VE====================
    % k: g/ l, @- U4 v5 @
  1454. ;=====================================================================
      x4 t3 Q9 C4 I7 ?
  1455. - H0 h% U' W$ M) j* c
  1456. (DEFUN C:SA6 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.1" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "5" ""
    8 r6 J$ ?" V/ S9 l) _( G" t& A
  1457.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.3" ""
    ( ]/ z( S/ Y& j" s) U
  1458.                                            "M" "MANH" "C" "9" "" "Lw" "0.1" ""; I* L9 S% ^) P' Y! [) |9 S
  1459.                                        "M" "TEXT" "C" "7" "" "Lw" "0.12" ""
    6 {. i2 k! N  Z' y$ f1 r' o
  1460.                                        "M" "DIM" "C" "1" "" "Lw" "0.12" ""& y* X6 j! V) E: S9 A$ W& Q  G
  1461.                                        "M" "THAY" "C" "7" "" "Lw" "0.2" ""8 m- w: U% h, c& v
  1462.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.12" ""/ d1 U% B8 H( y0 v( [
  1463.                                        "M" "HATCH" "C" "5" "" "Lw" "0.1" ""8 d% T6 Q5 G- G& {) A- G! V
  1464.                                        "M" "COT" "C" "1" "" "Lw" "0.3" ""
    % q0 R) r6 o: m' t4 r
  1465.                                        "M" "Defpoints" "C" "7" ""
    / ^2 k( F2 V) J5 A1 H
  1466.                                        "M" "0" "C" "3" "" "Lw" "0.12" ""6 }6 l3 @# A: y8 n
  1467.                                        "M" "CUA" "C" "6" "" "Lw" "0.12" ""
    4 c- G- }% E7 ]
  1468.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.12" ""
    . N0 Q8 G1 T0 f. g9 b! G; V
  1469.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.1" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "3" ""))5 ?  V' t0 z+ E' |" {& k
  1470. (DEFUN C:SA5 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.12" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "10" ""
    : b  ~) Q8 D8 u
  1471.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.4" ""
    5 Q# d) W3 }- s' C3 k
  1472.                                            "M" "MANH" "C" "9" "" "Lw" "0.12" ""4 o/ i% J2 G$ K+ b  N
  1473.                                        "M" "TEXT" "C" "7" "" "Lw" "0.12" ""1 d3 v6 I% z7 Y4 b
  1474.                                        "M" "DIM" "C" "1" "" "Lw" "0.2" ""
    " m+ ~+ N; b' k) q! T: P2 e6 L+ K
  1475.                                        "M" "THAY" "C" "7" "" "Lw" "0.2" ""3 o4 n/ y# H: D
  1476.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.2" ""
    2 I" B$ n8 c2 v4 m8 g# H5 A7 T
  1477.                                        "M" "HATCH" "C" "5" "" "Lw" "0.1" ""  ^  r5 G7 j) h: P6 C1 Q& y
  1478.                                        "M" "COT" "C" "1" "" "Lw" "0.4" ""& j" i5 G- C. M/ Z( D
  1479.                                        "M" "Defpoints" "C" "7" ""
    : e6 [" s" f% E7 r* [! v
  1480.                                        "M" "0" "C" "3" "" "Lw" "0.2" ""
    / |" O! {- _  ~( ]
  1481.                                        "M" "CUA" "C" "6" "" "Lw" "0.12" ""
    & l. B( G7 Y* o
  1482.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.12" ""
    ' u0 i- T4 s  r4 v- R$ l- {
  1483.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.15" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "5" ""))& D" b/ ?4 j) ^- _5 W( a
  1484. (DEFUN C:SA4 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.2" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "20" ""5 b3 Q6 V* V7 N
  1485.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.6" ""& T' g: s! m& I& A0 n1 o9 Q
  1486.                                            "M" "MANH" "C" "9" "" "Lw" "0.2" ""
    0 a. C- D* T: X9 S0 I8 k) R: H, J
  1487.                                        "M" "TEXT" "C" "7" "" "Lw" "0.2" ""- r2 W( X! I) U7 w" I9 g
  1488.                                        "M" "DIM" "C" "1" "" "Lw" "0.25" ""
    ' O+ d( _' R2 n# g) g! y0 _" J
  1489.                                        "M" "THAY" "C" "7" "" "Lw" "0.35" ""- {# d( g8 f" T' F) M9 t% q: S! K
  1490.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.25" ""0 K8 ~. w6 D7 h' M
  1491.                                        "M" "HATCH" "C" "5" "" "Lw" "0.15" ""$ C% \+ X( J& d
  1492.                                        "M" "COT" "C" "1" "" "Lw" "0.6" ""
    9 q* w, {3 j. m2 d  Q6 V% Q
  1493.                                        "M" "Defpoints" "C" "7" ""
    . S/ U# d. P2 V7 j- y4 [* b2 Z9 l/ j& l% Q
  1494.                                        "M" "0" "C" "3" "" "Lw" "0.25" ""
    * l0 D- [( ?$ k! J& e0 e- E- }
  1495.                                        "M" "CUA" "C" "6" "" "Lw" "0.25" ""
    2 w' ^0 S2 x/ s; t% M$ `0 K* V- O
  1496.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.25" ""! v: e$ f! V$ n5 k9 j
  1497.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.2" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "10" ""))
    , Y# p6 [+ X! e7 A
  1498.         
    3 e0 ^5 f9 W1 [) l7 X- p9 c
  1499. (DEFUN C:SA3 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.35" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "30" "": x7 h( Q) g; w- Z- z* w
  1500.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.7" ""+ S9 i" t: s( b3 S9 [3 C
  1501.                                            "M" "MANH" "C" "9" "" "Lw" "0.25" ""
    6 E, B& ]6 E/ S0 H( s
  1502.                                        "M" "TEXT" "C" "7" "" "Lw" "0.2" ""
    - m1 q* a( m  o8 W* \
  1503.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""
    " |' N* h8 A. I' i" T
  1504.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""* R+ y: o0 U% Z
  1505.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.25" ""
    , @8 R, l; I( n/ k  R
  1506.                                        "M" "HATCH" "C" "5" "" "Lw" "0.2" ""8 T6 H! j/ S* [8 g+ a5 ^
  1507.                                        "M" "COT" "C" "1" "" "Lw" "0.7" ""1 ?3 A2 Z, Q( i+ y' H* f& G
  1508.                                        "M" "Defpoints" "C" "7" ""
    ' j  @0 ^2 ?3 K+ W0 {* Q. l
  1509.                                        "M" "0" "C" "3" "" "Lw" "0.25" ""
    ; w. B3 A2 _2 j; O) i1 S) M  O1 n
  1510.                                        "M" "CUA" "C" "6" "" "Lw" "0.35" ""
    , \8 D& U9 N* e- X" W. v
  1511.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.3" ""
    2 o1 \8 w- s) I* ]3 n/ n, J+ [. u
  1512.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.25" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "20" ""))(PRINC)6 B3 j+ V- g/ d: L$ y

  1513. 1 V7 k0 G9 |$ u( K" C
  1514. (DEFUN C:SA2 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.35" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "45" ""
    9 ]( y2 E+ q% v/ X# O
  1515.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.7" "", \& S7 F. y0 r* J
  1516.                                            "M" "MANH" "C" "9" "" "Lw" "0.25" "". D. [" e, t% X$ N$ _
  1517.                                        "M" "TEXT" "C" "7" "" "Lw" "0.25" ""& u  y) m' R) g& e2 V
  1518.                                        "M" "DIM" "C" "1" "" "Lw" "0.3" ""
    9 U6 P  l- E8 R  q" W6 q
  1519.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""' H8 }$ T, e7 E
  1520.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.3" ""
    $ s( y$ m$ i7 O2 S* r! L
  1521.                                        "M" "HATCH" "C" "5" "" "Lw" "0.2" ""
    0 t+ ]! a6 e8 ^" U* @7 Y* B' T
  1522.                                        "M" "COT" "C" "1" "" "Lw" "0.7" ""
    . t: ^9 b! S4 V- a9 K8 e7 m
  1523.                                        "M" "Defpoints" "C" "7" ""8 Z- E; e( q% a6 A
  1524.                                        "M" "0" "C" "3" "" "Lw" "0.35" ""
    + W9 Z1 k$ G6 h: |" @0 s
  1525.                                        "M" "CUA" "C" "6" "" "Lw" "0.35" ""7 f3 a7 w7 b. K, R2 x4 \, a
  1526.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.3" ""
    3 [6 A; b; ~7 t5 Z4 k( N
  1527.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.25" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "30" ""))
    5 E! j* \+ K; ~6 I; {

  1528. 6 C. {6 s: c+ n1 M7 m* A+ d' u
  1529. (DEFUN C:SA1 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.4" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "60" ""7 r! T: V5 h$ d
  1530.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.85" ""
    8 e7 s$ R1 }& P
  1531.                                            "M" "MANH" "C" "9" "" "Lw" "0.35" ""
    # X& ~; v2 p" H3 ^7 o: y3 m3 z
  1532.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""$ o, Y; v: f( ~. r# E, K  t+ o% ~
  1533.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""
    9 x, [4 {6 t8 A3 C5 X# \8 c- w3 s
  1534.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" """ M3 i3 ]0 q% G' u! ?& P7 |5 w
  1535.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.35" ""5 ]5 s4 @8 A% H% l
  1536.                                        "M" "HATCH" "C" "5" "" "Lw" "0.25" ""
    ) J% }  L  N! F/ L
  1537.                                        "M" "COT" "C" "1" "" "Lw" "0.85" ""
    / U- c& [# ~- h' \7 H' B
  1538.                                        "M" "Defpoints" "C" "7" ""2 ^9 y4 |9 z, H# i: @( g
  1539.                                        "M" "0" "C" "3" "" "Lw" "0.35" ""
    . ~0 C9 R& z# B, W0 m& A6 R
  1540.                                        "M" "CUA" "C" "6" "" "Lw" "0.4" ""
    ( v, s+ K7 `3 J5 n; [2 s# w
  1541.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.35" ""* V" C" Y" d* k% `3 p0 H
  1542.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.3" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "40" ""))) V$ x7 U3 N; |5 _# O
  1543.         
    3 [5 I5 d. v0 h* o5 M3 f& ?( C7 B8 E9 R
  1544. (DEFUN C:SA0 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.5" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "85" ""! v" d' @& Z8 ^# _2 c
  1545.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "1" ""
      f* \9 a2 A: Z3 H; V6 D
  1546.                                            "M" "MANH" "C" "9" "" "Lw" "0.35" ""8 V- M% w$ l" h: N
  1547.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""
    2 [! b( Y' [( _  e
  1548.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""
    , h, y/ |+ c* b4 \. s! w. H
  1549.                                        "M" "THAY" "C" "7" "" "Lw" "0.5" ""
    3 w! \% {+ V* l9 p
  1550.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.4" ""- T1 A; j4 |9 P, ~  I% E6 R' a/ p
  1551.                                        "M" "HATCH" "C" "5" "" "Lw" "0.35" ""
    # `$ O3 a7 x( l/ {- m
  1552.                                        "M" "COT" "C" "1" "" "Lw" "0.1" ""
    ) F$ ~+ }1 \9 ~! Z$ F
  1553.                                        "M" "Defpoints" "C" "7" """ H, X* t$ m" B5 q
  1554.                                        "M" "0" "C" "3" "" "Lw" "0.5" ""
    9 j* i$ O; F* _& G' X- i
  1555.                                        "M" "CUA" "C" "6" "" "Lw" "0.5" ""
    " N; C1 ]( S* r5 i" |
  1556.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.4" ""+ Q- y0 H9 h+ b0 ?. t# s
  1557.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.35" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "55" ""))0 u: z( t9 K4 k/ s
  1558. (DEFUN C:O   () (COMMAND "OFFSET"))4 W7 Y1 Y6 z9 p7 p! B" u4 j5 X3 A, \( v
  1559. (defun c:s1 () (command "surftab1"))
    # G( A+ {9 S" Z, J* A
  1560. (defun c:s2 () (command "surftab2"))% B# w4 `# k! w0 g: [& l
  1561. (defun c:ep () (command "explode"))+ f1 {# B, R2 q% j" o2 h
  1562. (DEFUN C:QS () (COMMAND "AUDIT" "Y" "purge" "all" "*" "N" "QSAVE"))- R9 c' S6 v4 R$ x  v- l
  1563. (DEFUN C:QV   () (COMMAND "QSAVE"))+ @5 q. |- g+ B4 k/ d2 `* N* E
  1564. (DEFUN C:S    () (COMMAND "STRETCH" "C"))
    ( s. i: u8 Z: V

  1565. , H$ @) l5 j9 N2 L- t7 Q% j# O
  1566. ;************************** CAT DIM **************************
    5 I/ m, o& F1 {0 N1 C* O

  1567. / ]/ I" l! K  K
  1568. (DEFUN C:DC (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI PT13I PT14I
    2 M9 N4 |, I& E2 y1 I; P- Z% O
  1569.                 PT13N PT14N O13 O14 N13 N14 OSM OLDERR PT10 PT11), I5 d: c2 B1 n6 V/ b5 x
  1570. (SETQ CMD (GETVAR "CMDECHO"))
    9 B$ c: T4 H; X
  1571. (SETQ OSM (GETVAR "OSMODE")): w7 b5 g4 x/ S: S4 g: d
  1572. (SETQ OLDERR *error*( ?' ^( B2 B( v* V0 Q5 v6 l
  1573.       *error* myerror)
    1 s7 y2 W& M- K9 w' B* p" t
  1574. (PRINC "Please select dimension object!")
    . h" L4 x: ?$ x/ B
  1575. (SETQ SS (SSGET))2 ^3 i- S1 K, d9 X( r+ ?
  1576. (SETVAR "CMDECHO" 0)
    + U& j+ H* u- ]* h/ F5 z; A
  1577. (SETQ PT (GETPOINT "Point to trim or extend:"))8 F- `, Z+ b" D
  1578. (SETQ PT (TRANS PT 1 0))
    6 \0 ^5 f: |! [  ]. a
  1579. (COMMAND "UCS" "W"). m7 _9 g, R0 g! q# B
  1580. (SETQ LTH (SSLENGTH SS))6 u& }+ m( U& R* n% P
  1581. (SETQ DEM 0)
    ' c2 q* B  H6 @7 B! [( }
  1582. (WHILE (< DEM LTH)
    4 \  f9 W% h' G8 a, v- X) b& A
  1583.     (PROGN( K. S3 u  U; r
  1584.         (SETQ DS (ENTGET (SSNAME SS DEM)))
    6 j& s5 V  o  m" U
  1585.         (SETQ KDL (CDR (ASSOC 0 DS))). ]9 ~& m+ X  z  G1 S6 z
  1586.         (IF (= "DIMENSION" KDL)/ x: K+ h' V& Z) x
  1587.            (PROGN4 E/ ?' F! }& X7 l2 b
  1588.                 (SETQ PT10 (CDR (ASSOC 10 DS)))
    , |% q" k7 x/ u7 Y; s
  1589.                 (SETQ PT11 (CDR (ASSOC 11 DS))); a: c! M) f* {( O; s/ O( |) }% ?
  1590.                 (SETQ PT13 (CDR (ASSOC 13 DS)))
    2 M9 Z, \; q! H
  1591.                 (SETQ PT14 (CDR (ASSOC 14 DS)))% x9 i4 P- p3 Y! Q/ x! E3 w( Q
  1592.                 (SETQ N70 (CDR (ASSOC 70 DS)))
    ; }+ A% D: _2 p) q8 [. y
  1593.                 (IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))
    & n" a1 s+ z9 y, V, |
  1594.                    (PROGN
    + j6 J5 ?% u; J
  1595.                         (SETQ GOCY (ANGLE PT10 PT14))/ ?' P7 n. \/ R8 j- U/ [
  1596.                         (SETQ GOCX (+ GOCY (/ PI 2)))
    + W) ~3 a8 w6 B2 k5 h3 k. v
  1597.                    )
    ( g5 M  b. f! M4 p2 F6 ?
  1598.                 )& I, H' m+ u1 H' V+ }
  1599.                 (SETVAR "OSMODE" 0), f0 s. [% t/ Z# C, o
  1600.                 (SETQ PTI (POLAR PT GOCX 2))
    / z* n/ r% g& j* ^) Y& @; ]
  1601.                 (SETQ PT13I (POLAR PT13 GOCY 2))
    . X6 |3 ]$ I# m5 o* ~
  1602.                 (SETQ PT14I (POLAR PT14 GOCY 2))
    ' S( e- ^( b9 B
  1603.                 (SETQ PT13N (INTERS PT PTI PT13 PT13I NIL))
    1 q  m5 y9 ?3 m6 a5 n$ c4 Q
  1604.                 (SETQ PT14N (INTERS PT PTI PT14 PT14I NIL))6 e/ _  y, y% u$ v& a7 L. U% G
  1605.                 (SETQ O13 (ASSOC 13 DS))
    2 t$ Q9 }, o! Z8 q* ?$ |
  1606.                 (SETQ O14 (ASSOC 14 DS))
    1 u; U# {2 j% [& _* ^+ ^7 e
  1607.                 (SETQ N13 (CONS 13 PT13N))) V) V# s3 G5 G/ d& @+ d2 n9 x
  1608.                 (SETQ N14 (CONS 14 PT14N))
    3 M& m& X5 {1 m
  1609.                 (SETQ DS (SUBST N13 O13 DS))" B) U4 P3 [2 s' s8 M' U6 C  _$ b
  1610.                 (SETQ DS (SUBST N14 O14 DS))8 k  z! t5 J8 L
  1611.                 (ENTMOD DS)/ q- h6 r6 L' |! h; x$ r
  1612.            )' Z, g$ K3 [) c+ R" F, B1 D
  1613.         ); ?# ^! N- K( W3 I1 [
  1614.         (SETQ DEM (+ DEM 1))/ X/ @4 p! f! U; S4 s" K
  1615.     )
    , Y+ z+ M* ]6 o0 G. T/ G
  1616. )( v; r; \. u' U  O# z$ G8 E6 |+ M/ V) l
  1617. (COMMAND "UCS" "P"): B; `, M4 `- q- D2 y  j
  1618. (SETVAR "CMDECHO" CMD)
      B# h" O' s* i& d0 {1 {
  1619. (SETVAR "OSMODE" OSM)( q! h0 n* o4 o% E( T+ \( M
  1620. (setq *error* OLDERR)               ; Restore old *error* handler) m9 Q. x+ r6 X
  1621. (PRINC)9 `% G8 ]6 L. R
  1622. )
    2 E$ T6 v- [1 e1 u

  1623. ; f/ _# }5 i' n! Z- A
  1624. (DEFUN C:BD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI) A) x& z1 Y6 l/ |3 H% `
  1625.                 PT10 PT10I PT10N O10 N10 PT11 PT11N O11 N11 KC OSM OLDERR)4 u5 P) m+ `* H0 s0 W* \
  1626. (SETQ CMD (GETVAR "CMDECHO"))' H9 A2 G( R# y7 D, N3 ]! I" u
  1627. (SETQ OSM (GETVAR "OSMODE"))
    1 s* K2 {* R" ?! l! E" x  {
  1628. (SETQ OLDERR *error*, F0 T  W. V# t
  1629.       *error* myerror)
    - c# l5 E2 ^4 r, T' p3 p
  1630. (PRINC "Please select dimension object!"). m$ o9 {# [! E* ?$ m2 H, |8 {2 [& U
  1631. (SETQ SS (SSGET))9 D& y/ L4 p! f) J
  1632. (SETVAR "CMDECHO" 0)
    6 z+ R+ v& p: {7 C# V0 t: l
  1633. (SETQ PT (GETPOINT "Point to trim or extend:"))
      a6 f" b- h& G# r1 y$ x
  1634. (SETQ PT (TRANS PT 1 0))
    - {/ B% {* q3 t3 H- `
  1635. (COMMAND "UCS" "W")
    3 L, e0 _' E) ^8 b- U: b7 W. y
  1636. (SETQ LTH (SSLENGTH SS)). K% P. k4 U; ~4 _) t9 r# p
  1637. (SETQ DEM 0)+ b" S6 E& u8 p4 o2 j. `4 N3 C2 g5 h! c
  1638. (WHILE (< DEM LTH)
    / O- s! C! |8 ]
  1639.     (PROGN2 r+ x$ |  I# o
  1640.         (SETQ DS (ENTGET (SSNAME SS DEM)))
    , J! V. d1 }  t  {( N* ~6 H! s
  1641.         (SETQ KDL (CDR (ASSOC 0 DS)))
    & Y9 O  y6 x" A1 q: J
  1642.         (IF (= "DIMENSION" KDL)
    % z' `. e3 p8 G6 T, |
  1643.            (PROGN
    3 k8 y( y" o) \
  1644.                 (SETQ PT13 (CDR (ASSOC 13 DS)))
    8 C& Y& F1 Y. M
  1645.                 (SETQ PT14 (CDR (ASSOC 14 DS))), R. u! P( q( I5 n
  1646.                 (SETQ PT10 (CDR (ASSOC 10 DS)))
    . ?! y  l. u7 N1 U6 m( s. z
  1647.                 (SETQ PT11 (CDR (ASSOC 11 DS)))& g$ }% m, |( o# R7 ?& }
  1648.                 (SETQ N70 (CDR (ASSOC 70 DS)))& g( t7 _  i) w
  1649.                 (IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))/ u- Q0 ]$ o+ n3 z% O
  1650.                    (PROGN
      L' l$ j+ g; @! W5 c  ]
  1651.                         (SETQ GOCY (ANGLE PT10 PT14))
    " a+ o$ \9 e# Y1 B( l7 n- e! q
  1652.                         (SETQ GOCX (+ GOCY (/ PI 2)))
    * u4 J3 y8 D% x' L
  1653.                    )" B2 s! w7 t; o' N4 C
  1654.                 )/ G6 F9 G# ]* Q& ^" V, I  C7 w
  1655.                 (SETVAR "OSMODE" 0)0 N& t) V$ v$ `9 N& x
  1656.                 (SETQ PTI (POLAR PT GOCX 2))
    2 ^. [* N8 h; ^* M8 t& ?
  1657.                 (SETQ PT10I (POLAR PT10 GOCY 2))! f, v1 s! j! U4 N! N# @1 D  _! t
  1658.                 (SETQ PT10N (INTERS PT PTI PT10 PT10I NIL))% R! ]! J% m+ p/ d' j& E
  1659.                 (SETQ KC (DISTANCE PT10 PT10N))
    : H) D) }% ^( M) G$ r$ l
  1660.                 (SETQ O10 (ASSOC 10 DS))
    ; t. A1 r" P7 e$ `6 S
  1661.                 (SETQ N10 (CONS 10 PT10N))
      o! ]  N/ L. @) X" ~
  1662.                 (SETQ DS (SUBST N10 O10 DS))
    0 d3 p$ H0 J: l' v/ r3 n3 K) ~
  1663.                 (SETQ PT11N (POLAR PT11 (ANGLE PT10 PT10N) KC))
    4 S1 ?* A% V/ `1 u
  1664.                 (SETQ O11 (ASSOC 11 DS))
    + h  K0 v9 y) ?" m, c; s- y7 f
  1665.                 (SETQ N11 (CONS 11 PT11N))
    ( l/ m6 \$ H* d4 T. `- x9 X
  1666.                 (SETQ DS (SUBST N11 O11 DS))
    6 v0 Y# Q+ g; M1 d; f
  1667.                 (ENTMOD DS), h5 u( S$ Y/ J# C3 m2 j9 B( n
  1668.            )( d/ m, e  |; ]6 L
  1669.         )3 g" Z8 D4 z5 _. ~7 V2 r
  1670.         (SETQ DEM (+ DEM 1))8 Z2 _6 n+ e( S4 S7 ]% u
  1671.     )
    + A. C4 h" \- @0 t! y! g+ ^  u
  1672. )
    ( ^9 P* i6 ?! [# ?: s4 q
  1673. (COMMAND "UCS" "P")2 K: U( j* T! s3 ~( b
  1674. (SETVAR "CMDECHO" CMD)
      i, @/ ]. f; e; i& j
  1675. (SETVAR "OSMODE" OSM)+ l: b' D+ L) k6 z2 _( [" }
  1676. (setq *error* OLDERR)
    - ?! }  K& Z# }5 L; R; }
  1677. (PRINC)! I' ^3 h9 n# e" M7 I) H1 Q9 i
  1678. )- y2 f6 ]9 V. X$ A( T/ _, l
  1679. 1 B9 E4 C$ I; _7 O
  1680. ;;; ================ BAT - TAT CHE DO GACH CHAN TEXT (TU) =================
    + D7 h: n/ i8 F; o' x7 m0 y
  1681. 3 O4 d3 a4 `2 f7 s* b) W8 x
  1682. (defun c:tu ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can gach chan ")' X7 W+ O  [7 G/ y
  1683.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")
    / t8 \* K7 _9 J) v& t( }
  1684.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    ! i- S( {9 v0 D) E% ]8 ]
  1685.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))
    - S  W+ w" Y  `/ h  l' U6 f
  1686.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%u")) I! C# ^9 ^! H( {6 ^( n: p
  1687.         (= testxt "%%U"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%u" txttxt)))
    9 S4 a$ ^0 h  y5 c2 U
  1688.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))6 g4 l5 M0 ]! I9 ?8 g1 b9 }( L
  1689.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))! g1 w1 U; b9 o5 E9 i" V
  1690. 8 P4 o8 o2 n! O; e( N
  1691. ;;; ================ CHEN COT (TUU) =================' U/ M- m5 g) D# r+ C
  1692. ( G  t* y& C$ m
  1693. (defun c:tuu ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can chen cot ")
    5 B8 c4 ^/ A' W& q5 F" t
  1694.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")$ R* ~! K# r9 h6 E3 Q6 E
  1695.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt- b: g- X! T1 f; T1 v
  1696.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))
    . o7 ]  R' f& @6 V- {
  1697.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%p 0,000")8 P- e* W+ ^9 b% Z: m4 G8 Q
  1698.         (= testxt "%%P 0,000"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%P 0,000" txttxt)))
    ) j; P1 z, e- B* N; ]- ?8 |
  1699.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt))). u; H: L2 @0 G- }+ V
  1700.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))2 C3 j$ v6 M9 s3 y- k) G0 D
  1701. , z1 P5 [+ c# o
  1702. ;;; ================ CHEN KY HIEU THEP (TP) =================6 V; o+ B+ B; W4 R6 c

  1703. 6 T  e! f0 @) K" R
  1704. (defun c:tp ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can chen ky hieu thep ")' v: _1 c( G) C0 s2 [
  1705.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")
    8 y! n* u9 i- z
  1706.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    6 Q1 z" O3 i+ w6 _  s
  1707.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))$ A3 o8 [2 F$ [
  1708.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%c")+ t5 p  Z: w6 u3 n
  1709.         (= testxt "%%C"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%c" txttxt)))1 M9 z4 v0 x3 H. o5 |
  1710.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))( g/ ?9 I& d- e) X9 K2 e
  1711.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    2 X% `1 D( P# T2 t. V! s

  1712. ! ~0 S2 N  G6 T3 `" G" \
  1713. ;=========================== TAM TUONG (TAM) =================================, }! J) s; y; M

  1714. & e- z! g+ y1 Y/ J' C
  1715. (defun c:tam(/ data_m)- i- C9 N- e/ B9 Z. H0 L8 k
  1716.             (defun import_data(/ i)(setq data_m (ssget))(if (= nil distan_m) (setq distan_m 110.0)). a8 d/ c6 w) J( {  ^
  1717.             (princ "Distance (")(princ distan_m)(princ "):")(setq i (getreal ))(if (not (= nil i))4 \, R0 m. X" D" I9 B4 L9 Q
  1718.         (setq distan_m i)))(defun process(/ ent check)(defun p_check()(setq check 0)
    4 q6 L6 N6 f2 h' ^6 T
  1719.         (if (= "LINE" (cdr (assoc 0 ent))) (setq check 1))(princ))(defun p_d_offset5 R/ z  F. J* B: z- v
  1720.         (/ p1 p2 p3 p4)(defun makeline(/ e2 e5)(setq la (list (cons 0 "LINE")(cons 5 (cdr
      U& L9 k# y2 e9 c1 f: {$ K
  1721.         (assoc 5 ent)))(cons 8 (cdr (assoc 8 ent)))(cons 10 p3)(cons 11 p4)))(entmake la)(princ); S2 j0 U) ?" h- l" [5 k0 J3 d
  1722.         )(setq p1 (cdr (assoc 10 ent)) p2 (cdr (assoc 11 ent)))(if (not (= p1 p2)) (progn (if
    0 k! W, i, Q3 Q2 e; V5 l* O
  1723.         (< (abs (- (nth 0 p1) (nth 0 p2))) 0.000001) (progn (setq p3 (list (+ (nth 0 p1)
    . ^# s2 \% ~1 h+ P# q. L
  1724.         distan_m) (nth 1 p1) (nth 2 p1)))(setq p4 (list (+ (nth 0 p2) distan_m)(nth 1 p2)1 @% M8 Z+ y; }0 p( Q; z2 ?9 K
  1725.         (nth 2 p2))) (makeline) (setq p3 (list (- (nth 0 p1) distan_m) (nth 1 p1) (nth 2 p1)))
    $ D- a! Q2 l. }# ]* C$ c: h+ ]
  1726.         (setq p4 (list (- (nth 0 p2) distan_m) (nth 1 p2) (nth 2 p2))) (makeline)))(if (<( w% y- Z) ~8 K& [
  1727.         (abs (- (nth 1 p1) (nth 1 p2))) 0.000001) (progn (setq p3 (list (nth 0 p1) (+ (nth 1 p1)
    . S5 U- f  ?6 r% E3 z3 y5 I0 H
  1728.         distan_m) (nth 2 p1)))(setq p4 (list (nth 0 p2) (+ (nth 1 p2) distan_m) (nth 2 p2))); H0 p7 C4 `. I2 q
  1729.         (makeline) (setq p3 (list (nth 0 p1) (- (nth 1 p1) distan_m) (nth 2 p1))) (setq p46 A2 u( y9 K( T6 E
  1730.         (list (nth 0 p2) (- (nth 1 p2) distan_m) (nth 2 p2)))(makeline)))))(princ))(if (not8 l# F; n0 ?) j. _4 x& _
  1731.         (= nil data_m)) (progn (setq i 0)(while (< i (sslength data_m)) (progn(setq ent (entget+ P9 |2 @% i, i0 \/ J9 }
  1732.         (ssname data_m i)))(p_check)(if (= 1 check) (p_d_offset))(setq i (+ i 1))))))(princ))) g4 s0 x" t& i0 _
  1733.           (import_data)(ai_undo_push)(process)(ai_undo_pop)(princ))
    2 o# H7 T. G0 C4 O. v

  1734. 3 x0 o; F( P8 s* I3 d: p/ F
  1735. ;============ GHI CHU PHI (T1) ================
    # X" X' c' A0 p8 `  S

  1736. 6 c' a: d/ P& I( A/ o+ ~- u; [% d6 n& q$ h
  1737. (defun c:DuongDan ()(setq D1 (getpoint " Diem thu nhat: "))(setq D2 (getpoint "Diem thu hai: " D1))- H0 y" R& ?8 n/ s7 x" {+ U
  1738.           (if (> (car D2) (car D1)) (setq D3 (polar D2 0 16)))(if (< (car D2) (car D1)) (setq D3
    1 n$ Z8 t+ A! l8 ?
  1739.         (polar D2 PI 16)))(if (= (car D2) (car D1)) (setq D3 (polar D2 0 16)))(if (> (car D2)& G, t5 ]0 h5 {; {' D$ [1 |
  1740.         (car D1)) (setq D4 (polar D3 0 3.2)))(if (< (car D2)(car D1))(setq D4 (polar D3 PI 3.2)
    / @0 b  Q; b, h2 Z3 h
  1741.         ))(if (= (car D2) (car D1)) (setq D4 (polar D3 0 3.2)))(if (> (car D2) (car D1))$ V& \! i. ]( l, {8 b8 E9 K/ {
  1742.         (setq D5 (polar D2 (/ PI 9) 3)))(if (< (car D2) (car D1)) (setq D5 (polar D3 (/ PI 9)2 s3 [, h: f% I5 g4 M% L' @
  1743.         3)))(if (= (car D2) (car D1)) (setq D5 (polar D2 (/ PI 9) 3)))(command "color" 1)4 ^; \4 p$ a; _' _
  1744.           (command "line" D1 D2 D3 "")(command "circle" D4 "3.5")(command "color" 7 )
    ! [# R2 y3 P6 q" {9 }* Y
  1745.           (command "text" "m" D4 2.5 0 "1")(command "text" D5 2.5 0 "%%c6a150")
    ' K+ v5 w. _, h7 l
  1746.           (command "ddedit" pause))" u% M: Y# l( Q( D

  1747. & H/ y$ A* M4 E/ d# x. _
  1748. ;;; ========================== Join (J) =================
    ' g. A, `7 R% z2 c6 I
  1749. & \. j7 r% ~; Q
  1750. (defun C:J () (Setvar "cmdecho" 0)(setq m:err *error* *error* *merrmsg*)(setq sset (ssget))) b/ x5 T' ~& h6 n' |
  1751.            (if (null sset) (exit))(setq kt (getstring "\nJoin all (Y/N) <Y> ? "))
    # _( T4 R$ R" @# G
  1752.           (setq ssl (sslength sset))(setq temp  (entget (ssname sset 0))etype (cdr (assoc 0 temp)
    6 @0 K% D$ p; s( E8 r
  1753.         ))(cond((or (= kt "Y") (= kt "y") (= kt ""))(progn (cond((= etype "POLYLINE")! [3 b6 ?  c  D0 ^
  1754.         (COMMAND "PEDIT" sset "J" "all" "" ""))(if (or (= etype "LINE") (= etype "ARC"))
    3 S& A# t* D+ [4 Y2 U/ F
  1755.            (COMMAND "PEDIT" sset "" "J" "all" "" "")))))((or (/= kt "Y") (/= kt "y") (/= kt ""))
    4 \& A$ t/ k, R. y
  1756.         (progn (cond((= etype "POLYLINE")(COMMAND "PEDIT" sset "J" sset "" ""))  0 G- [1 I3 h( r5 U* ]
  1757.            (if (or (= etype "LINE") (= etype "ARC"))(COMMAND "PEDIT" sset "" "J" sset "" ""))))))# z, i9 J) R1 b$ b, F) b1 b
  1758.           (setq *error* m:err m:err nil)(princ))
    8 o* F( n  u. s2 j- Q0 Q. ~

  1759. % V6 O) U" e2 T
  1760. ;=====================================================================: G" N$ O- r) ?- k: D
  1761. ;;; DOOR.LSP 1.0, Copyright (C) 1998 by CAD Department, HUCE.9 ?- K8 D0 q; F. d+ {( w# Y
  1762. ;=====================================================================( T8 t" h. B, Q
  1763. " T6 F2 i+ Y4 _( `/ }# w
  1764. (defun C:D1 (/ p1 p2 p3 p4 side dis wid ang angsile old)( i; }/ k9 Z$ _: ?5 w) `; x
  1765. (setq old (getvar "OSMODE")) # W4 ]8 \2 p2 f
  1766. , D, f. r) p0 c8 m% {3 o' e; x
  1767. (setq p1 (getpoint "\nStart point:"))5 b9 h2 y6 w4 b
  1768. (setq p2 (getpoint p1 "\nEnd point:"))6 y, M0 S+ W3 q( \+ m- ?
  1769. (setq side (getpoint p2 "\nOpen side"))
    5 b$ S1 [) F2 o/ I) ]  k2 e
  1770. ' N0 C3 i9 Z9 r  w
  1771. (setq dis (distance p1 p2))
    1 r+ g- D1 K( ~) p2 z
  1772. (setq ang (angle p1 p2))
    + o9 u. E( ]  p3 t( B
  1773. (if (< ang (angle p1 side))
    8 K, K8 X" G: [; P
  1774.   (setq angside    (/ pi 2) )
    ( {% I6 y) p( L9 j7 @
  1775.   (setq angside (- (/ pi 2)))
    7 b6 u* T- S; @& W/ ]
  1776. )
    ( ?, [! i& n6 w# D
  1777. (if  (>= (- (angle p1 side) ang) pi)
    1 d9 c: x/ u0 m
  1778.   (setq angside (- (/ pi 2)))
    , n8 M0 f* t  g7 j, s
  1779. )
    7 k/ c6 M9 `/ M6 H2 h' A# ?
  1780. (if  (>= (- ANG (angle p1 side) ) pi)  i6 j+ n8 ?: `: F) _
  1781.   (setq angside (/ pi 2))' o6 g$ `; |$ @2 W/ g* \1 C/ s$ T' O
  1782. )
    1 J& ^. s2 w- Y# i

  1783. 0 c+ A7 X' a. }" e
  1784. (setq p3 (polar p2 (+ ang angside) dis) )+ w3 e; |; ^4 J& E
  1785. (setq p4 (polar p1 (+ ang angside) dis) )' f' C' ]5 y5 i3 O
  1786. (setq wid (/ dis 15))' W# t# \* z) p; C) m- k

  1787. , Z% R' A7 c+ \# l1 v1 W0 A, Z
  1788. (setvar "OSMODE" 0)
    ! G6 n( Q& h8 i
  1789. 3 Y0 o& ^1 l- v3 Z% O* `  r
  1790. (command "PLINE" p1 "A" "D" p4 p3 "L" p2
    9 r- o" z' a6 |" f
  1791.                   (polar p2 (+ ang pi) wid)
    8 ?% m, A7 ~/ |% f' P' h" L; _3 ^
  1792.                   (polar p3 (+ ang pi) wid)
    " ~  b4 B  p' l' g6 T6 s1 S7 \
  1793. "")
    9 b% X- ^" e+ V+ m# d9 G8 ], a

  1794. . M: n. a6 m/ R# g% w
  1795. (setvar "OSMODE" old); B& }0 w6 A3 T2 k2 J; r
  1796. (princ)
    ! ?& g1 |; o/ Z7 I! E( ?
  1797. )* L, M+ x3 i  _5 ]% z
  1798. ( g( `3 w. z8 ]# R* L
  1799. ;=====================================================================
    + \% ]- ]6 ]3 m" X

  1800. 3 o/ [: |9 q2 `, a: X. x: l& h; {
  1801. (defun C:D2 (/ p1 p2 p3 p4 side dis wid ang angsile old)
    * @5 Q) p. ~  X3 g  D
  1802. (defun cua1 (pt1 pt2)0 V# @- {4 r, C8 R1 ]
  1803.   (setq p1 pt1% q1 q  A  e( q2 \8 Z- |
  1804.         p2 pt2)
    . f2 ]) T6 s$ o4 N  _# ]/ y
  1805. ) I& n+ {  W$ W# W3 _$ X! i$ j' `, X+ I, E
  1806.   (setq ang (angle p1 p2))
    ! o8 E/ I9 x4 y) ]. A
  1807.   (if (< ang (angle p1 side))7 l6 }$ W. ^* J3 g$ q
  1808.    (setq angside    (/ pi 2) )% _' I# R7 x7 y4 d9 H
  1809.    (setq angside (- (/ pi 2)))2 f9 v0 }4 ]. N4 b: l! C) Y. c
  1810.   )1 C( ~2 S% L$ K% U8 e9 j7 s
  1811.   (if  (>= (- (angle p1 side) ang) pi)
    5 o2 ?! }: D; \8 a: O2 ?( [
  1812.    (setq angside (- (/ pi 2)))8 O+ L/ N5 T6 I6 F" s
  1813.   ): A) [8 e' Q  d& ]  b5 S
  1814.   (if  (>= (- ANG (angle p1 side) ) pi)% H+ z3 z+ g, _$ h# Z
  1815.    (setq angside (/ pi 2))( y* J" x+ {% R4 Z
  1816.   )" c2 Q7 L, g. s6 D5 t
  1817. % [3 [/ |" ~& S
  1818.   (setq p3 (polar p2 (+ ang angside) dis) )+ `, m$ w& k2 ]: A
  1819.   (setq p4 (polar p1 (+ ang angside) dis) )
    + O& P* t  _- I$ L, {. M  l2 h2 K
  1820.   (setq wid (/ dis 15))" z& t- U+ S) ?) _6 s/ C$ j  c

  1821. : s% {$ E) T$ L6 U% v
  1822.   (command "PLINE" p1 "A" "D" p4 p3 "L" p2 # G: a) |) x( Y6 d
  1823.                    (polar p2 (+ ang pi) wid)
    7 i% W; N; i# J5 L. Y7 z/ h
  1824.                    (polar p3 (+ ang pi) wid) : l* g0 r* m, w2 Z# l" F
  1825.   "")$ o. ~, K0 ~8 i/ g
  1826. )
    2 b8 O9 I2 X  ]9 ^; L- ^5 H4 A6 H
  1827. ;=====================================================================
    , Z  z. U! s7 @
  1828. (setq old (getvar "OSMODE"))
    # D- e( @4 z- i# w  ]5 o
  1829. # }5 o6 B' e! d: v8 j3 a; s( `
  1830. (setq p1 (getpoint "\nStart point:"))
    5 E) F' Y; ?; I: _3 U
  1831. (setq p2 (getpoint p1 "\nEnd point:"))
    0 O4 M3 y3 s3 [, [2 F
  1832. (setq side (getpoint p2 "\nOpen side"))
    - }" k# r: \2 W7 x2 [
  1833. % c! L! n* r% O
  1834. (setq dis (distance p1 p2))
    / W2 }3 h; n* n- c- _
  1835. (setq dis (/ dis 2))# n- X8 f4 r) e/ u" o

  1836. ; [; O0 d* U9 U6 M
  1837. (setvar "OSMODE" 0)/ e- W: h$ j) n
  1838.   O# ~) a* Z, j
  1839. (setq p1 (polar p1 (angle p1 p2) dis))
    5 x8 o  k# D) G
  1840. (cua1 p1 p2)  1 \9 {, j6 h( U, Q- o3 _3 u
  1841.   m- T" v# m+ c- y  b' N  ]1 b
  1842. (setq ang (+ ang pi)), q9 a( |9 ]" Q$ z* a+ y
  1843. (setq p2 (polar p1 ang dis))* U' i+ m$ ]! a* H9 H2 J0 t
  1844. ; (setq side (polar p1 () dis)): f; p: R9 G" ^1 J- b" Q
  1845. (cua1 p1 p2)  
    , [1 x5 |: N$ }1 c( t. b$ d1 n% E

  1846. 8 }, `, ]8 ]* p9 J' _% G& |: y
  1847. (setvar "OSMODE" old)  w( N- o, w1 @5 W2 o0 @
  1848. (princ)
    % j( ?. H, v3 O6 t) [# Q0 z6 O8 ^
  1849. )/ a( @9 r) |* W9 v( n) W

  1850. 9 h# v; e! \5 N' S  B, U& O2 L
  1851. ;=====================================================================7 q8 r) B+ V. h2 }5 V4 U; a
  1852. ;"Glue" text strings.  All adopt first's properties.; ^& I8 ?- _1 E* ^$ N, X
  1853. ;        Author:& n3 ^) N# E* J
  1854. ;                Henry C. Francis
    ! J- \& C# z. }5 u8 V+ j
  1855. ;                425 N. Ashe St.* l: Z: H3 v. ]2 i
  1856. ;                Southern Pines, NC 28387, L, F' k' [6 D: ~
  1857. ;        http://www.pinehurst.net/~pfrancis
    / L1 h( d8 X& b: p# G
  1858. ;        e-mail hfrancis@pinehurst.net
    * a/ E! ^& g4 X' k
  1859. ;        All rights reserved.) o3 D" O3 |" G  a8 \
  1860. (defun c:gst ( / ename ent1 ent2 old1 oldsl old10 old11 old40 old50 newstr newsl new1 new10 new11), J6 G$ `( u6 Z8 p$ I+ \- j
  1861. (while
    1 U' F& F4 ^0 g4 C1 G- t; I. K6 J
  1862.   (not
    : w, k- b( r8 L$ ?/ {
  1863.     (and* Y! T8 f& ?8 w" H/ ?1 H  {4 G/ ~
  1864.       (setq ename1 (car(entsel "\nSelect first text string to join: ")))
    0 h0 ^5 b" F1 l* `2 T
  1865.       (setq ent1 (entget ename1))# s5 `, K- z; t3 |& O9 B  P
  1866.       (eq(cdr(assoc 0 ent1))"TEXT")
    . c, |+ W* i5 z0 L- k0 `0 H7 L
  1867.     );and
    ! U5 {/ S3 A4 n7 u( `, o$ N: Q
  1868.   );not" O4 y5 `$ w( s* r
  1869. );while, G! _* |( L; l  v
  1870. (setq old1 (cdr(assoc 1 ent1)))
    " t- z; n& G, t. |" o/ N
  1871. (while
      \5 i* y! |2 ^8 D" o
  1872.   (not/ g8 w2 g$ X* Z9 K6 p% u
  1873.     (and
    ! x/ j  Z! L5 z9 c& k4 ]# J  B' l
  1874.       (setq ename2 (car(entsel "\nSelect second text string to join: "))). n) }8 E8 T7 C- a
  1875.       (setq ent2 (entget ename2))8 C+ I7 w/ `0 c" I- j
  1876.       (eq(cdr(assoc 0 ent2))"TEXT")  J! D5 n; V! T7 f8 L
  1877.       (not(eq ename1 ename2))
    : J- l3 ^' J# {
  1878.     );and
    ' T) J) ^2 |2 C: {" K6 r/ m
  1879.   );not6 O% D$ W0 h7 M6 ]1 o
  1880. );while" c- {+ g5 Y; ~5 n
  1881. (setq old2 (cdr(assoc 1 ent2)))
    4 O, h7 q; Y$ ?1 x4 }- V
  1882. (setq new1 (strcat old1 " " old2)
    & J" Q1 P2 k$ g+ N# o, v% f
  1883.       ent1
    & H- Y6 v/ ^. C7 \
  1884.         (subst (cons 1 new1)0 \# A( l! |# p& q4 q
  1885.                (assoc 1 ent1)
    % Q2 d8 S" ~% R
  1886.                ent1)
    " t4 L3 d0 t& u) ^2 q, T
  1887. );setq
    . U3 l+ `$ d; z5 [+ O* R7 \. T
  1888. (entmod ent1)
    & p6 \6 u" }8 `, Q
  1889. (entdel ename2). H  v* J+ y6 ]3 A# J3 X
  1890. (princ)* L! w7 q2 n( B, \5 l6 F
  1891. );defun
    7 K1 ~5 o+ m- C; Y% _5 s
  1892. % z" r9 H% d1 R9 z1 ~6 `2 m
  1893. ;=====================================================================
    . Y- R! Z2 m6 {4 h( w( G+ H
  1894. # a6 m& U0 j( ?% Y* u5 A# f
  1895. (defun c:nt (/ g1 g2 ss1 olderr nterr l i temp e1 e2 new old dd dc)
    ! H9 p! W4 c  G2 H

  1896. % t! j4 H4 j) @. d  o  ?
  1897.     (defun nterr (s)9 U: j; `' e# K  X
  1898.         (command "_.UCS" "" "_.UNDO" "E")
    ' B7 J7 f" S/ J9 L- Z7 r4 y
  1899.         (setvar "cmdecho" 1)
    ! |* m8 u: f' B: G8 c7 `+ j
  1900.         (setvar "blipmode" 0)
    + v9 ?! ]/ V9 G
  1901.         (setq *error* olderr). p+ E* i$ D: }& W4 t. q
  1902.         (setq g1 nil g2 nil ss1 nil e1 nil e2 nil olderr nil 0 e, g  ]+ ?/ E& Y" _- i7 d
  1903.                 nterr nil temp nil i nil l nil new nil old nil dd nil dc nil)! H. q0 F* f$ K( P
  1904.         (princ)
    : ~! Y; I" V) Z. r& r$ |& w
  1905.     )7 x8 o/ g8 {. M+ o! N

  1906. ! t+ D+ P/ u6 w. F6 B$ h/ ?
  1907.     (defun tim_in (dt / p01 p02 ktra)' Y, g' v0 A9 b* T! X, L$ V
  1908.         (setq p01 (cdr (assoc 10 (entget dt))))# P7 O6 J/ _, W
  1909.         (setq p02 (cdr (assoc 11 (entget dt))))% L0 M% h/ a1 N" l% p1 q" x
  1910.         (setq ktra T)
    : _. r0 ^3 b( M" ^' x  P: ^% b0 x
  1911.         (if (and (> (car p01) (car g1)) (< (car p01) (car g2)) ' Z0 ?0 F: c% Q/ v! Z/ @
  1912.                  (> (cadr p01) (cadr g1)) (< (cadr p01) (cadr g2)))
    . {6 @6 z0 z$ ?1 j4 L" ?
  1913.             (setq ktra nil)  P3 _4 T) v4 t0 a5 b* c
  1914.         )& E9 y! G0 X* {$ i) E. ~! ]$ o
  1915.         (if (and (> (car p02) (car g1)) (< (car p02) (car g2)) / p5 E  ^5 U4 d
  1916.                  (> (cadr p02) (cadr g1)) (< (cadr p02) (cadr g2)))
      p( [/ u" C3 v
  1917.             (setq ktra nil)
    9 U+ k* W! e' e  y1 J0 `- D* s1 x
  1918.         )
      S8 U% s& m% ?5 R
  1919.         ktra
    & R# p& M: a  c2 S
  1920.    )0 C% w' ^6 L' v; ^  c
  1921. 9 {. ~4 d! H7 ~$ n9 t
  1922.    (defun timdt (dt1 dt2 / p01 p02)
    - d% T" ^: Q0 h/ U7 s% L
  1923.         (setq p01 (cdr (assoc 10 (entget dt2)))). D1 R5 L( D  E* ^8 j2 X( g6 Z
  1924.         (setq p02 (cdr (assoc 11 (entget dt2))))
    # I- s5 P. i* S- e0 h* D" n0 J
  1925.         (setvar "ucsicon" 0)7 s) n, t# }. R7 D, i
  1926.         (command "_.UCS" "E" dt1)( |; Z$ i6 f8 S' L' e1 \
  1927.         (setq p01 (trans p01 0 1))
    & u9 |; R# g9 G7 `; I- G' F! y
  1928.         (setq p02 (trans p02 0 1))
    ! S* q$ l8 v# D
  1929.         (command "_.UCS" "")# n1 O" i, Y1 E
  1930.         (setvar "ucsicon" 1)
    ( V- ~2 j! i* W+ C# Y9 B* O
  1931.         (if (and (equal (cadr p01) 0 0.001) (equal (cadr p02) 0 0.001))
    3 m8 M+ y  N8 z) X, A
  1932.                 T
    " L$ {" m: H3 f& \2 w7 G
  1933.                 nil! F! }2 N2 g2 _3 \( U; H
  1934.         )1 d: x3 _& R" U  |7 l3 `
  1935.    )9 S0 e' a7 |+ M4 k; y; x6 J
  1936. " S- d7 V9 V7 o/ B6 f! U$ N
  1937.     (defun tim_out (dt / p01 p02 kt); C: O: Z' y" K/ L% j8 `  Z. z
  1938.         (setq p01 (cdr (assoc 10 (entget dt))))
    ) @5 L, b/ \# M/ A0 p: w- l5 L! Z
  1939.         (setq p02 (cdr (assoc 11 (entget dt))))- K: n7 j3 K! b8 E, j5 `% k
  1940.         (if (and (> (car p01) (car g1)) (< (car p01) (car g2)) 3 F8 P  V- x+ L" t5 i% D
  1941.                  (> (cadr p01) (cadr g1)) (< (cadr p01) (cadr g2)))
    0 Z" S/ l! B3 S' h+ Q; ^% }
  1942.             (setq kt p02)# i& u/ k5 t# v
  1943.         ): d$ {. l) E# C5 E% V+ j: f. K
  1944.         (if (and (> (car p02) (car g1)) (< (car p02) (car g2))
    5 G% J2 u9 T7 |- M. A, s5 s
  1945.                  (> (cadr p02) (cadr g1)) (< (cadr p02) (cadr g2)))
    ( B! [: s* [! I2 m9 |7 k
  1946.             (setq kt p01)4 b$ L; [" s1 v( i0 B2 u6 E/ q
  1947.         )
    7 X0 h& ]/ \* ]0 `( J
  1948.         kt        : \5 g# w3 W5 s) A  p4 m! w, q
  1949.    )
    % t$ V2 [: z/ D+ r5 a0 ?
  1950. 2 a4 d+ ?$ f) P0 H  C0 {
  1951.     (setvar "cmdecho" 0)
    3 a3 X0 Z& M. I1 b8 l
  1952.     (setq olderr *error* *error* nterr)
    , \+ X* C- d. u
  1953.     (command "_.UNDO" "G" "_.UCS" "")1 c6 e/ x& H- B- z% Y
  1954.     (while (null ss1)! W. U  |7 v9 B. k0 T: y
  1955.         (princ "\nChon tuong muon noi...")0 w9 {6 _! k9 P
  1956.         (initget 1)
    , w) G! E' T9 F
  1957.         (setq g1 (getpoint "\n>Goc thu nhat:")); [, f0 A% d7 d- [' }
  1958.         (initget (+ 1 32))
    , O/ T' l6 B' i$ P
  1959.         (setq g2 (getcorner g1 "\n>Goc thu hai:"))
    # S% D/ B" X5 I4 D! X7 l
  1960.         (setq ss1 (ssget "c" g1 g2 '((0 . "LINE"))))
    % f' A% h3 S$ W/ {: J/ b3 F
  1961.         (if (null ss1) (princ "\nKhong tim thay doi tuong!")); H  r6 Z& b" ^/ F' g; m% \
  1962.     )
    2 r' m' D- l6 M4 z; F2 K
  1963.     , y: _9 W, A3 W3 ^: L! }# y6 E! w* E
  1964.     (setq temp (list (min (car g1) (car g2)) (min (cadr g1) (cadr g2)))6 B- |/ L3 A. k& @$ z2 S! k
  1965.           g2 (list (max (car g1) (car g2)) (max (cadr g1) (cadr g2)))
    ) Y! s- A2 Q! s7 D: g, Q. Y$ s
  1966.           g1 temp)3 X0 ?" c) h. ]8 T! D: t
  1967.    (setq ss1 (ssget "w" g1 g2))8 Y& x" q% _5 D
  1968.    (if ss1 (command "_.ERASE" ss1 ""))( u$ U4 s/ h" D! q" ~
  1969.    (setq ss1 (ssget "c" g1 g2 '((0 . "LINE"))))
    6 j: F- y7 j. ~. A$ k0 Y
  1970.     ) J7 l7 r. _9 a! C
  1971.     (setvar "blipmode" 0), ~* N7 a# M5 {0 ]- V# `
  1972.         (setq i 0 l (sslength ss1))* U/ Q( f' l: w1 @0 T3 b
  1973.         (while (< i l)
    * @1 m* H6 K, L3 z+ ^
  1974.            (if (tim_in (ssname ss1 i))% X; Y5 ?7 Z' M  e
  1975.               (progn
    ) \% ]; u1 p- i3 J
  1976.                     (ssdel (ssname ss1 i) ss1)
    4 N% ^4 Q8 d# N/ f8 Z
  1977.                     (setq i 0 l (1- l))/ b- O) `! T. V! c
  1978.               )        8 v8 q2 `' L) r/ D# L- g7 x- K
  1979.               (setq i (1+ i))
    : Q* @2 Z% O8 o2 Q/ m% R  d" B
  1980.            )
    / W( X9 P9 V7 T% |* l: m1 ]! |
  1981.         )
    , B& d7 A, F1 y. h4 F* L) T( k
  1982.         (setq l (sslength ss1))2 _) j, h5 u3 L, L, I+ N) q' u) l
  1983.       (while (>= l 2)
    7 F. V# j# p8 z& `5 _& I  A
  1984.         (setq e1 (ssname ss1 0))  ^" _& ]8 u/ {6 ]5 ?
  1985.         (ssdel e1 ss1)% t( Y1 a8 g6 ^( z7 Q
  1986.         (setq e2 nil i 0 l (sslength ss1))6 |! L6 b; y; T; E9 E; e$ k+ h9 i
  1987.             (while (< i l) ) Z# P' B4 H! K0 {" P% G9 n) u4 q
  1988.                 (if (timdt e1 (ssname ss1 i))2 B1 Q" H  I" N! s* C% N$ y
  1989.                     (progn; Y: F2 s+ a$ T/ u
  1990.                         (setq e2 (ssname ss1 i))' F) W% @1 D& [6 q; L
  1991.                              (setq dd (tim_out e1))
    " ], ]$ {0 L$ H& _: w
  1992.                              (setq dc (tim_out e2))
    0 C* Y$ n2 [1 u2 U# Y  C5 V9 k. q  U
  1993.                     )% M5 H6 B- k/ u% U3 h
  1994.                 )# `, r! T2 E$ p: q& M; u7 ?
  1995.                 (setq i (1+ i))' s. c( G$ {4 ~( Z
  1996.             )
    . W# G; r" M- c+ C$ W" d% ~
  1997.             (if e2 (progn; \7 w* B( e2 P- N# c
  1998.                         (ssdel e2 ss1)                        
    3 e; b; Y- u" R+ R) H' s( u
  1999.                         (command "_.ERASE" e2 ""). ~: T. q8 d! \9 Y5 v- T
  2000.                         (setq temp (entget e1))
    / L: Q0 A6 t! f( E* c% E
  2001.                         (setq old (assoc 10 temp))
    ( P$ @1 t$ j9 V: \2 t
  2002.                         (setq new (cons 10 dd))
    8 h1 @9 p8 z- }) p6 V4 t% ~# r
  2003.                         (setq temp (subst new old temp))
    1 o4 o  \6 p3 r) M6 q6 ~) a5 _
  2004.                         (entmod temp)+ d4 s& z; [' N
  2005.                         (setq temp (entget e1))
    ; o1 z: y- Z$ z. b
  2006.                         (setq old (assoc 11 temp))5 b9 t/ _( {1 Z5 g
  2007.                         (setq new (cons 11 dc)), _. }7 ]4 c1 j$ @' K
  2008.                         (setq temp (subst new old temp))% Z' m9 q2 t3 ?' Z' u" p% G6 A
  2009.                         (entmod temp), A3 X3 M+ c$ g* X4 A$ p7 S
  2010.                         (redraw e1)
    5 }+ b3 u3 A& d! D
  2011.                         (setq l (sslength ss1))
    - N8 B3 @- I& r# S% Q' G
  2012.                    )
    ) y! E  A5 d4 v& \) i; ?
  2013.             )  E" L, a- V5 H% X9 _: M
  2014.         )3 _. u) |  @2 {. D( f7 Y

  2015.   R$ a' F1 ~" M( h" _
  2016.         (command "_.UCS" "" "_.UNDO" "E")
    ; B: R7 {% Z' s% Q. p
  2017.         (setvar "cmdecho" 1)1 H) }% N5 @" R* O5 h6 m' c
  2018.         (setvar "blipmode" 0), y( ~8 @- h) l* G9 ^) w
  2019.         (setq *error* olderr)
    - `9 X) s3 F4 O
  2020.         (princ)! W$ t, v+ y& b0 f, G" i% b
  2021. ). A3 I1 h! S% d. d  \5 L- M! p
  2022. ;*********************************************************************1 k5 E" w: G& x9 B5 V( Z6 G% Y  d
  2023. (defun ketthuc ()
    9 ]% y- T. T8 ^# b' D
  2024.         (setvar        "cmdecho"        luuecho)
    / }3 N9 E$ m0 ~
  2025.         (setq *error*        luu
      T$ p" s) e7 f
  2026.                 luu                nil        
    ' ^0 O; ]' i2 X! Z+ O8 d6 X/ l0 T
  2027.                 luuecho        nil
    * Z( r& l: D( r, z7 y% _
  2028.         );setq; R6 \- k/ ^  h8 \; o' d9 u
  2029.         (princ)$ F+ X8 j, \6 S% [
  2030. )                ; d: I1 [- b+ d7 ]) d; j. y
  2031. ;*********************************************************************
    5 T0 c) |" V! a
  2032. (defun modau ()1 [0 ~9 D2 G$ k' R9 Q3 X3 a
  2033. (setq         luu *error: o; k4 p+ l% i0 ?2 ~- K7 }2 G# H
  2034.                 luuecho        (getvar        "cmdecho")2 [8 Z4 X; y8 ]. Y. j. q( i
  2035.                 *error        (ketthuc)
    * Q0 ]+ N# d$ Q; \
  2036. )% q) V$ r7 T9 b, u& q9 _
  2037. )# a3 T$ d$ U$ l$ ^% h: d6 l. c
  2038. ;*********************************************************************
    % I& ^) |  B! V5 r( Q
  2039. (defun xulytext (text / kytu ma sokt luusokt lui )
    8 s0 C- c( e; x
  2040. (setq         kytu        (substr text (strlen text))$ r" g/ ^0 y8 t! P- q8 ^) J' \
  2041.                 ma        (ascii kytu)
    7 a# t  {" [' C" |* v# ~3 {5 c; O( w
  2042.                 sokt        (read kytu)
    2 w/ v" @7 \* ^
  2043.                 lui        1
    ; B, e# ?# s$ w$ e
  2044. )' Y7 U5 R) ~% ]( F( P! y
  2045. (if (numberp sokt)3 z3 a( B/ |# U; b( p
  2046.                 (progn
    0 u3 b' b8 m- x
  2047.                         (setq luusokt        (1+ sokt))
    ) H& H; c9 V$ Q. }2 O' u
  2048.                         (if (and         (numberp sokt)
    5 q) f/ y3 g; I( E5 B  S* L
  2049.                                         (> (strlen text) 1)- d, N! Y, _' K' Y, `- Z* w
  2050.                             )        ; p# Q' w" Z( G- A) T" Z# z
  2051.                            (progn0 u# G0 ?& _6 U$ X
  2052.                                 (setq         kytu        (substr text (1- (strlen text)))% S/ `2 L% R5 {; n4 y. \
  2053.                                                 sokt        (read kytu) 7 f7 O& k- V3 u+ e( M; |. f
  2054.                                                                                 )+ [; a# [8 P/ \* L
  2055.                                 (if         (numberp sokt) 0 e9 U3 B4 S% f& M
  2056.                                         (setq luusokt (1+        sokt)
    ; N* C5 r. l! d3 X# A; R
  2057.                                                         lui         2
    ' p, T: K. E3 M( b9 M1 O

  2058. ! k. E" ]* E$ f7 O$ Y# l: n  K
  2059.                                                 )
    + V* X+ o3 V+ a7 g+ G; v
  2060.                                 )! C2 m, \& @9 x6 I/ S
  2061.                             );progn        
      b+ S. D* R( _  x% P0 x# J" w
  2062.                         )% f7 u' y3 v4 }$ }1 ?( E
  2063.                         (if (= luusokt        100)        (setq         luusokt        0))
    / H5 [  G+ }2 D' Q! M" f3 c/ F
  2064.                         (setq         kytu                (rtos luusokt 2 0)- k) c9 E* ^7 Q" [( T
  2065.                                         . W( R; I4 G( k% f. m
  2066.                                         text        (strcat        (substr text 1 (- (strlen text) lui))  kytu)% @9 Z' L6 j. S  o2 Z
  2067.                         ). Y1 H5 J2 u# h9 E
  2068.                 );progn                        
    # X  z$ i- z( z* ]4 ]
  2069.                 (if   (or         (= kytu "z")
    & I2 M2 ^' J* m& U
  2070.                                 (= kytu "Z")( U0 @- ~' a. v6 R$ l9 f$ D
  2071.                         )
    * Y8 h+ n) C" E7 `6 Q
  2072.                         (setq         text                (strcat         text        "0")
    0 j' K( A3 x6 L/ C: q1 f3 P
  2073.                                 textxl                "0". c' J( h3 D  E; X
  2074.                         )7 Q/ R  |1 A5 ]* f
  2075.                         (setq                ma        (1+        ma)( d! p5 Y& @8 f: M+ @
  2076.                                         text        (strcat        (substr text 1 (1- (strlen text)))  (chr ma)): ]' c4 k1 Q/ C7 [% Q' t5 M
  2077.                         )! }6 ~  i  g$ E( u* L
  2078.                 );if. p5 t* v% d) E0 U5 d% m- i
  2079. );if
    ' O2 n! t( |! B' c8 c5 G, C6 U4 o" [
  2080. )- R# v% p8 S" @  O( W- L
  2081. ;*********************************************************************
    , N! m4 \; r* f
  2082. (defun doitext(tendoituong / chuoi doituong thoat tam dsach kieu text vitri10 vitri11 dem canle)2 d' X- b5 O7 @( g
  2083. ;Neu doi tuong la text thi tiep tuc
    - d' ^& w" t" F( ]5 h7 f
  2084. (setq         doituong         (entget  tendoituong)1 t/ D' R+ Q+ A, A
  2085.         kieu                (cdr (assoc         0        doituong))
    " Z5 n& M; _6 I" |- {5 ?6 O2 s
  2086.         canle                (cdr (assoc         72        doituong))
    . G3 ^- w" }+ Z
  2087. )        
    - S  v3 Q' O2 J8 D0 A% u
  2088. (if (or (= kieu                "TEXT")
    $ ?. Y/ _0 r: p- C5 |. M: ~5 Z
  2089.         (= kieu         "MTEXT")        
    ' Y, P! ]+ J" Z6 I: o! q, E3 d
  2090.     )         & m, q, [* r: A8 v8 B0 a
  2091.         (progn
    % P- _! }* I: p. N) d
  2092.                 (setq        textxl        (xulytext textxl)
    # z( s" j2 q( n- L* D
  2093.                         text        (cons 1 textxl)
    ) ?8 w% {& C: }: y7 w  b# B
  2094.                         vitri10         (cdr (assoc 10 doituong))
    5 E1 P6 a) f/ L% R  R1 m9 [6 Q1 Z
  2095.                         vitri10         (list (+ (car vitri10) (car vitrilech)) (+ (nth 1 vitri10) (nth 1 vitrilech)))
    * u- g, Q; X2 ?& B* g
  2096.                         vitri10                (cons 10 vitri10)
    8 }! s) R- O1 b) w) m: J
  2097.                         vitri11         (cdr (assoc 11 doituong))
    # W8 Z3 L0 i1 \7 P! @8 g
  2098.                         vitri11         (list (+ (car vitri11) (car vitrilech)) (+ (nth 1 vitri11) (nth 1 vitrilech)))
    : I0 J, ]# t6 z0 D# u5 B) U2 X! u: ~
  2099.                         vitri11                (cons 11 vitri11)+ W2 Z  c7 [2 l# N
  2100.                         dem        0
    % R8 Z  h: f% @% H: L+ q
  2101.                         dsach        nil
    , q8 p/ M" ]  w9 U* U
  2102.                 )
    - l4 x* K8 H+ V9 ]
  2103.                 (foreach tam         doituong# i/ p& H2 J- }' D5 c, ]# ^8 C
  2104.                         (cond
    ' k9 v& i# i" r1 K
  2105.                                 ((= (car tam)        1)        (setq dsach         (append dsach (list text))))
    * G( x9 J9 i& i2 V
  2106.                                 ((= (car tam)        10)        (setq dsach         (append dsach (list vitri10))))
    ; c6 L" H% n5 e+ B2 D
  2107.                                 ((= (car tam)        11)        (setq dsach         (append dsach (list vitri11))))% L$ F5 g; H, z
  2108.                                 ((setq dsach         (append dsach (list tam))))
    & d3 z: X# m$ ~% N
  2109.                         )
    : U* d+ z, H; K6 `% J, l
  2110.                 )
    ! C) g! G- a4 A) L2 V2 W3 l% n
  2111.                 (entmake dsach)# O: x& z2 T9 d$ X
  2112.         );progn. d( p2 h% H9 ~. Y3 E+ ^
  2113. );if
    , f, y5 B" E$ m
  2114.         );
    / K2 D; K" P; r- k) H. e
  2115. ;*********************************************************************  C! J: R8 Q+ z$ W  z7 j
  2116. ;sao doi tuong cu sang vi tri moi
    9 I8 Q8 E: {; o$ K2 F- l: D# @! o
  2117.   }1 o3 t( W9 D  X
  2118. (defun copy_dt (tendoituong )
    5 r7 Q! }( p$ T* A4 O0 u# ?  w
  2119. (command "copy" tendoituong "" goc toi )
    9 l4 {  U& |+ t
  2120. );defun
    $ a* W' K; E' l! t
  2121. : ?3 _4 L; V8 `4 N) a  _" b
  2122. ;*********************************************************************: {! j, D, _7 u6 z5 O0 V

  2123. ! m5 v5 ~5 h% B: L
  2124. (defun c:ct ( / cumdt dodai thoat dem ten doituong textxl dem goc toi)7 E5 f" ^) Q( U/ o9 t% {
  2125. ; Khoi dau cua chuong trinh
    " k2 k, z& q; v( m2 u" }
  2126. (princ "\nCopy Inteligent...\n")4 X+ F1 u. Y) `! k) O1 W" N. [" b
  2127. (setq         luuecho        (getvar        "cmdecho")
    : T5 D, C" G6 j+ R' k
  2128.         luu        *error*
    ) E* _/ f  l: F* h8 b) U$ W
  2129.         *error*        ketthuc- e" H5 |. |  `  O4 Y4 N
  2130.         cumdt         (ssget)
      {' e2 O- }2 F
  2131.         dodai         (sslength cumdt)
    ) @2 y' ]3 V8 D+ w7 I
  2132.         goc                (getpoint "\nSelect base point:")
    , T: I2 T7 N7 C+ }# T
  2133.         thoat                nil' E4 Q% h, q+ e* R# p
  2134.         dem                0
    , i4 G. R! T& ^) D
  2135.         textxl                nil9 H# B" n# g  A# G: I% C9 n
  2136. );
    1 ]4 u3 Z4 v% o4 Z. \
  2137. (setvar "cmdecho" 0)) X2 K6 Q* n/ u
  2138. ; Loc ra duoc ong text de xu ly4 ]+ ]! ?1 x( C, J3 X: T
  2139. (while        (and         (= thoat        nil)
    $ m$ w/ q8 b  B8 n
  2140.                 (< dem        dodai)
    1 M' o4 h0 y; \( ?" `
  2141.         ): G1 c$ _& d" N9 p0 Y. v. X- {  m/ E
  2142.         (setq         ten        (ssname cumdt dem)
    % `" A; H4 r* y; }
  2143.                 dem        (1+         dem)
    3 V  e+ A1 r9 e
  2144.                 doituong (entget ten)
    / U) Q1 l9 @9 ?6 _; N
  2145.                 kieu         (cdr (assoc         0        doituong))                        . L' x7 Q% L4 ]/ J5 I4 h7 o1 T& {
  2146.         )
    $ p$ [4 l7 f) ?8 ~* J
  2147.         
    ) S2 W1 R; Z1 d- u( _
  2148.         (if (or (= kieu                "TEXT")' R- i) s  K- p) O
  2149.                 (= kieu         "MTEXT")        4 P6 _  G, ^. Y: r: }, d" \9 Z- P
  2150.                 )5 R& d' B5 B2 f9 h" H+ ]9 ]
  2151.                 (setq         thoat        T
    & E% @5 X/ i- B1 u. y
  2152.                         textxl         (cdr (assoc 1 doituong))         4 q% |4 J8 L& `( G1 O& K
  2153.                 )% {  D& U6 e# J, l. d2 `) I
  2154.         )
    6 J3 a% y  s/ C* r: ~! P8 r
  2155. );4 k2 ]! r0 k  O0 g
  2156. (while T
    $ J/ Q4 [4 }% P
  2157. (setq        toi                (getpoint "\nSelect next point: " goc)
    ' [) S3 P9 E7 V; M7 w
  2158.         vitrilech         (list         (- (car toi) (car goc)) (- (nth 1 toi) (nth 1 goc)))
    5 v- @- P- N. \; B0 I# f1 Q( w
  2159.         dem                00 c; z) R+ O8 i: {
  2160. )* x9 V* t% U3 R- ?
  2161. (while        (< dem dodai); W$ _8 [0 @7 s6 f8 Y" i/ o( Z
  2162.         (setq         ten        (ssname cumdt dem)
    8 }0 t9 V2 H$ e0 v1 U* ^
  2163.                 dem        (1+         dem)1 D; `3 H8 n* J0 C+ h. y
  2164.                 doituong (entget ten)
    ' \! {2 n' C7 z# q
  2165.                 kieu         (cdr (assoc         0        doituong))                        
    & ?+ e9 E+ g7 f' H! z; e  G
  2166.         )
    6 F1 W, V$ Q3 q5 z( u

  2167. 1 q: l, a% x, G' y$ H
  2168.         (if (or (= kieu                "TEXT")
    ' j! C9 H% ]: G3 u; X5 {; I
  2169.                 (= kieu         "MTEXT")        , b% `, f4 V) ~( |% V- q# {, u$ x$ c
  2170.                 )
    % l8 n0 Y. ]$ @% f' h2 V- [
  2171.                 (doitext        ten). h: U4 g. P+ o" Z; A* ?$ ~
  2172.                 (copy_dt        ten)* V- q, e1 R' }3 {
  2173. 3 L' y! S7 V: D% y$ i, n
  2174.         );if
    % {5 H; J% u0 s; [) t( z
  2175. )2 _  v6 A, F/ R$ u6 R' K
  2176. );while
    ; k9 x$ m; B- A, ^9 ~% Z. X8 r
  2177. (ketthuc)
    # Z3 p3 T; S6 P) g: I; i
  2178. );defun
    : G) V& _6 [" ?* @+ i3 L
  2179. (princ "Type \"DG\" to start")6 F+ x. O+ F7 u
  2180. ;Note: bien toan cuc: textxl vitrilech
    9 n. t; G4 f) _4 |+ ^% O0 ^; s; \

  2181. + g7 Y6 g+ ?, h
  2182. ;=====================================================================* Z! i, X& j0 k9 z% V% ?
  2183. ;;; PLJOINFUZZ.LSP
    - y( x, @" a. P7 L9 T
  2184. ;;; Joins lines, arcs and polylines using a fuzz distance  P9 r% c$ ~' Y& S( l+ n  }
  2185. ;;; If only one object is selected it tries to join to all objects that are possible- J% M7 _+ Y* B
  2186. ;;; By Jimmy Bergmark% w/ r5 W) C$ W$ E1 w, D$ J5 Z
  2187. ;;; Copyright (C) 2003-2004 JTB World, All Rights Reserved1 N( I8 S; h' G7 N
  2188. ;;; Website: www.jtbworld.com
    ; B0 U! B# n: _+ b8 j* d
  2189. ;;; E-mail: info@jtbworld.com+ _* d$ H! I9 f  W/ \: K5 F* Y1 ~
  2190. ;;; Tested on AutoCAD 2002,2004 and 2005, O( i0 i9 h. P" T6 L, x' O2 T' k8 X2 [
  2191. ;;; Latest revision made 2004-11-119 [3 m/ v: v+ _1 ], c
  2192. ;;; Minor code cosmetic change made 2004-11-13& m) l) H" N+ a* N  p6 n9 @$ A1 A5 e
  2193. ;;; Bug corrected 2004-12-238 u  J& A: c6 n+ ]0 @% N' A* U6 {
  2194. / ~5 E/ E; j# p4 u
  2195. (defun c:jf () (c:pljoinfuzz)) ; this line can be commented out if there is an existing command called jf/ C" n2 D9 r" L: w& \! g" M9 M
  2196. (defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects)4 o. O* d! q% L! {
  2197.   (setq oldcmdecho (getvar "cmdecho"))0 H/ ?( N1 J5 g. w; U# \
  2198.   (setq oldpeditaccept (getvar "PEDITACCEPT"))
    9 O$ i7 B# O7 ?- y! U4 @
  2199.   (setvar "cmdecho" 0)* f  Q1 F( p0 [7 s$ I* u4 i
  2200.   (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16"))9 b% {/ H; X, x6 C1 G
  2201.   (if A2k4 (setvar "PEDITACCEPT" 0))
    ! {. }7 a% M/ y! d) f
  2202.   (setq        okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))
    4 G+ X7 n; h- i, C& U
  2203.   (princ "\nSelect object to join: ")
    9 p9 L0 a6 H0 P6 f1 d8 c2 z
  2204.   (setq ss1 (ssget okObjects)): m5 v! k$ v1 q; x: D
  2205.   (setq fuzz (getdist "\nFuzz distance <0>: "))
    8 W: \- t+ z% B$ T8 j  R7 v; x
  2206.   (if (= fuzz nil) (setq fuzz 0))# y/ ]& D* P. g) ^. X: g1 {
  2207.   (if (/= ss1 nil)
    0 y! ?; ^/ B9 l2 d5 i
  2208.       (progn
    & q5 T/ K+ A) |6 h; ^2 t% K
  2209.         (setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0))))))& J8 |; s: ?" _% O6 a1 H9 ?
  2210.         (if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects)))
    1 A) z# S/ F& w9 k
  2211.         (if (member objType '("LINE" "ARC"))
    6 B1 {9 u; \2 ]* T/ P1 t. {
  2212.           (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")0 U8 ~, n9 @; `" T3 A& b
  2213.           (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "")
    3 |2 G# S/ ?, l- @* E. M7 h
  2214.         )* q1 X6 x- O1 K" ~: D
  2215.       )# p) U4 N& s7 G( Y7 u1 F7 f
  2216.   )- m4 |# v7 \9 `9 t2 p3 {% H3 ^. F
  2217.   (setvar "cmdecho" oldcmdecho)7 C# @& |" S$ c- Y/ c( }! M
  2218.   (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept))- v/ R; `, z  w* e
  2219.   (princ)
    0 _' x0 o. ]+ R5 t1 G/ F
  2220. )
    # Y0 x+ S* Q+ J+ H' d/ j2 l5 q4 i/ ?
  2221. 7 k' Z9 o8 @6 f7 w1 F5 p7 L( r$ V
  2222. ;===========================VE CAO TRINH===========================; ?" r7 d0 u& j1 x

  2223. , N# s9 n! x( |, e
  2224. (DEFUN C:Cotcao (/ CMD PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 NPI TX DX DY TL OSM OLL8 {& V/ d: y6 G) T" @/ Z
  2225.                 CRST RSIZE TSIZE STR PRMT FCH NBC OLDERR)
    8 q9 R- r5 g. O8 r
  2226. (SETQ OLDERR *error*/ s$ X, P- b1 F& N
  2227.       *error* loisb)
    ; A2 Q2 ?0 j5 ^
  2228. (command "layer" "m" "dim" "c" "" """")
    ! v7 F- h7 `8 a8 U2 G1 I
  2229. (SETQ CMD (GETVAR "CMDECHO")), R5 ^9 h% c* m4 n! b1 X6 Z, r
  2230. (SETQ NBC (GETVAR "CLAYER"))
    * b6 W& p  W) e6 O2 R* u
  2231. (SETQ OSM (GETVAR "OSMODE"))
    # o/ Z) g9 _6 [! `0 A
  2232. (SETVAR "CMDECHO" 0). J; k, k% K1 v. c+ o6 }
  2233. (SETQ PT1 (GETPOINT "\nDiem cao trinh:"))
    ; L* y8 {) m, p* I+ L
  2234. (SETQ TX (GETSTRING "\nCao trinh:"))" L/ Q# x& d* F$ R: i
  2235. (SETQ FCH (SUBSTR TX 1 1))
    , T7 W* ^! @% {8 n# ?  Y
  2236. (IF (= FCH "@") (SETQ TX (STRCAT "%%P" (SUBSTR TX 2 (- (STRLEN TX) 1)))))
    8 C9 \& E! e6 L" s( a8 a2 K
  2237. (SETQ CRST (GETVAR "TEXTSTYLE")). g# |; N( G3 H' u- [$ @
  2238. (SETQ RSIZE (CDR (ASSOC 40 (TBLSEARCH "STYLE" CRST))))
    2 H  ^# s+ o" H  F. L0 m" i
  2239. (SETQ TSIZE (GETVAR "TEXTSIZE"))" ~$ ]4 N& V& U/ u7 K; s
  2240. (SETQ STR (RTOS TSIZE 2))
    0 M1 l% S7 b7 J$ R7 v' S
  2241. (SETQ PRMT (STRCAT "\nText height <" STR ">:")); Z) [0 o& a4 n# x9 ?
  2242. (IF (= RSIZE 0)& D1 b# ?) ?) F- z) R& M
  2243.   (PROGN
    8 L2 Z5 J. x( {! H. Y
  2244.         (INITGET 4)- o, k5 A1 B& `/ Q8 v1 b
  2245.         (SETQ TSIZE (GETREAL PRMT))
    . o) I$ z. e1 D
  2246.         (IF (= TSIZE NIL) (SETQ TSIZE (GETVAR "TEXTSIZE"))
    - t* z. }: ~; K+ M3 L- F
  2247.                           (SETVAR "TEXTSIZE" TSIZE))# D/ B8 T/ }9 @3 t; r/ ]" G, @0 d
  2248.   )
    - n8 H3 z& C& b2 K3 m& K
  2249. )) C1 h2 k3 u' O; B
  2250. (PRINC), a3 J5 Q5 M- s! E5 j+ Y% O2 d
  2251. (SETQ TL (/ (GETVAR "TEXTSIZE") 2))" ^8 ~! q9 \* `0 _! q% e. v
  2252. (SETVAR "OSMODE" 0)
    % V; F- B/ B8 l6 ]& z) c
  2253. (SETQ DX (CAAR (CDR (TEXTBOX (LIST (CONS 1 TX))))))
    : q$ o1 ~) d" k. s% P, V0 p: `
  2254. (SETQ NPI (/ PI 2))% G; p" e  \/ j6 n6 v
  2255. (SETQ PT4 (POLAR PT1 NPI (* 1 TL)))
    " ]' `# V8 a; ^7 D4 ?; s: A
  2256. (SETQ PT2 (POLAR PT4 PI (* 2 TL)))5 B5 Z9 q) v: @8 t# \# v3 _
  2257. (SETQ PT3 (POLAR PT4 0 (* 2 TL)))
    ! s+ p% p$ Y) F% r& c
  2258. (SETQ PT5 (POLAR PT4 NPI (* 5 TL)))
    % D: x* ?! ~5 p! V
  2259. (SETQ PT6 (POLAR PT2 NPI  TL))
    & ]% c/ D+ w: T. F* u0 o
  2260. (SETQ PT7 (POLAR PT6 0 (+ (* 3.7 TL) DX)))% x% q8 o: K  _# s% X+ ?
  2261. (SETQ PT8 (POLAR PT6 NPI (* 1 TL)))+ a6 S, A0 O% o9 m* f- P
  2262. (SETQ PT8 (POLAR PT8 0 (* 2.5 TL)))4 g0 M" H2 D8 d; _! y; x5 d) L; i
  2263. (SETQ PT9 (POLAR PT1 pi (* 2 TL)))( W, F- j/ Z  K# V
  2264. (SETQ PT10 (POLAR PT1 0 (* 2 TL)))
    * r  X* E+ z  G2 L/ [* K+ w
  2265. (COMMAND "COLOR" "7" "")
    ! f* `9 m$ M, \8 E
  2266. (COMMAND "STYLE" "COTES"  "Verdana" "" "" "" "" "")
    ) G3 K5 \0 h+ o2 s9 E! V
  2267. (IF (= RSIZE 0)(COMMAND "TEXT" PT8 TSIZE 0 tX) (COMMAND "TEXT" PT8 0 TX))# C1 ]/ O1 b. W" v
  2268. (COMMAND "COLOR" "BYLAYER" "")- n5 ?7 G8 U8 o/ I' W
  2269. (COMMAND "SOLID" PT1 PT2 PT4 "" "" "pLINE"  PT1 pt3 pt2  "")
    ! a+ a6 Y# J& I" v1 n
  2270. (COMMAND "COLOR" "BYLAYER" "")
    5 C) }3 K- _* N/ `2 i6 |
  2271. (COMMAND "pLINE" PT1 PT5 "" "pLINE" PT6 PT7 "" "pLINE" pt9 pt10"")
    0 {! x$ k+ }' l% p
  2272. (SETVAR "CLAYER" "0")& I5 {8 ~( g$ ^' r- k+ g" [
  2273. (command "ddedit" pause)0 K& x$ D3 D, j8 w6 j9 m+ A
  2274. (COMMAND "COLOR" "BYLAYER" ""). H, v4 K* R" Z# Y
  2275. (SETVAR "CMDECHO" CMD)! J# Q' z1 B: U
  2276. (SETVAR "CLAYER" NBC)7 H. ^; i2 J" \
  2277. (SETVAR "OSMODE" OSM)5 d5 e  ]9 a1 A8 X
  2278. (PRINC)
    5 H% {0 m! {# A# M
  2279. )% h1 K. |1 r6 g& o3 m# a

  2280. : P8 F( F& V) J1 n9 `4 u
  2281. ;;; =========================== VE NET CAT CHEO (GC) =============================
    : Z9 Z; A( m: B! [6 p

  2282. 0 M/ y8 F) ~6 ?: O( X# @& O' b# ~3 g
  2283. (Defun c:G1(/ p1 p2 p3 p4 p5 p6 p11 p12 l ang)$ ]: S7 G% J* H, ~3 |" ]1 {
  2284.         (setq x (getvar "osmode"))3 F+ ]  M: f3 {+ `/ j4 x
  2285.         (setq p1 (getpoint "First point : ")
    : C- y+ x: G$ s9 w3 l! e8 u7 D
  2286.               p2 (getpoint p1 "Second point : "))
    ; ?$ C% D# W" N! ^0 Y
  2287.         (setq l (distance p1 p2))7 ?, j7 e' I$ {7 H6 ?
  2288.         (setq p11 (polar p1 (angle p2 p1) (/ l 5))7 {5 B+ G! a9 Q1 ?7 T1 c
  2289.               p12 (polar p2 (angle p1 p2) (/ l 5)))6 p' K) X+ E1 d3 `3 T# `
  2290.         (setq ang (angle p1 p2))
    8 V# R6 _$ @6 t5 G% E$ M
  2291.         (setq p3 (polar p1 ang (/ l 2.5))
    2 l2 d* o: ?1 l% h, {
  2292.               p4 (polar p3 (+ (/ pi 2) ang) (/ l 5)): [4 P  I& j7 ^( [! [' l
  2293.               p5 (polar p3 ang (/ l 5))
    ! M2 x" E' ]$ b
  2294.                 p6 (polar p5 (- ang (/ pi 2)) (/ l 5)))
    " i; I* W+ q( g; s
  2295.         (setvar "osmode" 0)
    1 Q. Y& I. d8 x, o
  2296. (command "pline" p11 p3 p4 p6 p5 p12 "")4 T; U! Z6 x) K. d! J
  2297. (setvar "osmode" x). {3 U' X/ F! k% T% i  X" g/ x
  2298. )8 e8 X8 l3 Q9 i/ n1 L. P- Q# Z
  2299. ;----------------------------------------------------------------------------------" u4 o7 p0 E! s) ?
  2300. (Defun C:G2 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6
    . j* B% B/ v' z
  2301.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))+ b" w  ?* \# ^# K' |
  2302.    (setq ps1 (getpoint "\Chon diem thu nhat: "))0 i/ R; ?) Q6 \' Y9 u3 O
  2303.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))
    * Y7 f3 ~' _# P- k  F$ _5 E8 s
  2304.    (setq sb 50.0 sh 200.0 se 20.0)/ F3 |6 T- {# h! y
  2305.    (setq ang (angle ps1 ps2))
    7 E" E  y/ Y' r( A' Y: ?
  2306.    (setq pf1 (polar ps1 ang (- 0.0 se)))# s- B3 [: _  h; A1 `
  2307.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))& F9 P$ Y& z$ K7 z* `/ e! Z+ l1 q
  2308.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))
    , ]; _' e: Z! k1 @3 C( @* j
  2309.    (setq pf5 (polar pf2 ang sb))
    6 m9 N$ Q6 @' Z+ A
  2310.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))
    4 }/ c0 J* e2 }
  2311.    (setq pf6 (polar ps2 ang se))4 ~; G" Z; S2 t
  2312.    (setvar "OSMODE" 0)
    ' b1 P0 m( q5 D9 o- o" d
  2313.    (setvar "BLIPMODE" 0)# c& K4 c4 L* U" N3 ]
  2314.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")
    ; }& r6 O4 \/ |* S$ I/ \7 q8 h- ~; S
  2315.    (setvar "OSMODE" 703)
    8 V2 j+ e" o: ]0 j) s
  2316.    (princ) )( J* t1 a' \( `# O8 ?
  2317. ;----------------------------------------------------------------------------------9 g8 a3 ~6 @5 A: Y
  2318. (Defun C:G3 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6, B' a$ ]+ J9 x" Q
  2319.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))  {6 N" \, @  p- v% A
  2320.    (setq ps1 (getpoint "\Chon diem thu nhat: "))8 a# S  O) O: w: V3 ?$ M
  2321.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))
    1 U/ ^8 t, w3 g8 t
  2322.    (setq sb 100.0 sh 150.0 se 20.0)
    + E( ^7 s# ?* \1 ]
  2323.    (setq ang (angle ps1 ps2))
    $ f  U' q8 L( ?4 [6 W* Y& G  e
  2324.    (setq pf1 (polar ps1 ang (- 0.0 se))), P* Q- t# z/ Y1 T. L4 W7 \8 J
  2325.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))# g1 `% \. c% G, V
  2326.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))" F# l+ m3 b1 @% f& q$ L9 K  ]
  2327.    (setq pf5 (polar pf2 ang sb)); q) h2 L/ Z. g) ~6 ]# i
  2328.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))
    4 n, z0 [* P1 z# ^0 [% w  l2 }
  2329.    (setq pf6 (polar ps2 ang se))
    % n3 B; `# I4 @/ ?" k. z8 q
  2330.    (setvar "OSMODE" 0)
    & ?9 y' i2 L4 z) f0 n) R5 _" w
  2331.    (setvar "BLIPMODE" 0)4 t0 J3 Q3 @5 ~9 C# c% x
  2332.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")1 {% E" _2 P+ L8 k* x# ^1 ~: U( G
  2333.    (setvar "OSMODE" 703)
    : {$ M) j. O$ O2 |$ I  \
  2334.    (princ) )
    9 F; D0 Y4 v: T; m9 p
  2335. ;----------------------------------------------------------------------------------8 I. r# O, K; U
  2336. (Defun C:G4 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6
    - k  ]4 M; X, O: T: @
  2337.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))& K, ?9 H: ^6 S  j4 O: {; K
  2338.    (setq ps1 (getpoint "\Chon diem thu nhat: "))4 e3 ?2 R* m6 Y! i
  2339.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))' `0 X' |4 I5 i2 z2 o( ?1 h
  2340.    (setq sb 100.0 sh 250.0 se 20.0)
    3 @; ~% `- Q  R4 Y) ^
  2341.    (setq ang (angle ps1 ps2))
    3 w* Y6 C& n& T  s+ h2 `/ s
  2342.    (setq pf1 (polar ps1 ang (- 0.0 se)))
    / l% h; \; B" ?, ?3 E: ?
  2343.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))1 ^' W& a) n) F5 u
  2344.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))
    , e- o, O: Q4 M, R! V/ U3 g+ D0 Z1 @
  2345.    (setq pf5 (polar pf2 ang sb))7 U- @# T6 d9 s) k9 P: ]2 ?# k
  2346.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))
    ) y& z2 w: A" c8 a# l
  2347.    (setq pf6 (polar ps2 ang se))
    * Y  q5 `+ l6 b: F/ U; U/ Q3 X
  2348.    (setvar "OSMODE" 0)
    # z  F& }2 D4 N: I
  2349.    (setvar "BLIPMODE" 0)
    2 f' A. `0 l+ \
  2350.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")
    3 P' M7 ~3 V* u* }
  2351.    (setvar "OSMODE" 703)' v" L4 }" b, Z+ ~& T1 x
  2352.    (princ) )
    : X/ t8 k+ f) ^' x

  2353. 5 A* y  Q6 g) f
  2354. ;==================================================================================2 d# {5 N% k6 g* X" A  d! b8 U
  2355. (defun c:ang (/ ent pt1 pt2 ang)
    2 `3 s$ p" t* v! F' k
  2356.    (setq cmd (getvar "cmdecho"))
    # c- \( s" e& t
  2357.   (setvar "cmdecho" 1)
    8 @, I1 m/ m) x/ Z, ?" Q" R: J& p
  2358.   (prompt (strcat"\nThay doi truc toa do theo duong thang chon truoc"))! X) m9 ^1 D! M( A& m
  2359.   (setq ent (entsel "\nChon duong thang:"))( l' X' l9 n' k( |  A, g3 _8 T% ^
  2360.   (if ent 4 V) C: K4 L  u; {. V* e* A1 i
  2361.    (progn% \4 V7 d4 q$ @4 C8 Z, P
  2362.     (setq ent (entget (car ent)))' ^2 r9 l* q* `" H0 M* I
  2363.     (setq pt1 (cdr (assoc 10 ent)))
    , |: N: `5 M* |, h) O; r8 Q$ L9 j
  2364.     (setq pt2 (cdr (assoc 11 ent)))" ~1 m" h8 d0 P( U& M
  2365.     (setq ang (angle pt1 pt2))7 B' C" ~4 Z2 ]/ }4 S
  2366.     (setq ang (/ (* ang 180.0) pi))
    & ?9 L7 @7 d" l. S6 [. x
  2367.     (setvar "cmdecho" 0)$ f5 u6 ~% A8 @. _" w3 [/ ]# W# J
  2368.     (command "setvar" "snapang" ang)! [# x" e& w& P1 n
  2369.     (princ "\nGoc cua truc toa do moi : ")
    9 U$ Z: A% X- Q+ X
  2370.     (princ ang)
    1 c: K1 D: v; M5 b4 ^+ _
  2371.    )- y' l2 D' W2 |! G$ V
  2372.   )
    3 q. L% h5 w8 B! M
  2373.   (setvar "cmdecho" cmd)
    9 G8 x* E% h1 ^
  2374.   (princ): v4 S: b$ z% |. O& M* I. M
  2375. )7 g! F7 A- h/ O+ r! E5 |6 p
  2376. ;==================================================================================
    5 T8 z) _; G# J4 V( C
  2377. ;==============================   KY HIEU DOI XUNG   ==============================7 P7 U$ f, j3 ~/ H; Z+ W. ?  U
  2378. ;==================================================================================
    $ ?7 F+ i$ q" o2 C( W! h
  2379. . q  J3 r& f5 e2 ^9 Y$ |
  2380. (DEFUN C:DX (/ CMD OSM OLDERR PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 PT9; z/ c" R4 P* ?; Y) Y$ E
  2381.                 SZ G45 G135 G90 G180 SS loi)
    3 S$ p( B" L" n; d5 ]4 m
  2382. (defun loi (s)9 m9 m4 e: u; j. F6 K$ }5 ]
  2383. (if (= s "Function cancelled")
    9 z$ ]2 K& k+ L+ G
  2384.      (princ)
    0 z) X, J7 W7 I8 [  S1 W
  2385.      (princ (strcat "Error:" s))
    * {2 }4 k* q$ \1 \, |6 Z
  2386. ): V/ T5 m8 U- X' t
  2387.          (SETVAR "CMDECHO" CMD)
    ) f/ h+ |: C/ H, y! Y4 i9 \) F6 N
  2388.          (SETVAR "OSMODE" OSM)0 \8 c/ k# R1 _  [/ Y; x
  2389.         (SETQ *error* OLDERR)
    # z1 Q$ L# Y1 i& y- k
  2390.          (PRINC)
    4 n6 Q- Y6 S' j$ Z
  2391. )1 p3 @; _' V' n& F- R
  2392. (SETQ CMD (GETVAR "CMDECHO"))
    ; r+ v& n( k9 q. p! F5 N6 S
  2393. (SETQ OSM (GETVAR "OSMODE"))  n: G4 K' |4 X0 J2 i" l$ q
  2394. (SETVAR "CMDECHO" 0)
    8 I; Y8 k; U. D! D
  2395. (SETQ OLDERR *error*  r9 l( V) p7 P$ `2 [9 p8 U6 R
  2396.         *error* loi)3 O( p9 \1 t- `5 o6 o
  2397. (SETQ SZ (GETREAL "Size <1>:"))
    8 b+ K5 Q7 t2 j! ~
  2398. (IF (= SZ nil) (SETQ SZ 100))
    4 A* T, ]2 R2 i! T. p% d. ^+ G
  2399. (SETQ G45 (/ PI 4))7 W  @* ~$ i7 b% g4 x
  2400. (SETQ G135 (* 3 (/ PI 4)))
    7 a- b8 e( q% H. t; p
  2401. (SETQ G90 (- G45 (/ PI 2)))6 H" {: Z$ o! F, c7 M0 e
  2402. (SETQ G180 (+ G135 (/ PI 2)))4 S- {, D% }+ p  |
  2403. (SETQ PT1 (GETPOINT "\nDiem doi xung:"))2 A1 {# b) m! b: x$ a4 I
  2404. (SETVAR "OSMODE" 0)" ]2 j4 w/ n0 b0 W" G- p
  2405. (SETQ PT2 (POLAR PT1 G45 (* 2 SZ)))" h4 u1 f7 @# B4 Q" n; h# h
  2406. (SETQ PT3 (POLAR PT2 G90 (* 2 SZ)))$ i. O' Q: z  U8 \. v* I5 s
  2407. (SETQ PT4 (POLAR PT1 G45 (* 1 SZ)))
    ' d2 s5 B: E5 U9 f) ~! L: g7 `2 u
  2408. (SETQ PT5 (POLAR PT1 G135 (* 2 SZ)))
    ' w( W5 c( v: E! G/ a
  2409. (SETQ PT6 (POLAR PT5 G180 (* 2 SZ)))) S( K: h# H) _4 _8 k( V- |+ N
  2410. (SETQ PT7 (POLAR PT1 G135 (* 1 SZ)))
    : ?& |, p$ y8 g) w8 w' Q  [
  2411. (SETQ PT8 (POLAR PT1 G45 (* -0.7 SZ)))
    ) Z7 s$ x8 O0 E9 |: Z* y5 i
  2412. (SETQ PT9 (POLAR PT1 G135 (* -0.7 SZ)))  V8 H0 u' u9 r, s) g
  2413. (PRINC "\nGoc quay:")
    " B2 D# I  Q: Y* f# g* ^: F
  2414. (SETQ SS (SSADD))
      {. d# L) G% o4 a$ u
  2415. (command "layer" "m" "Dim" "c" "" """")/ R, ^' `3 _1 W' m/ p  |1 ]
  2416. (COMMAND "COLOR" "1" "")3 v7 F8 ]2 W; e  _6 K# M; j2 c5 `
  2417. (COMMAND "LINE" PT8 PT2 "")
    0 I# N( g: l: T. `. K( J' w( S+ n
  2418. (SETQ SS (SSADD (ENTLAST) SS)), o  s' X% ?- a: a& ^
  2419. (COMMAND "LINE" PT9 PT5 "")
    0 |& j% E: m$ \0 j" `/ i9 ~* _
  2420. (SETQ SS (SSADD (ENTLAST) SS))& }. ]7 L& L0 z6 q! W+ R
  2421. (COMMAND "COLOR" "1" "")
    6 E/ b7 o9 H+ O) g8 p
  2422. (COMMAND "SOLID" PT2 PT3 PT4 "" "")4 V0 U* b7 k/ ~: D4 R! \& b  n
  2423. (SETQ SS (SSADD (ENTLAST) SS))+ @" p' G. H/ L7 ^
  2424. (COMMAND "SOLID" PT5 PT6 PT7 "" "")
    2 @; G7 t& `1 {
  2425. (SETQ SS (SSADD (ENTLAST) SS))
    7 j4 W  T( e" f( G" ]3 A, A& o: u
  2426. (COMMAND "ROTATE" SS "" PT1 PAUSE)3 q* B2 N, h% X: _0 M
  2427. (COMMAND "COLOR" "BYLAYER" "")! U; ]/ z; G# @& @
  2428. (SETVAR "CMDECHO" CMD)2 E& q; k5 i  \' D! R- M4 F
  2429. (SETVAR "OSMODE" OSM)
    " q6 e" s5 c% x4 y+ {6 s
  2430. (SETQ *error* OLDERR)6 w* ^) V" L0 T3 q/ N! u8 Y- I. U) K
  2431. (PRINC)
    5 u% ~( y) z# Y& |) H; x" @/ Z
  2432. )3 m7 G# G! a5 X0 N

  2433. , V9 ^+ E9 ~8 v( \* F
  2434. ;==================================================================================
    5 U/ ^- e* v: p+ o1 r* A3 N! j
  2435. ;=================================   KY HIEU TRUC   ===============================
    - V$ ?8 U8 ]5 j
  2436. ;==================================================================================
      }, t7 d2 O* V4 b# h2 W
  2437. , b% R6 M) [% t3 n8 c; m
  2438. (defun C:vetruc ()
    % G3 O0 z- {3 \
  2439. (setq bk (getvar "USERR3"))
    6 _: H  m- i; Q" b
  2440. (if (= bk 0)
    # s- Y* X/ a4 D  @
  2441.   (progn
    ; p2 r6 J+ a7 F$ Z! l5 B0 s- s
  2442.     (setq cont "1")9 h9 O. w0 J- o2 s( E
  2443.     (setvar "USERR3" 1)
    5 v5 R1 U1 Y4 Q' Y+ [4 U" _
  2444.     )
    * v2 V" U9 m0 o; _
  2445.         (setq cont (rtos bk))  q6 Q4 R2 R6 e6 r+ @! Q# T
  2446. )
    - G; j/ |( U# _( a) R+ i/ h
  2447. (setq pt1 (getpoint "\n Nhap diem dat:"))
    6 e+ T& _) r" ?( Q7 w
  2448. (command "layer" "m" "Dim" "c" "" """")
    9 s) l" v/ @: r1 n5 }8 p3 E
  2449. (command "osnap"  "")4 i4 I' K) Z/ V" h# J, q5 {9 j) C
  2450. (COMMAND "COLOR" "7" "")
    ( C  E* ?, s, N$ B. w0 T5 K% S
  2451. (command "circle" pt1 150 "")" j8 H/ L. ^5 q8 Y( |. U
  2452. (setq pt2 (polar pt1 0 150))( ]" z& o' S" @$ Z4 @
  2453. (setq pt3 (polar pt1 (/ pi 1) 150))
    , A' z7 p- i. i: @$ S0 k( t
  2454. (setq pt4 (polar pt1 0 300))
    ' J1 E! ?* r: k% d
  2455. (setq pt5 (polar pt1 (/ pi 1) 300))- G: G& N! J9 w5 M0 j
  2456. (setq pt6 (polar pt1 (- 0 (/ pi 2)) 150))
    4 B% k' Q5 q- Z3 F% E
  2457. (setq pt7 (polar pt1 (- 0 (/ pi 2)) 300))6 u, U  S3 C! h4 Q5 Q
  2458. (setq pt8 (polar pt1 (/ pi 2) 150)). k) D. H/ t7 B
  2459. (setq pt9 (polar pt1 (/ pi 2) 300))9 ~/ u1 p" _# U& r5 O
  2460. (setq pt10 (polar pt1 0 150))1 {5 Q; ]( V' _) t" O. u
  2461. (setq pt11 (polar pt1 (/ pi 4) 150))
    8 q3 m% K+ I: c" I) B
  2462. (COMMAND "COLOR" "BYLAYER" "")
    ( Y) g" u+ I" Z3 f4 \. ?# C$ o: R/ x
  2463. (command "line" pt2 pt4 "")
    / u5 x' X% }. L" `4 y4 |8 p3 J
  2464. (command "line" pt6 pt7 "")
    & q9 F+ J: ~1 B! c$ n; J8 i
  2465. (command "line" pt3 pt5 "")9 v  |0 C/ \7 V8 J4 L7 U* j
  2466. (command "line" pt8 pt9 "")( Z- f# u9 ]1 F9 ?* W/ e
  2467. (setq dk (strcat "\n Size:<"cont">"))
    8 C9 C) }, D* e5 z3 q& r8 b
  2468. (setq bk (getreal dk))
    & Y6 x. S+ F) J- S! R4 i
  2469. (if (= bk nil)3 B& w* N* W" V+ a5 k
  2470. (progn
    7 X4 K( f, \  b0 W
  2471.   (setq bk (getvar "USERR3"))% E' i3 {$ n: |7 x. l: X
  2472.         )
    ) q( X( a1 j7 D7 f- v' r9 H0 s  x8 C
  2473.   (setvar "USERR3" bk)
    * ^9 F$ {( I/ v& w1 ?
  2474.   )
    $ x4 x$ H# ~8 N1 H. C& V  _
  2475. (command "scale" pt4 pt5 pt7 pt9 pt11"" pt1 bk"")
    / R3 J& J! C2 O( Q
  2476. (COMMAND "COLOR" "7" "")
    . v  {# O5 f' e
  2477. (COMMAND "STYLE" "Truc"  "impact" "" "" "" "" "")
      S. p6 `: E& I2 y# y- y
  2478. (command "text" "j" "mc" pt1 (* 150 bk) pt10 "A" "") 4 u$ D& z* A/ W) V8 ?' Q
  2479. (COMMAND "COLOR" "BYLAYER" "")* F4 Z: Q+ {+ G/ p* ^
  2480. )0 b7 W1 B  }( Q: H( t) R3 m

  2481. : v. f' M2 c: {7 s7 r
  2482. ;=====================================================================* V9 h; G) v' W6 R
  2483. ;CA - Reverses the case of text.  (Upper to Lower and Lower to Upper.)8 A$ u. ]! G5 R" r1 z# }8 I
  2484. ;5 N" {- l( h2 p+ x/ ?' O
  2485. ;Jeffery P Sanders7 d2 h* Y' p/ V' q! r
  2486. ;
    * C* K% q0 C  ~$ G. V  x
  2487. (defun C:CA(/ en enlist tx newtx cnt tp asc note)
    6 I3 S: Q9 W0 t" ^! o! o
  2488. (setvar "cmdecho" 0)5 R0 P0 s. G. [" E; _# K1 e
  2489. (if(setq en(entsel))# E4 a1 E* {. X+ ]# Z% P
  2490.    (progn
    1 F; {  d! o* j, C. H! \- t
  2491.       (setq enlist(entget(car en)))+ O' j0 {6 A9 I+ o* H8 E3 e
  2492.       (if(= "TEXT"(cdr(assoc 0 enlist)))5 w, y& d. `% g* v; y9 C7 |
  2493.         (progn7 E! \7 |7 S" I3 E- E/ H: G
  2494.           (setq tx(cdr(assoc 1 enlist))8 N' |- J1 }* w( x. Z" R
  2495.              newtx "" cnt(strlen tx); w2 c' J0 J. ?/ a# l0 Z% I
  2496.               note "\n...CASE Reversed. \n "
    $ S6 C$ L; E1 @/ l  u, g! J
  2497.           )
    ' F5 `  ?# \8 j& k! U0 X* f) o
  2498.           (while (> cnt 0)
    , r- ]! H' I3 j7 P7 h
  2499.              (setq tp(substr tx cnt 1))1 U" B! ?& N, q! c: J( x
  2500.              (setq asc(ascii tp))
    " Y# B' Q% K( n, D
  2501.              (if (> asc 96)7 c! E4 t9 K" g8 V: w5 M7 i
  2502.                (setq tp(strcase tp))
    , Z1 h3 L% \! d# \3 l  l; k
  2503.                (setq tp(strcase tp T))/ e5 T: Z* n' c6 ?6 [6 S0 t1 M6 b' N
  2504.              )
    9 P; l1 E0 p$ ~) r7 m  N' X
  2505.              (setq newtx(strcat tp newtx))5 K1 N  t* U2 L- K
  2506.              (setq cnt(- cnt 1))/ E" G6 e* D  r* L+ n/ z
  2507.           )3 L) s7 y7 A- b+ M, n+ P3 B9 a" D9 E( m
  2508.           (setq enlist(subst(cons 1 newtx)(assoc 1 enlist)enlist))
    1 S' P! v/ x3 r1 R- k
  2509.           (entmod enlist)
      y7 W; e' F# Z
  2510.         ): @# j0 c! w4 I& s
  2511.         (setq note "\n....Text Only Please. \n ")" u6 b  J% z1 P9 ]3 J3 J
  2512.       )0 M) ^% k- y6 a0 Q- Y9 Z. L
  2513.    )
    + A1 L- z+ }7 ^4 X2 k
  2514.    (setq note "\n....Nothing Selected. \n ")
    ! Z9 a; h9 P$ @( h. R9 E+ D
  2515.   )' r% |" W4 s7 Y: M* I
  2516.   (setvar "cmdecho" 1): }4 v5 @1 m0 Y3 @, z* D
  2517.   (princ note)
    , n$ V- L) J# \$ E& t, C- j  v+ V" x
  2518.   (princ)
    ) t: K) @7 K! q! A
  2519. )
    ; b3 U# w" Z6 \$ W6 q% K
  2520. ; Y( a, S) u3 ?& c: }, R0 h
  2521. ;=====================================================================, G! o& B( U+ K* }$ |
  2522. ;==================== NEW TEXT STYLE UPDATE ==========================! Z, y. @0 }+ T5 I3 |3 ~! Q
  2523. ;=====================================================================' s& k) A$ c) F

  2524. - R! i5 V- @7 J1 F! r$ B
  2525. (defun c:nS (/ tdt ssdt sodt index)5 Y, K# u9 b; z, p9 J
  2526. (defun ObjName (ssdt /)
    + C: Q2 |3 D9 u8 s- ^4 Y
  2527. (cdr (assoc '0 (entget ssdt)))5 d* l6 o4 D+ n9 `. K
  2528. )
    + Z2 [* L/ U8 O/ X
  2529. (defun MoPL (ssdt /)
      }! X1 i' j/ g. u) B
  2530. (= (cdr (assoc '70 (entget ssdt))) 0)& T) `2 `) m" O5 y& o
  2531. )
    ) g" \! Y+ g0 S- Y0 N2 ^
  2532. (defun NoiPL (ssdt /)
    ( N+ R- n# f1 G7 o
  2533. (if (MoPL ssdt); |7 W! W& d( k
  2534. (command ".PEDIT" ssdt "J" "All" "" "X"). k4 j: T+ [6 [9 S2 Z" }% n
  2535. )( O+ c) T1 N( s. |6 S1 O
  2536. )
    6 E6 ~  d* X4 X/ u: K" _
  2537. (defun NoiLC (ssdt /)
    ( x4 P. G$ X: ^. \2 O- k
  2538. (command ".PEDIT" ssdt "Y" "J" "All" "" "X")
    3 j6 E7 |& v& M- y
  2539. )
    * `, E& T3 ?. R2 i8 @; f  ^. L
  2540. (setq
    + x; X2 C* I3 ]# k) z. O% J
  2541. tdt (ssget)
    6 Z- a9 W0 d: m
  2542. sodt (sslength tdt)& A  {9 {  d; ]- \& v
  2543. index 0) r& Q2 x1 }6 h+ r5 y5 d
  2544. )
    & f, M+ d1 S& B0 v
  2545. (repeat sodt! y& m% e: z0 g+ M! T  O: @
  2546. (setq" E$ C$ ^  F. W/ L- i; ?
  2547. ssdt (ssname tdt index)
    4 X; H$ n9 L5 n0 L& b% U& i3 P
  2548. index (1+ index)
    5 k8 d) V  p/ ~: \( ]
  2549. )
    / ?  S' L7 r  N/ u' k0 x" p
  2550. (if (or (= (Objname ssdt) "LWPOLYLINE")
    0 D- w; d6 z2 c8 a4 Z* q1 c
  2551. (= (Objname ssdt) "POLYLINE")
    % j$ n) h9 t; x1 G. [# h8 |8 s! c
  2552. ): e( n# ]& R+ }- l
  2553. (NoiPL ssdt)5 M2 u" P1 D. Z7 K4 K6 a" @* Y- q7 P
  2554. )/ l& y, |5 ^1 @9 U
  2555. (if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))' u  i* e% x- Y) C5 ^  l
  2556. (NoiLC ssdt)2 o2 {+ P* M4 J' Y
  2557. )* Y8 k$ }& G2 ?  v
  2558. )% m2 d+ {1 I: J* N1 @# F
  2559. (princ)7 h6 c  v: E5 W7 o$ X
  2560. )& D9 p0 |9 ^6 s9 U. o! K

  2561.   u& g" z" j: }' H! o0 c
  2562. ;=====================================================================
    & {4 `  F; `- e1 S+ o$ a7 o8 `
  2563. ;;; AREAM.LSP
    . T4 l. i" U& N5 ?3 D( ~
  2564. ;;; Function: Calculates the total area of selected objects
    , W0 f1 V$ \* I! o& `% ^9 p
  2565. ;;; By Jimmy Bergmark7 C2 Z8 b) \8 ?2 }
  2566. ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved9 A4 B, x6 G9 K' \; n5 K
  2567. ;;; Tested on AutoCAD 2000
      f; Q4 _6 W( }) ?
  2568. 6 B' p1 c6 T6 b  r/ j
  2569. (defun c:ea (/ olderr oldcmdecho errexit undox restore ss1 nr en tot_area)
    . h) a; ^" N  D/ j& F
  2570.   (defun errexit (s)
    6 Q4 B# w3 l6 E  H; ~9 |& f/ P4 H. h
  2571.     (restore)
    5 f$ G. s( j0 _0 @+ T8 b5 V
  2572.   )6 C7 n/ X! M2 ]" x" |. s
  2573. 3 o2 l: h2 o) V
  2574.   (defun undox ()7 o. Z' G' y, _
  2575.     (command "._undo" "_E")
    / k- i% Q0 P" m& y
  2576.     (setvar "cmdecho" oldcmdecho)
    ; P: b. z( ]9 f+ G# y
  2577.     (setq *error* olderr)
    4 L$ S( M/ x4 }
  2578.     (princ)
      y) [4 |4 d" k" b& R
  2579.   )
    7 o9 e( D. s& R# j3 F1 J5 b

  2580. 0 e6 j' w  |- i5 ^2 Q- v
  2581.   (setq olderr  *error*
    % V9 _" @$ B& K0 ?2 W. }1 \9 U
  2582.         restore undox
    # }4 I7 o* l, I* q
  2583.         *error* errexit
    % H# h) _5 B. D  z
  2584.   )3 v& I; i9 y% l! E8 @% E* C" n
  2585.   (setq oldcmdecho (getvar "cmdecho"))0 k9 D6 W) u% i2 }' E, M
  2586.   (setvar "cmdecho" 0)1 w- F! O# X1 e+ `4 W; o
  2587.   (command "._UNDO" "_BE"), _( V6 N( T. T$ |" [, O
  2588.   (if (setq ss1 (ssget '((-4 . "<OR")
    ) R8 L( V  @9 K, X& X! X
  2589.                          (0 . "POLYLINE")
    9 I: N1 }& E& b8 J  X" X: e- ?
  2590.                          (0 . "LWPOLYLINE")
    : k, d; R7 n4 F1 h8 A' A6 U
  2591.                          (0 . "CIRCLE")
    . ^! B; ^: w. C7 }& W% E- D/ n) V
  2592.                          (0 . "ELLIPSE")
    0 y$ y; ~4 b  v  F0 I1 S
  2593.                          (0 . "SPLINE")+ R( e- K7 `8 K" B& n+ x
  2594.                          (0 . "REGION")
    3 S8 ]4 p: l8 `; @, Q5 [( \& n, I  }
  2595.                          (-4 . "OR>")
    . k) M7 T5 U4 z" v# j. W  ~
  2596.                         )
      d8 E: y+ ?# p; {$ J  s
  2597.                 ). J8 C+ A/ [; s$ P2 R+ J
  2598.       )8 t; q7 n2 ^9 L, f( m8 B' h/ K! c
  2599.     (progn
    ) v  J' j  E% w
  2600.       (setq nr 0)( t. W; [: K+ k: z  u( p/ h
  2601.       (setq tot_area 0.0)  P# F1 n) w4 n/ _5 v' i. \- n
  2602.       (setq en (ssname ss1 nr))
    2 Y( E" }# j9 x3 a% l4 }
  2603.       (while en( n8 C1 s* V& p" S* F
  2604.         (command "._area" "_O" en)7 g2 @$ j  P7 B5 g+ K: K
  2605.         (setq tot_area (+ tot_area (getvar "area")))  i+ l. C% H7 T9 D$ ?
  2606.         (setq nr (1+ nr))1 j+ W4 I- g, k! }7 O& s' m& d
  2607.         (setq en (ssname ss1 nr))3 N2 c. S- f. I; i$ ~4 c9 H2 N" H
  2608.       )
    9 y4 s% G& o% X, w* \
  2609.       (princ "\nTotal Area = ")
    4 \% U+ q3 B# [4 G
  2610.       (princ tot_area)
    & s# k' X3 ]5 r7 @8 t& S6 _/ c
  2611.     )3 \% q1 G& }& i
  2612.   )/ S8 V6 ?: u- x' p+ U
  2613.   (restore)( P! D, X- f% R
  2614. )$ Z8 |/ ^  |' ^% o

  2615. # ?8 Z8 S% o) L; m
  2616. ;=====================================================================
    3 O: C8 z0 s5 ^0 J2 S
  2617. ;;; By Jimmy Bergmark
    4 d" j" B6 g+ t% a9 w( t% }* t2 B  c* x
  2618. ;;; Copyright (C) 2008 JTB World, All Rights Reserved4 t3 t5 k( v" a8 V
  2619. ;;;; R6 j+ F7 w7 o% w2 ^* H
  2620. ;;; Created: 2008-03-31/ \2 H, N, p% s/ ^
  2621. ;;;" F& o2 T' S  X2 p" s
  2622. ;;; Convert Attribute definitions to mtext% Q' w+ J+ U7 o7 d/ H% m
  2623. ;;;8 N- @9 ]7 k! D2 |3 H, L% K$ _  [

  2624. ) P6 `* _% D# W
  2625. (defun c:ATB (/ eset1 blkcnt en enlist tag1 ht pnt vl space)6 ]5 |! n8 j' g3 E; ~* q
  2626.   (setq        eset1  (ssget (list (cons 0 "ATTDEF")))/ O8 \% N1 @$ x* S. r! o. \
  2627.         blkcnt 0
    3 N3 m1 t7 @& J* Q- r- M$ @0 A
  2628.   )
    * ?* M# X) Q) q& _8 J. z

  2629. ) v8 q: r# O/ `( \
  2630.   (if eset1% Y. |% r4 ^( a0 v# P5 T( Q" Z3 X
  2631.     (while (<= blkcnt (- (sslength eset1) 1))3 E& U3 G* D/ w$ b2 t; L  M
  2632.       (setq en           (ssname eset1 blkcnt)
    - d. }7 B" @! Y0 L4 P
  2633.             enlist (entget en)
    6 H; ?3 i, V  x
  2634.             ht           (cdr (assoc 40 enlist))- x" T% [: h6 m. s( y" n
  2635.             pnt           (assoc 10 enlist)! i0 O  i* w, t. ~( S5 w, H  _* Y! Z/ g
  2636.             pnt           (subst (+ ht (caddr pnt)) (caddr pnt) pnt)
    & N" B- g5 k' M1 l$ Z3 {2 y0 m
  2637.             space  (cdr (assoc 67 enlist))
    1 ?+ C) Q6 p  s% L+ W. s7 ?
  2638.       )
    2 c4 i& ]6 q, b8 X
  2639.       (setq vl (list/ u, P  A3 V; v0 z0 Q
  2640.                  (cons 0 "MTEXT")
    1 v  _1 z* S4 s" d* o2 T
  2641.                  (cons 100 "AcDbEntity")3 I; T* W/ F1 t  k
  2642.                  (cons 100 "AcDbMText")  \# F0 |' C3 Z  s3 R" H/ N( V, p- \
  2643.                  (assoc 7 enlist)
    + V. I0 K  G- \! O, S0 K- n' p
  2644.                  (assoc 8 enlist)
    ) d  l4 \+ X3 r8 R' t; P. J
  2645.                  pnt
    ; B: C9 u9 Z! ~  W) ]
  2646.                  (assoc 40 enlist)
    ; F3 G4 c1 S6 g! S3 J
  2647.                  (cond ((assoc 62 enlist))" O9 Y  d. G! h& \9 O
  2648.                        ((cons 62 256))
    / C" N1 `% x. i( @( v) {
  2649.                  )
    7 p. O/ V  u* s) O+ g) x5 s  j- Z
  2650.                  (cons 1 (cdr (assoc 2 enlist)))$ @7 M% L5 E" m& ~
  2651.                  (if (= space nil)5 S& B- ?( h  {) B
  2652.                    (cons 67 0)* I) {1 c4 A0 t* I
  2653.                    (cons 67 space)
    7 D. c" x" P9 ~( O8 n7 E
  2654.                  )! l7 B0 j) Y3 i! @; r
  2655.                )  E* ^* A* e; u; l) b& Q- ^
  2656.       )
    6 b- a( G- K" O/ J, v
  2657.       (entdel en)
    7 b. U% ~0 L' j" o
  2658.       (entmake vl)% n% _% o" P& B  z- }7 P0 [7 o
  2659.       (setq blkcnt (1+ blkcnt))
    % S2 p2 D3 x( R. d" L# S
  2660.     )
    5 R9 E1 T2 i% A# J$ X
  2661.   )
    . R6 \9 T, |  L% [- d
  2662. )
    $ `7 m% u* }; }$ A/ [+ N

  2663. % u4 l. t, F8 j0 m
  2664. ;=====================================================================6 Z% }+ e: Z: ]( b

  2665. , ~) s) \5 v$ p. p) O2 _
  2666. (defun c:xxx ( / cumdt dodai thoat dem ten doituong textxl dem goc toi)
    ! [0 }; ]8 _) A/ y( c
  2667. ; Khoi dau cua chuong trinh8 f2 ?! K8 t6 n" y
  2668. (princ "\nCopy Inteligent...\n")3 e$ w7 p- D9 M" G' E! o+ q
  2669. (setq         luuecho        (getvar        "cmdecho")
    3 S# z# T6 x: t( G3 J/ R" g" v
  2670.         luu        *error*
    0 A/ @7 I3 |7 q# e9 l
  2671.         *error*        ketthuc
    3 t% P4 |* j+ c5 c
  2672.         cumdt         (ssget)
    , J2 S2 K3 N6 J1 r  _% e2 \
  2673.         dodai         (sslength cumdt)# z& M7 j- k' _& v4 m: [" m
  2674.         goc                (getpoint "\nSelect base point:")
    9 {) X# p8 f2 ?
  2675.         thoat                nil  \) O- H$ L/ e' R5 H
  2676.         dem                0! X, e4 {: z: J1 E
  2677.         textxl                nil% @! d) R1 O; R1 z5 V2 y& e
  2678. );
    6 @8 n7 I# O9 Q4 B6 w+ G0 r8 l' h
  2679. (setvar "cmdecho" 0)
    # Y7 I- ~8 m1 U  d
  2680. ; Loc ra duoc ong text de xu ly
    6 O- {7 R3 C! U0 g* i! {' o- m
  2681. (while        (and         (= thoat        nil)
    ! `9 d( _- Z% @5 i
  2682.                 (< dem        dodai)
    . L4 j" O; g6 C7 v0 }& B4 [5 C
  2683.         )
    8 N8 u0 F6 W1 E* b( V/ r. c) G
  2684.         (setq         ten        (ssname cumdt dem)7 T( d) V7 A% v8 v# _, d
  2685.                 dem        (1+         dem)* r" k0 u5 s1 A7 A. |
  2686.                 doituong (entget ten)
    5 M- }2 \( c5 p# e1 ]" e$ A
  2687.                 kieu         (cdr (assoc         0        doituong))                        ( v/ I: e( ]! K) c6 b1 Z, [
  2688.         )+ y7 [9 n3 `7 K3 b5 p" _
  2689.         
    - j. D1 D6 b! u& X* t
  2690.         (if (or (= kieu                "TEXT")
    ! q5 P- `5 H, T; H3 j& R( U
  2691.                 (= kieu         "MTEXT")        
      i* F) g9 W3 P
  2692.                 )
    1 Y9 w- F% S# I; z6 G1 {
  2693.                 (setq         thoat        T
    0 a& p  Z! d1 m6 w
  2694.                         textxl         (cdr (assoc 1 doituong))         
    4 h, p& W* A# e: T5 O" t* Y6 A
  2695.                 ); ?" Q: E" D7 I7 o2 Z+ e7 Y
  2696.         ), ]) W" o8 }+ q+ V' `/ }3 F! T: w
  2697. );
    ( S3 {+ h+ Y' K+ ^$ e
  2698. (while T
    4 v& B2 J% `" B
  2699. (setq        toi                (getpoint "\nSelect next point: " goc). [2 T/ ^2 K" }- B
  2700.         vitrilech         (list         (- (car toi) (car goc)) (- (nth 1 toi) (nth 1 goc)))
    + f: N) N  a% Y+ E
  2701.         dem                0
    ( Y. i% H/ R, q( l" N& k
  2702. )9 v8 B& k; M+ N0 a, }
  2703. (while        (< dem dodai)
    . a' V0 |& w2 u7 ?
  2704.         (setq         ten        (ssname cumdt dem)! l! J! e4 e' A& S7 \; _/ `
  2705.                 dem        (1+         dem)
    ) o' r: K; A7 u# f/ v, \* m* d
  2706.                 doituong (entget ten)
    . }1 F, J) F: d  \5 w- r0 T1 d
  2707.                 kieu         (cdr (assoc         0        doituong))                        
    . x" Q8 z. p* C' @, ?3 ?" S( B5 W
  2708.         )
    0 S; o% r  ]9 o8 T! o3 j

  2709. 3 N+ X1 m) }! _" J% _
  2710.         (if (or (= kieu                "TEXT")% Z" h" {: \' S  `8 Q1 W) c
  2711.                 (= kieu         "MTEXT")        + z9 g8 \) ]/ j8 m" D$ r" V
  2712.                 )9 p# L6 t+ U+ `' I
  2713.                 (doitext        ten)
    $ u; Q2 l: O) x& T; |- G9 y
  2714.                 (copy_dt        ten)
      I2 w6 `; v, Q3 s2 y6 }, }+ |
  2715. + I. @7 y' z6 Z7 C
  2716.         );if
    , h0 t; _" f  a
  2717. )/ t9 N5 v6 K( {/ d
  2718. );while4 m" _' Z' F; m" w# f# ^
  2719. (ketthuc), q" X7 N; q' n0 n( J
  2720. );defun
    2 T8 B/ ~. a$ I/ l* y# U( A
  2721. (princ)8 @9 T  W% i1 |
  2722. . D, H' t6 a& t- @
  2723. ;=====================================================================9 ~" O, e  n& |3 [+ E2 ^
  2724. ;;; By Jimmy Bergmark4 e5 ?  l3 U) P% t* Z8 r4 q' F# O
  2725. ;;; Copyright (C) 2008 JTB World, All Rights Reserved/ l4 z" C+ m9 h4 M
  2726. ;;;8 C# {# X+ V/ p8 d4 `; S# @
  2727. ;;; Created: 2008-03-313 d6 X; T" s, _9 P' k
  2728. ;;;
    . w; A; j& M4 N' ~+ [5 l3 t
  2729. ;;; Convert Attribute definitions to text2 r; Z% j4 F- w
  2730. ;;;
    ) p5 _1 M  T( \7 g3 M. F$ M
  2731. # E7 ?4 m; m9 u& A
  2732. (defun c:ATT (/ eset1 blkcnt en enlist vl space). t# j8 A, K: U. \
  2733.   (setq        eset1  (ssget (list (cons 0 "ATTDEF")))4 q% v+ }  g: Z7 C/ j! i
  2734.         blkcnt 0
      Q6 `* }4 r7 l0 Z9 s2 T
  2735.   )% Y: i: V  g! x' w% u7 N
  2736. 0 ^! r0 t2 ~# E% q2 Z+ _
  2737.   (if eset1$ |" x7 @7 Y' P% j7 W# f
  2738.     (while (<= blkcnt (- (sslength eset1) 1))5 M1 @; R+ M1 u
  2739.       (setq en           (ssname eset1 blkcnt), s6 U; f0 M% S+ R& W/ O" h
  2740.             enlist (entget en)
    ' W7 Y4 B5 k' ^
  2741.             space  (cdr (assoc 67 enlist))8 z7 U. |9 R; a+ n  a
  2742.       )2 R1 Y% Y9 |$ G. i3 e0 B* E" ]
  2743.       (setq vl (list$ a( l. W; r2 G1 k8 j
  2744.                  (cons 0 "TEXT")/ _: ?) s5 d8 }/ X5 [  [0 f* R
  2745.                  (cons 100 "AcDbEntity")
    9 {8 D% N( Q4 e/ F+ \
  2746.                  (cons 100 "AcDbText")
    1 t0 z6 M) p: @$ G
  2747.                  (assoc 7 enlist)
    . N1 ?# \, a1 ?& n8 C
  2748.                  (assoc 8 enlist)# O; u1 q- W: F. D. ?( H
  2749.                  (assoc 10 enlist)
    + P+ e7 C2 V, p% Y8 Z
  2750.                  (assoc 40 enlist)6 S5 f/ P& K3 Q0 N( X) @9 ?
  2751.                  (cond ((assoc 62 enlist))2 ^+ a$ A8 z9 s8 e! i
  2752.                        ((cons 62 256))+ o5 X. o$ o* Y8 t9 M) Y* D2 J
  2753.                  )0 b/ z- J% U; p7 l/ J* v  [) c% }
  2754.                  (cons 1 (cdr (assoc 2 enlist)))7 Q2 v: R1 R4 M; N; x" q
  2755.                  (if (= space nil)+ W& H/ }0 `* T- b+ s! e) M0 @
  2756.                    (cons 67 0)# g! a; T3 K2 x. f$ o, U7 q
  2757.                    (cons 67 space)
    6 [6 V* F5 X) q- H7 ~
  2758.                  )
    " r7 D% J. t, Q$ ^2 Y
  2759.                )
    ) u5 H! c$ U) ^$ h$ G
  2760.       )
    ( B) v! x0 i( S' t
  2761.       (entdel en)
    7 H0 {; [* I2 Y; g
  2762.       (entmake vl)
    " h! P5 Z# O. r% v
  2763.       (setq blkcnt (1+ blkcnt))
    ) h- A7 G3 w( y2 E# J: N- X6 b
  2764.     )0 _: y# Q( J+ a/ N8 _6 i
  2765.   )
    / B& w  j2 }, G  Q* i2 Z
  2766. )
    4 W) R* R2 V/ t" T
  2767. ;=====================================================================) V1 I+ I" s) `% J: Q' d- f
  2768. ;============================ Doi Truc ===============================
    2 v6 F1 y* }$ v
  2769. ;=====================================================================* T$ m& b8 t, W& y! Y$ \- d
  2770. % T) P6 g; Y9 q# o. }/ j0 m* s! j
  2771. ;=====================================================================
    $ U! |: y, Z% X' K
  2772. ;=============== FUNCTIONS GA 1+3+5+7+9+11+13+15+17+19 ===============
    : F; N/ X1 T, G. \) s3 L* J0 P
  2773. ;=====================================================================
    ) q* u8 K9 i# S
  2774. (defun c:ga1 ()" F2 Z. g( o5 g  x: b4 ]2 U
  2775. (setq a (getpoint "\nChon diem: "))
    0 g* O0 G& l5 D$ [3 R6 R
  2776. (setq b (getpoint a"\nChon diem: "))' [1 z/ a! T3 R* ]
  2777. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    ; f" L% Z2 p* H& E& K, S
  2778. (command ".circle" c a)
    0 u/ n; x" Q# F% e
  2779. (command ".line" a c "")+ O) B) p9 l- g+ P' S* ~0 F3 _
  2780. (command ".array" "last" "" "p" c "1" "" ""); O7 e2 P+ _$ h, H" y
  2781. (princ))% X, f; U9 h; [4 I( x, A: T9 a
  2782. ' S' D: E; P0 \, e9 u
  2783. (defun c:ga3 ()
    * i# P; `! [  d9 T
  2784. (setq a (getpoint "\nChon diem: "))
    6 o* p9 @; A- _
  2785. (setq b (getpoint a"\nChon diem: "))( z) E4 ]) b4 Q" [1 x+ x
  2786. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    , Y9 O/ F5 E5 t: F. `. R5 Q2 w! }9 m* F
  2787. (command ".circle" c a). o$ o! f* D1 v9 L
  2788. (command ".line" a c "")) @! P+ L- l% L7 ?$ A
  2789. (command ".array" "last" "" "p" c "3" "" "")- {* c. N- j3 a# h# ]% \- O( B
  2790. (princ))2 P8 r5 a& `0 ~: q2 f4 C' W

  2791. ' i) a( z& G+ g: o
  2792. (defun c:ga5 ()0 ?( G4 K, p3 ^9 G) [2 f& @
  2793. (setq a (getpoint "\nChon diem: "))+ S5 {/ g( R% g" X' n2 ?( R
  2794. (setq b (getpoint a"\nChon diem: "))
    2 r- e) v8 ~" i9 l4 {% d7 E: I
  2795. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    & }  \+ W% J9 d. b8 ^
  2796. (command ".circle" c a)
    ' G$ y9 s. u+ o' Q1 M1 q" S" b
  2797. (command ".line" a c "")$ S9 x4 K7 A/ b& ]  ], g, j3 D
  2798. (command ".array" "last" "" "p" c "5" "" "")
    4 E1 q+ T% E4 c$ `  E, F1 R
  2799. (princ))0 u3 ?3 E3 i( |- w( z0 T4 B
  2800. ' a/ n1 E2 N" t# E
  2801. (defun c:ga7 ()
    5 R3 g/ v- X2 E" }/ N" c+ O9 C# H/ o3 G
  2802. (setq a (getpoint "\nChon diem: "))
    3 F2 ?$ k/ S2 s* z
  2803. (setq b (getpoint a"\nChon diem: "))! h4 V$ P/ Y# G7 |2 f5 {
  2804. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    " M( f2 h) l6 T# T  L
  2805. (command ".circle" c a)2 z# @% r1 A# u* y% J+ G/ R
  2806. (command ".line" a c "")" h0 r% i# ~+ c6 r5 B$ [
  2807. (command ".array" "last" "" "p" c "7" "" "")
    ! G5 z9 b  C9 l& h" c
  2808. (princ))# V# b1 W/ _% m1 B

  2809. 3 f4 _! I* \. W. @5 g# I& {
  2810. (defun c:ga9 ()
    5 J% h8 k9 \7 j  j  j1 T8 z
  2811. (setq a (getpoint "\nChon diem: "))$ D* u4 L, }7 @. K( b
  2812. (setq b (getpoint a"\nChon diem: "))8 a6 h* w5 b2 s5 ?7 g/ y
  2813. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))  R; ~9 U3 F0 K3 r7 w
  2814. (command ".circle" c a)5 ^3 e  {* W* n; d
  2815. (command ".line" a c ""); O; l$ V8 \% w  }* F5 _
  2816. (command ".array" "last" "" "p" c "9" "" "")
    5 V- a. E7 h, I: i6 M) n: D7 {# h
  2817. (princ))
    & C9 b: n) G  l6 j, [2 y

  2818. ! j. a. q) j! D4 K' \' e. {
  2819. (defun c:ga11 ()( E9 {& n5 p2 E% A# v- b" O) D
  2820. (setq a (getpoint "\nChon diem: "))
    + m8 C+ N/ w! {
  2821. (setq b (getpoint a"\nChon diem: "))
    2 o2 g, e3 l- P* v, O
  2822. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    " G" P( t- c! [
  2823. (command ".circle" c a)
    / Q% P6 M+ Q8 ?( J/ o4 e6 A& w
  2824. (command ".line" a c "")
    6 e; Z! [9 \" P" b: o- G
  2825. (command ".array" "last" "" "p" c "11" "" "")* m& Y2 I# m& T4 Q. _
  2826. (princ))% X4 o: p9 M! c4 V5 I. _

  2827. / r. U% h8 \5 A' y4 ~2 ~- ?$ U8 D
  2828. (defun c:ga13 ()  l9 u5 y+ J: y7 a. I
  2829. (setq a (getpoint "\nChon diem: "))  J9 E: ]6 X. T- l# h7 V" x+ A
  2830. (setq b (getpoint a"\nChon diem: "))/ O2 C9 |  y/ H6 r7 v
  2831. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))). C' l) G* K: ^7 b. R
  2832. (command ".circle" c a)
    8 I) g& G. a9 N: F
  2833. (command ".line" a c "")
    : c6 x2 @, K# h" ^9 E# `" S
  2834. (command ".array" "last" "" "p" c "13" "" "")
    $ r. ]+ V5 o6 d7 U1 O, e' H! L
  2835. (princ))" V3 f% j/ O  }9 i

  2836. " n# w' |. x; q  b
  2837. (defun c:ga15 ()" H# ^3 i9 B5 n% \7 n9 j3 L( O
  2838. (setq a (getpoint "\nChon diem: "))
    # [& [* t7 L9 X3 V, U# v3 }
  2839. (setq b (getpoint a"\nChon diem: "))' C! _; W6 N: y9 ^7 C2 W- W
  2840. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    5 E; n& A( b6 T- H) C# Q1 }9 |
  2841. (command ".circle" c a)
    0 o; n1 S6 O/ C. ~2 ]  Q8 m
  2842. (command ".line" a c "")5 Q& A1 u& `" [; k9 r1 @, h
  2843. (command ".array" "last" "" "p" c "15" "" ""): a7 R6 j2 P3 X+ w# @7 j$ m
  2844. (princ))
    " }; d1 {# y6 }  U* Z, Q

  2845. 7 K* b+ S+ V# X  N: Z: E8 c
  2846. (defun c:ga17 ()
    " L2 d/ L/ r6 l+ `7 Y& h, W) F
  2847. (setq a (getpoint "\nChon diem: "))" Y; j; p/ I' b7 o
  2848. (setq b (getpoint a"\nChon diem: ")). K4 [5 w) {3 t! I% T, X' w
  2849. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))7 m8 r( d; S' W4 R$ J
  2850. (command ".circle" c a)
    4 h1 I* }, J/ T; k* y7 z4 W1 {5 @
  2851. (command ".line" a c "")
    9 O% f. d* K. i" q/ F( Q7 ?& _9 i
  2852. (command ".array" "last" "" "p" c "17" "" "")
    3 f9 `4 O* A$ |9 p2 ?0 p, m
  2853. (princ))
    3 e; d7 Y3 [$ Q) H2 l1 D% m
  2854. 7 R4 J& L' c! j2 |) ]+ }* m( D8 R
  2855. (defun c:ga19 ()
    % n# Y: p* u, A5 d6 j; k5 }. Q6 ]
  2856. (setq a (getpoint "\nChon diem: ")): h. a5 f0 O% I9 g
  2857. (setq b (getpoint a"\nChon diem: ")). c0 ?8 O" E& F. b" N; }
  2858. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    8 [6 ~- p% E0 I: m# ?9 y% a9 ^, h/ S
  2859. (command ".circle" c a)/ ?- P4 {* t2 `3 t9 I
  2860. (command ".line" a c "")' C" N8 n- q- W( U# }* k  K
  2861. (command ".array" "last" "" "p" c "19" "" "")8 M6 }9 n& ~$ u, R
  2862. (princ))& W8 m& n( n5 R' b0 A& L' J3 D9 \% Z
  2863. , i" g: V7 F2 C0 X, g$ x) ]
  2864. ;=====================================================================
    & v7 o+ ]$ ]* N4 D* _! F2 @( b8 Z
  2865. ;============== FUNCTIONS GA 2+4+6+8+10+12+14+16+18+20 ===============0 T: `0 y8 K2 A2 j& J! w
  2866. ;=====================================================================& z* t( i' v8 w  s( ^
  2867. (defun c:ga2 ()' I" q4 p. w; J
  2868. (setq a (getpoint "\nChon diem: "))
    ! X& y/ G' W0 S& C
  2869. (setq b (getpoint a"\nChon diem: "))
    5 O0 M* {& r4 I# Z0 w2 z' ^
  2870. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    9 j8 ^, j2 G& A4 x
  2871. (command ".line" a c "")# _9 d6 S. d  O2 _, o' b
  2872. (command ".array" "last" "" "p" c "2" "" "")
    ( K2 N% A+ u$ a" B) r
  2873. (command ".circle" c a)
    7 n5 `" m( x( I! U
  2874. (princ))! `$ ^$ z2 x" ]8 ]: P" r: R
  2875. - a  x" @0 ]3 n' z
  2876. (defun c:ga4 ()
    + s1 G1 a) P* h( Q' h; k0 h
  2877. (setq a (getpoint "\nChon diem: "))/ Z- s# ^) {6 \& W3 i6 ~
  2878. (setq b (getpoint a"\nChon diem: "))
    . m' h! j8 j6 X+ v+ D6 t  j+ f
  2879. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    2 E" w" y- v  `
  2880. (command ".line" a c ""); l% \1 z( A& d" T2 t# _
  2881. (command ".array" "last" "" "p" c "4" "" "")
    - R, |1 i9 j1 N
  2882. (command ".circle" c a)
    , R, J( }; s5 F) J. P8 _
  2883. (princ))% n9 W, l3 |! _5 q: v- x, q

  2884. 2 C) [  Z& w2 U0 C$ ~* ]: u4 u
  2885. (defun c:ga6 ()) ]1 ]( ~; B9 f6 E) W  b! n
  2886. (setq a (getpoint "\nChon diem: "))3 l9 |5 ^; @( y( A5 g+ e; Y: y$ }
  2887. (setq b (getpoint a"\nChon diem: "))+ B# a9 _  L9 z5 f+ Z6 \; s( D2 b
  2888. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))3 _: T6 K9 ~1 q- ?: J; P# f  V
  2889. (command ".line" a c "")
    , w9 T# Z/ }3 _5 F# T: m1 \* u
  2890. (command ".array" "last" "" "p" c "6" "" "")
    5 w, x3 I: W. a
  2891. (command ".circle" c a)
    # Z! p: o5 p# p) C
  2892. (princ)). p9 M4 f. m7 G9 |+ e5 R

  2893. 0 v5 w2 \$ b4 E* N* {
  2894. (defun c:ga8 ()
    - A3 ^. ?8 C2 f, s1 s& v- {
  2895. (setq a (getpoint "\nChon diem: "))7 U6 s- x! m1 u+ H
  2896. (setq b (getpoint a"\nChon diem: "))$ _* K. V+ d( @% L
  2897. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    0 }( \2 Y; C# r9 Z) m
  2898. (command ".line" a c "")
    ( p" [8 @5 j( a. }6 H
  2899. (command ".array" "last" "" "p" c "8" "" "")
    + F0 X" k: G- _- w2 e
  2900. (command ".circle" c a)& a5 w5 ?2 X$ K; a% j2 r
  2901. (princ)); \/ s2 T# b% M* @9 c
  2902. : n/ g; R# }0 F2 y' M
  2903. (defun c:ga10 ()
    3 ^" P9 ~. p' A) Q
  2904. (setq a (getpoint "\nChon diem: "))
    2 g1 ~. W6 K0 E' E
  2905. (setq b (getpoint a"\nChon diem: "))
    ! Q" }3 n0 Z4 D3 \$ Y1 }
  2906. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))* n% a/ O. u$ _0 n* J
  2907. (command ".line" a c "")
    - m* M; G2 a$ l6 Q! |/ U
  2908. (command ".array" "last" "" "p" c "10" "" "")
    1 m$ P6 _& ~% r6 w  R
  2909. (command ".circle" c a)
    ; k5 n# L9 a( }5 `& r
  2910. (princ)), Q# ^" A! o) ]
  2911. , `- l6 w9 h. K3 e
  2912. (defun c:ga12 ()
    9 ?7 D9 o( w' f+ y& }2 Y  Y
  2913. (setq a (getpoint "\nChon diem: "))4 J9 g% N+ B5 M/ [' I
  2914. (setq b (getpoint a"\nChon diem: "))' N2 @$ U  x# _6 i0 m. q* v
  2915. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    $ D0 F3 u; G9 s4 C
  2916. (command ".line" a c ""), c; N5 a0 ]4 W" w0 u
  2917. (command ".array" "last" "" "p" c "12" "" "")
    2 h# k( f% k$ o+ u9 ?4 Q
  2918. (command ".circle" c a)
    3 L! P" x& k+ L# X& G( h" z( M
  2919. (princ))1 d0 K1 w" M, n- u* [, l. Y) G
  2920. 0 _7 w/ M3 m  t/ i
  2921. (defun c:ga14 ()
    " `* D% k9 |. K. l
  2922. (setq a (getpoint "\nChon diem: "))4 Y% s& d* I* e9 N$ R4 p% z+ r* v4 y
  2923. (setq b (getpoint a"\nChon diem: ")): q0 M" b. l6 u
  2924. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    / L8 h! q* {$ |+ J5 _
  2925. (command ".line" a c "")
    0 B( h$ D; U4 P( E$ E- o4 h
  2926. (command ".array" "last" "" "p" c "14" "" "")
      d- h: c& Y$ i  H( B" \) g8 e: a
  2927. (command ".circle" c a)
    , E8 t0 F* z& @
  2928. (princ))' Q6 @; u# v9 O' f7 h4 s
  2929. ; w( l  Z) d' a5 M/ u
  2930. (defun c:ga16 ()
    + O: E7 Y! n3 a: y  N) }7 ^+ ^
  2931. (setq a (getpoint "\nChon diem: "))" _* @) B3 {+ z$ C5 `: F
  2932. (setq b (getpoint a"\nChon diem: "))6 S, C! H+ P5 j6 z* F5 [
  2933. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))). d' `2 P- h# T4 v* h
  2934. (command ".line" a c "")& }$ x$ H, w3 A2 L6 X% O
  2935. (command ".array" "last" "" "p" c "16" "" "")
    9 l* v2 q. A/ H# r
  2936. (command ".circle" c a)
    - ?' @' y4 s  h/ _0 v
  2937. (princ))
    , l/ I, G/ `% z$ L8 V4 C

  2938. ( i; _8 {( L! A, c, w2 Z$ t0 j4 R
  2939. (defun c:ga18 ()
    - X: l7 {1 z/ [) U5 Z; ]
  2940. (setq a (getpoint "\nChon diem: "))
    ) L3 n3 @" |/ n* k6 D
  2941. (setq b (getpoint a"\nChon diem: "))
      z2 o$ s5 r1 X' z: Y
  2942. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    0 W  a1 s* }7 i
  2943. (command ".line" a c "")
    7 \  I4 k7 v4 j
  2944. (command ".array" "last" "" "p" c "18" "" "")1 @9 l+ D9 _- ~" p8 v, ^) Y
  2945. (command ".circle" c a)/ @, j. R) r8 u: R" _
  2946. (princ))0 b. O' P; J( W, r) W/ A6 p

  2947. ! y( G) @) y0 h& K+ x
  2948. (defun c:ga20 ()& X2 A7 |/ _# O
  2949. (setq a (getpoint "\nChon diem: "))9 R' X" U" x' r) L/ T8 h4 ^
  2950. (setq b (getpoint a"\nChon diem: "))% Z$ z4 R4 A2 g' l& F% X6 D
  2951. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    " `- T6 {5 O  Z4 X) H1 O/ \
  2952. (command ".line" a c "")- C* G7 ?' o9 U* Z9 Z/ e/ X5 A
  2953. (command ".array" "last" "" "p" c "20" "" "")
    ! p8 y' ^$ a* J. s3 O' e1 o7 v
  2954. (command ".circle" c a)
    - e$ x* |0 @9 e/ W
  2955. (princ))
    6 m# W1 ?7 Y8 S* d* g

  2956. 0 w3 V& h" G2 j+ n
  2957. ;=====================================================================* W2 u. R4 q* Y4 m& H
  2958. ;============== FUNCTIONS GA TUY THICH : EVERYTHING IF ===============$ `3 s7 j0 Q8 r6 c+ [- Q0 k
  2959. ;========================== 06-11-2016 ~ 18h00 =======================
    $ x/ c" t  V6 n! Z/ Q
  2960. ;=====================================================================8 I; V3 U- m: i( ^) }
  2961. (defun c:ga ()+ [/ Q- F8 C* N4 J
  2962. (setq a (getpoint "\nChon diem: "))
    ( l/ e7 r7 g9 x6 E$ t7 K8 E3 ?
  2963. (setq b (getpoint a"\nChon diem: "))
    * f' |  \  ^4 M1 }' r
  2964. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))7 A+ x, w$ w2 H7 V' I
  2965. (command ".circle" c a)
    7 e* h# f( f+ w/ Q+ t1 E
  2966. (command ".line" a c "")
    ( N6 F) `! q* x/ ?7 Y
  2967. (command ".array" "last" "" "p" c "NUM" "" "")
    5 u$ M* r$ f" M" V, H: b
  2968. (princ))& m8 e7 W7 v; s* h- e( q& Z( W, r

  2969. % V6 Z, w9 n) M* L' f) K, v( m2 p
  2970. ;=====================================================================9 f- N# Y; a! O9 d+ w$ q
  2971. ;=========== FUNCTIONS HOA THI TUY THICH : EVERYTHING IF =============4 Z' M9 r* p% [7 h, o0 p3 u2 X& E
  2972. ;========================== 06-11-2016 ~ 18h40 =======================2 b+ k! F$ D% i0 s" h( x6 R
  2973. ;=====================================================================+ W$ N" ?6 C% V# S
  2974. 8 h8 \" g3 v7 d( A6 M& Q9 V
  2975. (defun c:hoathi ()2 |( ^$ B+ l( H9 k* N
  2976. (setq a (getpoint "\nChon diem: "))
    2 M" n* ~1 ]8 i' O5 j! \
  2977. (setq b (getpoint a"\nChon diem: "))% Q* L) b( n% r
  2978. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))% G/ ~8 G  @9 \" N
  2979. (command ".line" a c "")
    1 }# c% n' p. o! P& V  I3 P
  2980. (command ".array" "last" "" "p" c "NUM" "" "")
    ! x2 x! m6 m* L+ i
  2981. (princ))* Y" _. T9 R) W2 B3 J7 [
  2982. 4 l+ g3 p* \+ x. ^/ }/ u
  2983. ;=====================================================================3 R( ?9 A4 A2 L" M, j" D& f6 W% W
  2984. ;============= FUNCTIONS CUNG TUY THICH : EVERYTHING IF ==============3 P2 s1 t# b6 {. C1 B
  2985. ;========================== 03-11-2024 ~ 19h33 =======================
    & f' _) a& _9 I6 y
  2986. ;=====================================================================1 L: N( O# _% d7 Z6 `7 x
  2987.   R8 W4 B* q3 p2 ~- `
  2988. (defun c:cung ()
    " s! r; A! Y, S$ m! K1 j4 G
  2989. (setq a (getpoint "\nChon diem: "))
    - h+ T; ^7 ]3 A1 z8 ^
  2990. (setq b (getpoint a"\nChon diem: "))$ e, n. o* w/ q/ \( Q  t
  2991. (setq c (getpoint a"\nChon diem: ")); {1 g! E0 b& e- F9 z
  2992. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))): K* O% U2 m9 n0 X: A( {
  2993. (command ".arc" a b c "")2 Q- J# W; S; A
  2994. (command ".array" "last" "" "p" c "NUM" "" ""): I, j! T& d+ Q% E
  2995. (princ))
    . i3 `- @5 f; C, e9 }* q! U3 ^, l* R
  2996. ' V/ j& }$ C  ^8 J8 {* H
  2997. ;=====================================================================- v) m* e, c! J" p; H! V" X
  2998. ;============ FUNCTIONS HECLOIC TUY THICH : EVERYTHING IF ============
    / ^  ]' }/ o4 F3 ^4 B. }. e
  2999. ;========================== 03-11-2024 ~ 20h02 =======================
    , Z& {- e0 d' q; _- X: B
  3000. ;=====================================================================7 A8 k0 x# v& x% M7 j9 T" D+ c" A
  3001.   q9 k/ z! m5 Q/ v/ N
  3002. (defun c:hecloic ()
    # r2 `$ a& t/ u# s$ u
  3003. (setq a (getpoint "\nChon diem: "))  }3 |% n% o: @. _9 f- |
  3004. (setq b (getpoint a"\nChon diem: multi "))- g) ?3 i* ?! M  z4 W$ |8 M
  3005. (setq c (getpoint a"\nChon diem: "))(princ)
    ! t, D- O, P2 K5 t2 U
  3006. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    4 N4 X3 z4 T- U. A: |
  3007. (command ".arc" a b c "")
    3 S3 H7 L; I- e. l% e
  3008. (command ".array" "last" "" "p" c "NUM" "" "")9 Q4 O& D3 [+ ?9 D* D9 X" @
  3009. (princ))
    & a  e0 w* g  i

  3010. 0 Y1 [0 f7 Q( ~. }$ E# R4 F
  3011. ;=====================================================================
    ; ^" N' F( z$ q, ?! j2 H
  3012. ;============== FUNCTIONS GAY TUY THICH : EVERYTHING IF ==============
    , h; a4 N- H: f# [3 D4 _( J, V1 ?
  3013. ;========================== 03-11-2024 ~ 19h38 =======================6 ~! v2 w$ Z$ u7 M4 w. J
  3014. ;=====================================================================
    ) Z4 b7 N* d6 l. a% Q
  3015. 7 b* l3 W! {3 [" r/ s7 [6 Y5 X; N6 e7 M
  3016. (defun c:gay ()
    5 Y: N' m2 d* t7 t5 W
  3017. (setq a (getpoint "\nChon diem: "))
    $ U4 T' l9 x$ X6 X
  3018. (setq b (getpoint a"\nChon diem: "))+ a1 `; l+ I1 p. \* U' Z; ~
  3019. (setq c (getpoint a"\nChon diem: "))(princ)
    $ G$ v3 Z; g* p9 o% H
  3020. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    7 K2 D6 R, s8 B) {3 W; j
  3021. (command ".pline" a b c "")9 n2 i* S7 J, o0 K2 C( N) J7 l' j
  3022. (command ".array" "last" "" "p" c "NUM" "" "")
    9 c4 e. c/ v3 |0 L, I- L2 B
  3023. (princ))
    1 `* w" V& m" l- }- z

  3024. 3 O" A) h* B. @+ S; h9 w6 C
  3025. ;=====================================================================
    $ J' f( Q+ A7 |3 f8 |1 G
  3026. ;============ FUNCTIONS HECLOIT TUY THICH : EVERYTHING IF ============% \# F3 h' Q# B( ^7 j
  3027. ;========================== 03-11-2024 ~ 20h02 =======================
    0 B7 D& S- [& E+ P6 Z
  3028. ;=====================================================================2 I2 g0 v" F& E+ w

  3029. * V. f3 P% H% k7 D; \& s
  3030. (defun c:hecloit ()
    1 d, n) W+ i$ e
  3031. (setq a (getpoint "\nChon diem: "))- {+ c1 t( m& N( g
  3032. (setq b (getpoint a"\nChon diem: multi "))
    ( }5 x4 Q& B: r! B% @$ M+ S
  3033. (setq c (getpoint a"\nChon diem: "))(princ)
    0 n5 v. @8 F- w4 K4 p: }, J
  3034. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    * k0 X( q* U( O6 R% v4 O
  3035. (command ".pline" a b c "")1 A, _! F# j2 V' u8 F* V$ p
  3036. (command ".array" "last" "" "p" c "NUM" "" "")- L; t" j5 h8 b8 ~  W1 c& }
  3037. (princ))  |9 i: H# U, H; q6 J4 d8 N
  3038. ) N9 [+ M, O5 Q, X  g. }2 d

  3039. ( f  }/ Q: k4 y5 r
  3040. ;;; ============================ Merge Hatch =============================6 x- s* Q# d0 W' Z5 ?' k
  3041. 0 d2 n" s7 K- b  L8 d
  3042. (defun c:mh (/ ss entht sl i dt dtht)
    6 x2 ^- @  p: X, r7 }
  3043. ! C7 h* `/ Z, ^2 L% o; o3 R
  3044.   (princ "\nMerge Hatch - free lisp from CADViet.com")/ T6 Y1 a4 Y. a% s; {' F1 H

  3045. ) E! B' f: p5 J: E
  3046.   (setq' Q2 G4 {% \+ F; {$ f. l7 H
  3047.     ss (ssget '((0 . "HATCH")))) H7 x4 w3 Q4 H; A! x
  3048.     sl (if ss+ q* {: `7 B) r0 n
  3049.          (sslength ss)
    4 C) V! w, c6 y5 \2 {% x
  3050.          00 |+ g4 `- J$ P9 u
  3051.        )0 \+ ~! T- j1 \5 O( f. e0 {" z
  3052.     i  0+ a# n' L( _6 q/ S/ E- ?0 X
  3053.     l  0
    5 y) v/ k. }$ i/ _* ]2 h) o1 c! ?
  3054.   )
    % Z; B( K* D/ w, G, r

  3055. ) Z# h! m0 v) k. g( c  _5 r* j
  3056.   (repeat sl
    4 i8 K0 \- a, W8 w9 p6 G- D
  3057.     (setq
    0 m6 S/ [9 ]( P) M5 b/ Q  L/ h5 W
  3058.       entht (ssname ss i)
    & H  ?5 [2 ~1 {: ~- W: w1 m/ Y
  3059.       dtht  (getbdata entht)
    ; H/ [! G3 t6 v
  3060.       dt    (append dt dtht)) i* v9 w6 O; n' y+ u  H$ ]+ @
  3061.       l            (+ l (cdr (assoc 91 (entget entht))))# M- t# y* R  C# t6 r; m( a; ]! w
  3062.       i            (1+ i)0 Z/ g0 T6 A# \: M
  3063.     )
    7 l1 n# O+ ?- f; W# p; _
  3064.   )$ O) z; v9 s2 \! Z4 Q) i
  3065. 9 u: F! J( r/ |4 R( d# S$ g: m; J/ l
  3066.   (setq        ent  (ssname ss 0), y+ I& L$ M( ?" m8 C9 I
  3067.         ss   (ssdel ent ss)% N7 T8 C5 c4 n
  3068.         tt   (entget ent)! }8 V. ?1 T9 [( h$ ?7 I; p/ R
  3069.         duoi (member (assoc 75 tt) tt)
    ! Q6 e' \, U9 Q9 g" \- c0 k
  3070.         dau  (reverse (member (assoc 91 tt) (reverse tt)))
    ; d- r+ S# w$ C, J
  3071.         tt   (append dau dt duoi)% n9 y2 A( u; [: W0 O" f
  3072.         tt   (subst (cons 91 l) (assoc 91 tt) tt)
    ! Y- U! T: S) }: Y
  3073.   )
    8 s  T) `9 `6 o' @; v3 b
  3074.   (entmod tt)5 V( I" N: L$ P6 M, F

  3075. , H  ]1 I& X+ V* ]
  3076.   (command ".erase" ss "")  R& [; |, @3 h4 ]- x% j- U
  3077.   (princ)+ N9 [8 q2 C/ P: u' e
  3078. )
      R' N/ H2 P% M
  3079. + i3 O7 m( W  m- ~0 A
  3080. (defun getbdata        (ent)
    ; R1 A( t/ _8 g8 ~
  3081.   (setq        tt (entget ent)
    ) X# G' q* B# O1 D
  3082.         tt (cdr (member (assoc 75 tt) (reverse tt)))3 N4 [$ i# {% S$ F! |8 Q# s
  3083.         tt (cdr (member (assoc 91 tt) (reverse tt)))
    % g7 }; K9 t3 h% s) Y
  3084.   )/ a8 r" t+ k. s. L
  3085. )
    6 [2 X& P2 f. D5 ^* x: g% O
  3086. 5 T( e& M& o* W) ^4 B) }

  3087. % g! q; o" X0 d( z; E7 l- p/ _
  3088. (princ): c1 R- a. M/ k+ H8 i

  3089. 8 c" M3 w. c+ |* Q
  3090. ;;; =========================== CAC LENH LAYER ==============================
    & A1 i) O8 U7 `
  3091. ;;; =========================== Layer hien hanh =============================8 V& T- F. {% r# T' V. o/ F6 z

  3092. : h9 e: ~4 r7 }/ z) i# \
  3093. (defun layset (/ LAY) (setvar "cmdecho" 0)
      H$ J) ?1 F  ?" [% {& r5 Z
  3094. (setq LAY (entsel "\nPick vao doi tuong muon Layer hien hanh la Layer cua doi tuong do : "))
    1 }& D, I$ ~4 E
  3095. (if LAY     (progn     
    ) ^/ r6 c9 A4 i  v  Y# a/ f
  3096.   (setq LAY (cdr (assoc 8 (entget (car LAY)))))
    & m) @2 ~. P/ ~3 F
  3097.   (command "_.layer" "set" LAY "") (princ (strcat "\nLayer : " LAY " da la hien hanh."))  )- }6 |0 ]: c: \& T4 L9 v* l
  3098.              (progn4 |& i6 p! z, F% f9 U& D
  3099.       (if (not ddlop) (load "ddlop"))  (if (setq LAY (ddlop))
    3 b5 A' U/ V- m6 I9 C  z
  3100.              (progn
    5 r& v. q+ Q1 C5 w% O0 D. _( [
  3101.             (command "_.LAYER" "ON" LAY "THAW" LAY "SET" LAY "")  (princ (strcat "\nLayer : " LAY " da la hien hanh.")) ) ) ) )(princ) )$ \; {) K! a' m/ i/ o' {
  3102. (defun c:LLL     () (layset))(defun c:LAYSET () (layset)); d- x( M: Z8 K* ?! C# e& a
  3103. ) M) I8 r1 x! |& u! c% p
  3104. ;;; ================== Cap nhat doi tuong vao layer hien hanh ==================
    7 G$ \1 h, m* q" ^+ C* J, B3 E
  3105. / T- y2 b- s# _% O+ n
  3106. (Defun LAYCUR (/ SS CNT LAY)  (setvar "cmdecho" 0): D8 u& v- T$ |
  3107.   (if (not (setq SS (ssget "i"))); H+ U7 }/ V9 s. u0 ^$ ?
  3108.     (progn (prompt "\nChon doi tuong cap nhat vao layer hien hanh: ")4 t, |8 x/ O" [3 Z& D9 T3 Y2 l! F
  3109.       (setq SS (ssget))    )  )3 A3 a. x0 p" y3 V
  3110.   (if SS    (progn
    " b) j4 d" h8 A, l% l& a
  3111.    (setq CNT (sslength SS)) (princ (strcat "\n" (itoa CNT) " doi tuong tim thay."))                  (command "_.move" SS "")                      # C1 e9 `7 \: S4 P; j% a/ \
  3112.       (if (> (getvar "cmdactive") 0)               
    8 M2 k0 v7 d; |: v4 x& O! B8 k
  3113.         (progn6 r6 [) y+ d" i1 T0 E# t) f
  3114.           (command "0,0" "0,0") (setq SS  (ssget "p") CNT (- CNT (sslength SS))    )   )4 N8 k: h1 N2 I  Z$ a2 l
  3115.           (setq SS nil)     )  (if (> CNT 0)                                   E. q, R& ~- V! p2 b4 k7 U
  3116.           (princ (strcat "\n" (itoa CNT) " doi tuong tren layer LOCK.")) ) ) )( b- _6 S# P7 k% {
  3117.   (if SS    (progn9 F+ m, M: B; b; M  k( r3 w6 s1 W
  3118.       (setq LAY (getvar "CLAYER")) (command "_.chprop" SS "" "_la" LAY "")! d- e. {1 {2 R
  3119.       (if (= (sslength SS) 1)
      F( M  ^& ^, Q- n
  3120.         (prompt (strcat "\n1 doi tuong da cap nhat vao layer : " LAY " (layer hien hanh)."))
    # |1 e/ o- g- t0 e1 |; o
  3121.         (prompt (strcat "\n" (itoa (sslength SS)) " doi tuong da cap nhat vao layer : " LAY " (layer hien hanh).")) ) ))  (princ) );end- ]* D/ \/ P+ k& X( O( R
  3122. (defun c:LAYCUR () (laycur)) (defun c:LHH    () (laycur))& W$ v! N  A' x; e8 V

  3123. ( Q6 h6 W& ?, W1 I# ?) n6 R' S
  3124. ;;; =========================== Layer Iso ===================================
    & \4 H+ y6 |1 e% E
  3125.   Q  s/ P% p6 S; ]5 q( T
  3126. (Defun LAYISO (/ SS CNT LAY LAYLST VAL)  (setvar "cmdecho" 0)* T& S# X. f: J
  3127.   (if (not (setq SS (ssget "i")))    (progn  \; S% F! K. d% v
  3128.       (prompt "\nChon doi tuong tren layer(s) muon lam viec doc lap: ")/ V& l* q& x: A
  3129.       (setq SS (ssget))    )  )
    1 h4 f1 b6 p5 z5 i! i
  3130.   (if SS    (progn      (setq CNT 0)
    3 L/ R" p1 U0 u* a# m" Z9 u4 ^
  3131.       (while (setq LAY (ssname SS CNT))$ Q* ]: ?2 i) {0 P6 Y( J# y0 V5 w
  3132.         (setq LAY (cdr (assoc 8 (entget LAY))))
    ; u! ^; Z, G2 x
  3133.         (if (not (member LAY LAYLST))! H7 s: N2 d7 z; x
  3134.           (setq LAYLST (cons LAY LAYLST))        )0 f% u1 {6 F2 n- P
  3135.         (setq CNT (1+ CNT))      )
    + M9 l/ j7 N* [3 s+ b, g! v+ [
  3136.       (if (member (getvar "CLAYER") LAYLST)" }/ \5 H* s0 T7 F9 [9 U8 l
  3137.         (setq LAY (getvar "CLAYER"))8 k- }( \% \8 d' y& [! C9 D
  3138.         (setvar "CLAYER" (setq LAY (last LAYLST)))      )
    " L  B- `# Q+ z$ d9 z
  3139.       (command "_.LAYER" "_OFF" "*" "_Y")0 r# F' b( B8 l. H6 }- p4 \
  3140.       (foreach VAL LAYLST (command "_ON" VAL))7 f  Q2 u8 }4 G$ S
  3141.       (command "")            (if (= (length LAYLST) 1)
    5 G2 O7 t4 e% H9 e
  3142.         (prompt (strcat "\nLayer " (car LAYLST) " da tach ra."))
    3 J+ q( Y- t0 K. s+ I
  3143.         (prompt (strcat "\n" (itoa (length LAYLST)) " layers da tach ra. "
    , }3 F5 r8 [  j2 ]1 K8 z
  3144.                         "Layer " LAY " la hien hanh."   )  )  )  )  )  (princ) )
    $ `+ O' @' d' C6 U) W, w( L
  3145. (defun c:LAYISO () (layiso)) (defun c:LI () (layiso))
    0 b( d( U6 s8 ]* @, l
  3146. 6 q4 ?- _8 N" n/ l& S5 y
  3147. ;;; =========================  Layer Match ==================================
    ) I* |6 I) D; |8 i. _$ U

  3148. / J: E7 }+ _! N' k9 h- X
  3149. (Defun LAYMCH (/ SS CNT LOOP LAY ANS)# e" S; T- k- J* J/ @2 T- m
  3150.   (setvar "cmdecho" 0)
      n8 p" A4 Q4 q" Y7 B8 }
  3151.   (if (not (setq SS (ssget "i")))    (progn, Y' r7 A1 i8 B( k2 D3 X
  3152.       (prompt "\nChon doi tuong muon thay doi Layer : ")
    1 e/ A5 T3 `6 D
  3153.       (setq SS (ssget))    )  ), @# {+ {8 q$ y
  3154.   (if SS    (progn. y+ Z% [$ _# T  H9 L
  3155.       (setq CNT (sslength SS))" K8 \6 S) h& ?* h
  3156.       (princ (strcat "\n" (itoa CNT) " found."))  (command "_.move" SS "")                        2 c9 {, N) W. f5 I- H- C% d
  3157.       (if (> (getvar "cmdactive") 0)   (progn
    8 k* ~& L4 j. ~1 [7 Q! w- c
  3158.           (command "0,0" "0,0")  (setq SS  (ssget "p")
    7 v; D: D  E. d
  3159.                 CNT (- CNT (sslength SS))    )    )* v* y8 D' w! }: U
  3160.         (setq SS nil)      )  (if (> CNT 0)                                    . f* b9 x' K& [9 Q6 K9 t; n0 w
  3161.           (princ (strcat "\n" (itoa CNT) " tren layer LOCK.")) ) )  )9 b& ], b% J( Q- V, }$ k
  3162.   (if SS    (progn+ Q7 Q: @0 }+ }2 |; ^
  3163.       (initget "Ten")  (setq LAY  (entsel "\nTen layer/<Pick doi tuong>: ")  LOOP T  )
    # q; }* S. K' c' W
  3164.     (while LOOP        (cond
    ) t+ i$ r% m5 X0 U4 h+ m7 f
  3165.           ((not LAY). j- C" y# p4 W, \9 E6 E
  3166.             (prompt "\nKhong chon doi tuong.")
    + A; E. h! h3 E$ [7 C
  3167.             (prompt "\nSu dung layer hien hanh? <Y> ")0 E3 c0 o6 r/ T) l* ^6 Y* j6 ~
  3168.             (setq ANS (strcase (getstring)))- @3 u6 Q4 k1 {
  3169.             (if (or (= ANS "") (= ANS "Y") (= ANS "YES"))
    - `: N3 k. L5 W( w7 w/ z! A% _& L
  3170.               (setq LAY  (getvar "clayer")  LOOP nil )  )  )$ u2 b& u2 l6 C9 g
  3171.           ((listp LAY)  (setq LOOP nil) )
    % w% X5 ^3 }. S0 m$ a- S
  3172.           ((= LAY "Ten")3 i4 Q, X* v0 M  ^
  3173.             (setq LAY (getstring "\n>Nhap ten layer: "))
    ! g$ {( p0 l3 C# Q3 d
  3174.             (cond
    # E& h! [( u" X* e' G2 P3 W
  3175.               ((tblsearch "LAYER" LAY)  (setq LOOP nil)   )2 D: A6 t: h) x0 F& O5 \; F  G
  3176.               ((/= LAY "")
    6 o. Y# i+ r/ x
  3177.                 (prompt "\nLayer chua co trong ban ve. Tao layer moi? <Y>: ")6 s$ M, b7 @/ R' c
  3178.                 (setq ANS (strcase (getstring)))7 g; |( i2 T4 m. Y9 m" x) D2 i
  3179.                 (if (or (= ANS "") (= ANS "Y") (= ANS "YES"))
    + n% Y0 }9 n( s/ S9 x
  3180.                     (progn
    $ ?4 D1 V* Y( h3 P
  3181.                         (command "_.LAYER" "NEW" LAY "")
    9 ~; @+ X5 t' d. L
  3182.                         (setq LOOP nil)   )
    / O  B8 J! I5 I
  3183.                     (prompt "\nLoi ten layer.")   )   )  )  )   )
    3 @; c/ C, v' [5 V) ]
  3184.         (if LOOP  (progn (initget "Ten")- q0 K0 z, @- ^8 Y: I; }1 ?2 m
  3185.             (setq LAY  (entsel "\nTen layer/<Pick doi tuong>: ")) ) ) ); while LOOP1 b/ k4 p- P( P; g  x7 f" c
  3186.         (if (listp LAY)3 D6 Y+ p; ^9 b! m, D% `* ~5 E% ]4 h- P
  3187.         (setq LAY (cdr (assoc 8 (entget (car LAY)))))      )
    # ~  ]+ A& o% ^; }4 q
  3188.       (command "_.chprop" SS "" "_la" LAY "")
    + G* Q6 o) r* z2 Q$ J+ _3 W
  3189.       (if SS  (prompt (strcat "\n" (itoa (sslength SS)) " doi tuong thay doi toi layer " LAY )) ): q0 v( R# x/ c) g$ X- m
  3190.       (if (= LAY (getvar "clayer"))
    / Z% G! F( D" _% O7 ~3 {5 ~
  3191.         (prompt " (layer hien hanh).")  (prompt ".") ) ) )  (princ) ); Z" B, ?" y! w6 w7 G' F/ O
  3192. (defun c:LAYMCH () (laymch)) (defun c:CLL    () (laymch))
    " O0 Q5 m5 j# v; F7 t& j, ]

  3193. 8 o% e- O2 O" A+ |' L
  3194. ;;; ============================ Layer OFF =================================
    & T3 k7 @. L/ U8 }
  3195. - @3 y& p7 h- R, i0 L
  3196. (DEFUN C:LJ (/ SSET SSL ENT LAY I MODE)
    3 Q3 X( v* T' f/ L, W
  3197.    (SETQ SSET (SSGET))
    ; I% N% ^% Q7 e& _
  3198.    (IF (/= NIL SSET) & T( `' p/ Y6 J# X
  3199.     (PROGN1 @/ N8 o8 R6 H6 u; b
  3200.      (SETQ SSL (SSLENGTH SSET))9 T& Z9 X: Q/ I
  3201.      (SETQ LAY "")
    3 }$ [# k4 n$ o% X
  3202.      (SETQ I 0)
    & q* f7 T, s& |* U2 G
  3203.      (SETQ MODE 0) 8 F4 i6 u) g+ [
  3204.      (WHILE (< I SSL)
    3 W$ |- K2 i  u! b" n: e% C8 V8 m
  3205.                  (SETQ ENT (ENTGET (SSNAME SSET I)))1 z' b4 M+ B5 j! d. j3 m" ]( t9 J. ~
  3206.           (IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )
    6 i* N7 [4 f) u  L( l6 E
  3207.           (SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) )): I' t+ e" w" `7 T9 [
  3208.           (SETQ I (+ I 1))+ a2 o! h0 v( @
  3209.      )
    ( `5 K4 n+ A0 d* w2 {+ }% g
  3210.      (COMMAND "LAYER" "OFF" LAY "")+ v7 m2 r0 [! O5 J0 d
  3211.      (IF (= MODE 1) (COMMAND "") )( b  d2 W% b) m+ G
  3212.     )
    : a5 c2 J; ?" F1 d/ b9 @
  3213.    )
    ; o" d& C! W' T9 a4 A0 T7 H  S# S8 D
  3214.    (PRINC)
    + B& c0 I  v" Q! }5 q6 ]5 o0 u8 l
  3215. )% @/ n) K4 ]" ]8 I3 z3 _- _

  3216. & U' o, H2 a* R3 J4 v
  3217. ;;; ================================ Layer ON ==============================" b  u: [2 p; t3 s: A4 y  t& h
  3218. : l9 }2 _  \4 p2 y
  3219. (Defun LAYON ()  (setvar "cmdecho" 0)
    $ H! K8 x/ H+ l+ _) D% i* m! \1 V
  3220. (setq Lay loff1) (setq Loff1 Loff2) (setq Loff2 Loff3) (setq Loff3 Loff4) (setq Loff4 Loff5) (setq Loff5 Loff6) (setq Loff6 "0")
    8 Q5 f( v% v0 ~* h
  3221.   (Command "LAYER" "ON" Lay "") (princ (strcat "\n      Layer : " LAY " da ON."))  (princ))6 v  f- a; l  a: t
  3222. (defun c:LAYON () (layon)) (defun c:LOO   () (layon))3 c9 s( h# g0 j9 {% B0 t3 X
  3223. (Defun C:LO () (setvar "cmdecho" 0)  (Command "_.LAYER" "_ON" "*" "") (princ "\nDa ON toan bo cac Layer !") (princ))
    9 X- t1 H$ ]. s& n) G( b5 J

  3224. 9 X7 j9 Y) T  M$ S8 Q
  3225. ;;; ============================== Layer Freeze ===========================
    * B8 l% Q& y+ A' h* [
  3226. . I) B. A5 a5 C4 h% {9 J6 r
  3227. (Defun LAYFRZ (/ LAY TEMP)(setvar "cmdecho" 0) 8 ]( E/ g/ k% I' j
  3228. (prompt "\nChon doi tuong tren layer(s) muon FREEZE: ") (SETQ SSET (SSGET))) G& E% z+ b# m/ H
  3229. (IF (/= NIL SSET) (PROGN2 {) V1 P6 z+ K. L
  3230.      (SETQ SSL (SSLENGTH SSET))  (SETQ LAY "") (SETQ I 0) (SETQ MODE 0) % z1 m& j2 [% `, ^
  3231.      (WHILE (< I SSL)
    + P/ f, ?/ M4 T' V5 P$ d7 B( C
  3232.        (SETQ ENT (ENTGET (SSNAME SSET I)))
    , k- T/ Y. \6 j; z" P
  3233.        (IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )
    # M6 g- a; N0 `* |% r) U
  3234.        (SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) )) (SETQ I (+ I 1)))
    , k8 K6 D* O. t8 U2 s$ f& @
  3235.      (COMMAND "LAYER" "FREEZE" LAY "")
    # c! n  Q0 T' H
  3236.      (IF (= MODE 1) (COMMAND ""))))
    1 R5 U4 `+ p4 ?" U7 b  h3 T) _
  3237. (setq Lff6 Lff5) (setq Lff5 Lff4) (setq Lff4 Lff3) (setq Lff3 Lff2) (setq Lff2 Lff1) (setq Lff1 LAY)% w; X! G! N( z0 ^9 ], j
  3238. (princ (strcat "\n      Layer " LAY " da FREEZE."))(setvar "cmdecho" 1) (princ) )
      ^; Q+ C3 n# ~2 m! \0 w' @
  3239. (defun c:LAYFRZ () (layfrz)) (defun c:LF     () (layfrz))9 ^1 B- |" B$ e! Z4 ^4 [
  3240. : Y6 M% }' F( {( {- f( d
  3241. ;;; ============================== Layer Thaw ===============================
    4 y" f% k) Y& Q$ Z* [

  3242. 9 ]3 ?. X, \& u8 t
  3243. (Defun LAYTHW ()
    & {8 ^; X4 u% ?+ h  r0 L
  3244.   (setvar "cmdecho" 0)
    # Y4 Z2 N/ N  q/ Y
  3245. (setq Lay lff1) (setq Lff1 Lff2) (setq Lff2 Lff3) (setq Lff3 Lff4) (setq Lff4 Lff5) (setq Lff5 Lff6) (setq Lff6 "0")
    : k' m; \4 I' q1 p/ L; L8 k- s+ {
  3246.   (Command "_.LAYER" "_THAW" LAY "")
    . @1 j/ G- f9 G
  3247.            (princ (strcat "\n     Layer : " LAY " da THAW."))
    % v' R# A  p: Y* t" w. _
  3248.            (princ) )
    , l9 Q: ~' Z+ t) P  N+ I; D0 @
  3249. (defun c:LAYTHW () (laythw)) (defun c:LW    () (laythw)). \3 Y, K4 E8 Q; h+ u
  3250. 0 F$ W( h* \! p, R
  3251. ;;; ============================== Layer Lock ==============================/ [2 C9 |: G0 J: D' m
  3252. " G* p  u+ h/ N' d' j( @6 i
  3253. (Defun LAYLCK (/ LAY)) x) `# V# a, g/ p4 l" `
  3254.   (setvar "cmdecho" 0)9 v5 o6 ^% }, A3 {+ z
  3255.   (setq LAY (entsel "\n>Pick doi tuong tren layer muon LOCK: ")). f% T# ~0 q) U4 Z
  3256.   (if LAY& X5 C1 H8 f5 T  G; G  y4 N- q
  3257.     (progn
    . x  U$ `! f) Y# ^4 X) o- Z6 S
  3258.       (setq LAY (cdr (assoc 8 (entget (car LAY)))))
    3 K$ f# l" x9 ]8 d/ d* M  w
  3259.       (Command "_.LAYER" "_LOCK" LAY "")
    4 l" ]8 A9 x* Q- _, V! q$ o) ^' C
  3260.       (princ (strcat "\nLayer " LAY " da LOCK."))    )  )  (princ) ); F. P1 i! x% Y: K; T
  3261. (defun c:LAYLCK () (laylck)) (defun c:LK     () (laylck))
    7 s9 o2 c6 D- p
  3262. ; l1 _1 J& w. N- R; o" t5 V" F4 s
  3263. ;;; ============================== Layer UnLock ==============================
    ! e# d. i: D" G, y: z2 B( c6 k! ^
  3264. & r- v6 j8 n4 A$ k4 \/ a
  3265. (Defun LAYULK (/ LAY)4 K& w) q, k" B* ~5 a% m
  3266.   (setvar "cmdecho" 0)
    5 y3 V! e, `. f. F6 }/ i1 w
  3267.   (setq LAY (entsel "\n>Pick doi tuong tren layer muon UNLOCK: "))
    1 s2 d/ M, |, B: u  M4 l
  3268.   (if LAY/ I$ @; c( `" Q
  3269.     (progn
    5 H8 y5 n% |# T( D( D
  3270.       (setq LAY (cdr (assoc 8 (entget (car LAY))))): T% S) H0 P, h# Z3 v3 c# f
  3271.       (Command "_.LAYER" "_UNLOCK" LAY ""), I& c8 {8 i" d) |$ k5 Y+ y( \
  3272.       (princ (strcat "\nLayer " LAY " da UNLOCK."))    )  )  (princ) )
    + ~( V: ]7 a2 I0 a" p4 Z: k
  3273. (defun c:LAYULK () (layulk)) (defun c:LU    () (layulk))$ E4 {: I4 Z9 ]4 x

  3274. 3 O: q9 q" [2 Z
  3275. ;;;===================== Delete all objects of Layer ========================  Z2 N4 A% v0 J$ b% J8 M
  3276. , r! O4 ^  w4 u! v7 f4 G9 |! i2 ^" O
  3277. (defun DELAYER (/ ocmd L S) . v8 M/ U/ w4 s4 q6 w( Y
  3278.   (setq ocmd (getvar "CMDECHO"))
    . t9 \# @$ I" I2 w: d
  3279.   (setvar "CMDECHO" 0)7 R+ ?/ [7 q2 S, \3 P
  3280.   (setq L (strcase (getstring "\nLayer(s) to delete: ")))
    + E6 s: I- C- q' E7 w( u- l! ~
  3281.   (setq S (ssget "X" (list (cons 8 L)))) 4 R; O6 j' n/ @9 U
  3282.   (if S
    % L# \8 E# G1 g1 T# R0 |6 t
  3283.     (command "ERASE" S "")            / H3 R4 G* |- L( x
  3284.     (princ "Layer empty or not a valid layer name.")  )
    ( S% \, ]8 o4 V1 t8 e
  3285.   (setq S nil)                        
    + N2 m3 _/ v- F
  3286.   (setvar "CMDECHO" ocmd)             6 _7 N" k% d8 l
  3287.   (princ) ) % u% |0 y! o, Y
  3288. (defun c:DELAYER  () (delayer)) (defun c:DELLAYER () (delayer)) (defun c:DEL      () (delayer))
    ' B' Y1 K! ?) H/ V. ?  P

  3289. . O+ g; `+ f4 d, |
  3290. ;;; ========================= HET CAC LENH LAYER ===========================
    $ y6 i" m# X7 u. S) j
  3291. : U3 {; t/ c2 L6 F& v: V+ P
  3292. ;;;====================== EXTEND NHIEU DOI TUONG ===========================
    2 [4 e$ q, h0 a: I
  3293. * ?; ^: W* |, b
  3294. (Defun C:EET ()
    3 g+ v7 F% V( ~% p
  3295.   (Setq CVAR (Getvar "CMDECHO"))  (Setvar "CMDECHO" 0)
    # e! l  \! e# G# P$ ]
  3296.   (Prompt "Chon doi tuong dich cua EXTEND :")  (Setq CUTEDG (Ssget))7 p, c+ c5 t$ a# [7 ]; ?& u7 E
  3297.   (Prompt "Chon doi tuong de Extend :")  (Setq SS (SSget))  (Setq LEN (SSlength SS))
    3 f: S; S2 w& B- j6 `
  3298.   (Setq I -1)
    , O: g, r; `8 g% q. e
  3299.   (Setq SIDE (getpoint"Chon phia de EXTEND"))  (Command "EXTEND" CUTEDG "")- @5 X  Y. n  |+ t% l( \, \
  3300.   (Repeat LEN
    : ~+ |$ e7 U- ]6 y0 X. b0 d2 h
  3301.    (Setq I (1+ I))
    ( t2 V  _. f; S5 g6 |1 B7 U
  3302.    (Command (List(SSname SS I) SIDE))  )  (Command "")
    ; o4 E8 |: [/ l* D
  3303.   (Setvar "CMDECHO" CVAR)  (Princ "Da Extend xong moi ban lam tiep")  (Princ) )8 o/ a6 l* K+ D  c* q' x; @

  3304. # M  k1 `/ P5 }# Q. G9 J
  3305. ;;; ===============  EXTEND 1 DOI TUONG THEO KHOANG CACH ===============9 V! G( X0 ^: _  O5 S7 v- X% k

  3306. # Z/ B7 J" Z8 H2 D0 s
  3307. (defun c:ETT ()  (setq os (getvar "osmode"))  (setvar "osmode" 512)
    3 F: r4 _# I) v$ i3 P
  3308.   (setq pt1 (getpoint "\nKich vao 1 dau doan thang can EXTEND  "))% s2 r7 p6 {! @- w
  3309.   (setvar "osmode" os)
    8 C$ @2 ^3 O! S& x- n' W* M9 Q8 d
  3310.   (setq dis (getdist pt1 "\nKhoang cach can EXTEND :"))! z6 E6 X5 |; `9 E! L5 q. B- \" Z
  3311.   (command "circle" "endpoint" pt1 dis)  (command "extend" "last" "" pt1 "")  (command "erase" "last" "") (princ))
    " p4 `4 \6 ]  |% |0 q
  3312. 8 F% q. j* R9 U
  3313. ;; ================ Change width of polylines =========================, m$ M1 B/ M* k/ c
  3314. ' N% e2 r* Q* S" `* h& o
  3315. (DEFUN wp (/ a b sophantu sodem list1 ha:wid)
    $ Y6 u$ v& N: f% F/ u
  3316. (PRINC "\n         Chon doi tuong can thay doi do day (Width) !")
    + B9 t& L8 x7 r, N  p- A& V
  3317. (setq b (ssget))
    3 B9 a$ @7 X1 p
  3318. (setq sophantu (sslength b))
    6 u0 p# W1 E% T/ ^4 ]# k
  3319. (if (null ha:wid) (setq ha:wid (getvar "tracewid")))
    " \9 e+ x, L) q* c7 B+ l
  3320. (princ "\nDo rong polyline <")$ P& F) x" B7 u% ^
  3321. (princ ha:wid)# A' p0 u& B  y! e$ [/ ~
  3322. (princ ">: ")
    1 E& F# x" \# Z& @- M9 S
  3323. (initget 4)
    3 X9 C& K8 o8 K6 B% t/ G6 V. Q9 G
  3324. (setq ha:wid (getdist))
    4 c1 m0 w; x* D9 K
  3325. (if (null ha:wid) (setq ha:wid (getvar "tracewid")))4 @1 ^7 N( K  W! s0 U$ m8 f5 [
  3326. (setvar "tracewid" ha:wid)' H7 J9 S* K- o3 E# y
  3327. (setvar "cmdecho" 0)5 A- {7 J' |; X+ f, {/ o: w
  3328. (setq sodem 0) 7 O7 r, `2 b- g+ p3 r5 ]
  3329. (repeat sophantu
    3 p$ V8 ]2 L2 g8 a3 u7 e
  3330.   (setq a (ssname b sodem)), S& I* B: ^5 J
  3331.   (setq list1 (assoc 0 (entget a)))# k+ n' L' P# C% d9 q
  3332.     (cond8 w. G; e2 H* X& G8 w) W
  3333.      ((= (cdr list1) "POLYLINE") (command "_Pedit" a "w" ha:wid ""))
    / K2 x7 p$ ~7 a- W
  3334.      (PROGN (command "_Pedit" a "" "w" ha:wid ""))    )
    1 R) l8 s) L; h+ H9 _
  3335. (setq sodem (1+ sodem)) )(SETVAR "cmdecho" 1)(princ))3 J0 b) ?& r6 ^( a8 [( ]. V
  3336. (defun c:wp () (wp)) (defun c:pw () (wp))0 p* g* k( O8 N4 }& Y/ U8 M! I

  3337. 0 m6 w  v, N! t0 x, B+ t2 u
  3338. ;; ================ Change radius of circles ==========================
    + d* t9 m3 d1 A  ^
  3339. ' R5 X% n  @) d
  3340. (DEFUN C:CHR (/ SSET SSL M RD I)   (PRINC "\nSelect Circles :")   (SETQ SSET (SSGET))
    ' I% j, W. _+ w' V6 h
  3341.    (IF (/= NIL SSET) (PROGN  (SETQ SSL (SSLENGTH SSET))  (INITGET 4 "")  (SETQ RD (GETDIST "\nNew radius : "))
    ! ?& j( {& Z- ~- j# k* D$ e$ o
  3342.    (IF (/= RD NIL)  (PROGN (SETQ I 0)
    5 e- y/ U# g9 ?3 W& t: F. H
  3343.    (WHILE (< I SSL) (SETQ M (ENTGET (SSNAME SSET I) ) )
    2 a9 F! C& I! P$ n) ], ~9 d6 K
  3344.    (IF (= (CDR (ASSOC '0 M)) "CIRCLE") (PROGN
    ; o- a7 C. ~, t/ k. A: F. L) X: X
  3345.   (SETQ M (SUBST (CONS 40 RD) (ASSOC 40 M) M))  (ENTMOD M) ) )  (SETQ I (+ I 1)) )      )   ))) (PRINC) )
    " a" H5 ?! j# T% v) g

  3346. : r+ o! @, q5 U6 Y' N5 R8 G9 d
  3347. ;;; ============================== TEXT Hight ===============================
    " I* ?, a9 A6 `' W" |2 P
  3348. # e: q: x7 L% x) a. }
  3349. (defun texthght (/ ent hght)
    1 |9 k; K3 n" ^6 |
  3350.   (setvar "cmdecho" 1)
    " O; y( V' H* X7 J  Z; G
  3351.   (prompt (strcat"\nSelect text entity with required text height"))' a: j! I' c# L/ [* X; b
  3352.   (prompt (strcat"\n."))
    " ~# X8 k1 o6 K5 p( N. Z
  3353.   (setq ent (entget (car (entsel))))6 C2 V- f% R$ y+ Z" N
  3354.   (setq hght (cdr (assoc 40 ent)))
    . D; P3 O+ [- u+ X) I" W8 |
  3355.   (prompt (strcat"\nText height now set at "))(prin1 hght)* {% G+ a8 _# T! t  j$ I- ~
  3356.   (prompt (strcat"\n.")) 4 w$ w4 f9 i' x* O- n
  3357.     (setvar "cmdecho" 1)/ ?( r" z5 I& F7 u) u
  3358.     (command "DTEXT" PAUSE hght "") )  a) l1 z' ?. E) c
  3359. (defun c:teh () (texthght))  (defun c:texthght () (texthght))7 J7 Z1 A: A; G3 y  k
  3360. " Y1 l8 m3 J# l2 f. J4 B, k
  3361. ;;; ================ BAT -TAT CHE DO GACH CHAN TEXT =================
    - \6 h- s5 {3 A9 V, K

  3362. 9 x2 _) Z$ S& ^+ B* o' ?7 ]
  3363. (defun c:tuu ()  (setvar "cmdecho" 0)
    " [5 W; D3 _- N% C- l1 B7 @' {7 l
  3364.     (prompt "\nHay chon dong TEXT can gach chan ")& B+ Q: t' y2 y' ^
  3365.     (prompt "\nSelect objects: ")
    . Y3 R3 Y4 ^1 H9 N9 J
  3366.     (command "select" "au" pause)
    8 a- Q, P% o; {* h8 `
  3367.     (setq sstxt (ssget "p")
    4 J" D( `& R6 S
  3368.           sslen (sslength sstxt)# N8 W! Z# @' G% _% n2 G9 m
  3369.           ctr 0    )
    + t* O4 E6 s/ o0 e5 B, w/ g
  3370.     (command ".undo" "mark")% o9 z8 P% ]7 O8 t$ M; R
  3371.     (while (< ctr sslen)
    9 x" r2 Q# v$ {4 R
  3372.            (setq listxt (entget (ssname sstxt ctr))
    4 P- |  t5 O. f8 b/ m0 N" ^. c
  3373.                  txttxt (cdr (assoc 1 listxt))
    $ ^3 w6 _0 x9 x+ i
  3374.                  enttxt (cdr (assoc 0 listxt))   )1 ^% a# y: d# X
  3375.            (if (= enttxt "TEXT")# L) Y8 K3 b! m! q1 u: }& {
  3376.                (progn
    / C$ W- L1 S+ F2 V! E
  3377.                    (setq testxt (substr txttxt 1 3))
    / M# G7 F7 ]6 k; [. I  X
  3378.                    (if (or (= testxt "%%u") (= testxt "%%U"))9 H. b1 n) D- }, C0 a
  3379.                        (setq newtxt (substr txttxt 4))+ _4 k0 P! W+ j# b) o
  3380.                        (setq newtxt (strcat "%%u" txttxt))    )- [9 A) C0 z9 d1 Y' ~' e1 V4 A
  3381.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))8 t& v8 w4 e' ?# Z0 x9 Q7 M+ D) A
  3382.                    (entmod listxt)                ) )
    ' f# Y0 L+ m1 L3 b& w0 x8 d
  3383.             (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ)); b; e/ B9 c+ R4 E5 \2 |, T5 ^6 d# \
  3384. & D: l* v  n: N) H, Y& \
  3385. ;;; ================ BAT -TAT CHE DO GACH CHAN TEXT =================# G) [5 Q2 f, v: p' g) a

  3386. 8 X- X" j, h" l2 G$ D
  3387. (defun c:tob ()  (setvar "cmdecho" 0)1 M$ Z2 }% g3 J7 _- c
  3388.     (prompt "\nHay chon dong TEXT can gach tren dau ")
    ; H9 M5 b( ?( X, g9 x
  3389.     (prompt "\nSelect objects: ")/ J3 e) i) A: G3 v
  3390.     (command "select" "au" pause)
    5 P: r# J9 S9 c3 i5 Y3 F
  3391.     (setq sstxt (ssget "p")0 M* T! ?* |9 K/ a5 p2 N
  3392.           sslen (sslength sstxt)
      H! B; K+ @4 z0 h: X% z
  3393.           ctr 0    )
    9 f2 H" a  z/ J1 ^5 M
  3394.     (command ".undo" "mark")
    8 E- V- f% Z  V
  3395.     (while (< ctr sslen)
    3 D% _3 Z3 O4 N- d8 ]% ~
  3396.            (setq listxt (entget (ssname sstxt ctr)); z, ]# _7 z* i: {  S- J9 t
  3397.                  txttxt (cdr (assoc 1 listxt))
    # s4 e( J1 b0 r2 r/ y6 S# }
  3398.                  enttxt (cdr (assoc 0 listxt))   )
    , E% o( c; k# s8 E+ P0 ~" k
  3399.            (if (= enttxt "TEXT")/ j# J8 x. a1 A: q
  3400.                (progn/ ?: p' m$ e' o) a' V* g
  3401.                    (setq testxt (substr txttxt 1 3)), n. O5 n# j0 a
  3402.                    (if (or (= testxt "%%o") (= testxt "%%o"))
    ; m5 ]6 Q6 g, J3 B. i. s# Q
  3403.                        (setq newtxt (substr txttxt 4))+ }) G+ ?0 S" y, y4 P
  3404.                        (setq newtxt (strcat "%%o" txttxt))    )1 N% p% B& g3 g2 q
  3405.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    : p: ?$ b% m* g+ h
  3406.                    (entmod listxt)                ) )
    + [# ]" Z/ o& S+ q% O
  3407.             (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    & U# W; {/ G, N, R7 a
  3408. 9 [2 Y# H& |2 L# b2 k
  3409. ;;; ========================== Tim & thay the TEXT ==========================
    * @9 r  k$ N" Y5 A# |  W) B  `1 `
  3410. - E$ ]1 ^8 Y. j7 @- Q( j
  3411. (defun frstring (str search replace / str1 str2 index find)5 D$ N1 P. P7 n/ |, P6 w
  3412. (setq index 0) (while  (<= index (- (strlen str) (strlen search)))  (setq index (1+ index))5 Z# m: m1 X( g% T
  3413. (setq find (substr str index (strlen search)))  (if (= find search) (progn    (setq str1 (substr str 1 (1- index))); y! @, W7 T+ o. }
  3414. (setq str2 (substr str (+ index (strlen search))))  (setq str (strcat str1 replace str2)) )  ) ) (setq str str))7 H2 n! F; V- N8 Z% W3 O
  3415. (defun hai (/ dial)( X" K2 C+ g8 G" B
  3416. (setq dial (load_dialog "hai.dcl"))       ;;goi dialog  W% r+ y. ~' \1 T" V
  3417. (if (not (new_dialog "find" Dial)) (exit)) ;;
    ; W6 Q$ G: A2 W; b
  3418. (mode_tile "find" 2); Tao dau nhac tai hop thoai
    4 ^) e. e( l: t
  3419. (action_tile "find" "(hai1)")
    , O8 G1 F) ?; X+ ?0 z/ K+ g
  3420. (action_tile "replace" "(hai2)")
    ! a& g" y- |" V' K
  3421. (action_tile "cancel" "(done_dialog) (exit)")( R. o7 k3 w" T2 }' G- E1 [, |/ [& C1 K! j
  3422. (start_dialog)      0 Q$ P  r& |6 y, ~0 k! y: ?
  3423. (unload_dialog dial))
    1 u4 g) P  N! c% x, m, M9 A8 R5 S
  3424. (defun hai1 () (SETQ str1 (get_tile "find"))); p5 e9 w/ Q8 @
  3425. (defun hai2 () (SETQ str2 (get_tile "replace"))). H: i( p1 d/ M) ^* @
  3426.   T- @% d3 N! [  o& g) w7 h
  3427. (defun c:TTT (/ a str str1 str2 newstr taphop sodem)
    " k  E8 d. T9 h  ^7 h( S
  3428. (hai)4 p" a& Q, [8 V1 R
  3429. (if (or (null str1) (null str2)) (princ "\nDu lieu khong hop le")
      Z8 Y4 V% Q; f. `  k8 n* @
  3430.   (progn9 u  q! G6 K5 x; Z# p5 G8 u( Y
  3431.    (setq taphop (ssget '((0 . "TEXT"))))
    ' B3 J$ }. K- }
  3432.    (setq sodem 0)5 c7 `  O: \. C. ?7 O  U
  3433.    (if taphop, b6 ~# o$ Z% J; ~8 c" l
  3434.     (progn0 Y! s( e/ U# |+ S* i: g. W% E7 N6 T
  3435.      (Repeat (sslength taphop)
    ) a. E6 e# e, G6 O4 D# z6 C+ ^$ J
  3436.       (setq a (entget (ssname taphop sodem)))" P) T5 p: ^1 S/ Y! ?
  3437.       (setq str (cdr (assoc 1 a)))  r0 _  M5 T8 ]/ C
  3438.       (setq newstr (frstring str str1 str2))+ b9 \& Z, a; s# i1 U% J' R  x
  3439.       (setq a (subst (cons 1 newstr) (assoc 1 a) a))# I5 _5 N: ~- A7 P
  3440.       (entmod a)
    ( w1 t' f& M6 \5 H( _4 w% d( [
  3441.       (setq sodem (1+ sodem))     )    )
    ) h% R' H3 g) a5 q: B
  3442.     (princ "\nNone "TEXT" selected")   )  ) ) (setq *error* olderr) (princ))/ c- g, A: \( e# P' c: f

  3443. 3 }. E) J; I% b# z/ R4 R
  3444. ;;;=============================  CHTEXSTY.LSP =============================- M1 e- g' L1 m1 |

  3445. * a+ t9 y( z  ]. e
  3446. (Defun C:TXS () (Setvar "Cmdecho" 0) (Initget 1 "SE ST ")
    ' A/ w- y: [2 ?! T. K( ^: ]
  3447. (Setq G (Strcase (Substr (Getkword "STyle/<SElection>:")1 2)))
    2 g. a% ]2 c/ T9 ~' O# ^
  3448. (Cond ((= G "SE") (Setq A (Ssget)) (Setq B (Sslength A))4 v, S# l; d- q! A8 u  D4 A
  3449. (Initget 1) (Setq C (Getstring "\nEnter new text style: "))
    3 B- d  F  ~! x7 O2 P
  3450. (Extang C) (While (> B 0) (Setq B (1- B)) (Setq D (Ssname A B))
    3 y% [6 Z/ g: A) a2 T2 |' Y
  3451. (Setq D (Entget D)) (Setq E (Assoc 7 D)) (Setq F (Cons 7 C))* o2 `  Q7 {/ v0 H
  3452. (Setq D (Subst F E D)) (Setq H (Assoc 51 D)) (Setq I (Cons 51 J))
    2 u& M- {( O; V# U6 }$ S3 |# P
  3453. (Entmod (Subst I H D))) (Setq A nil)) ((Or (= G "ST") (= G "")), B' J. ~0 [  ]# [, K) d
  3454. (Initget 1) (Setq A (Strcase (Getstring
    : K* t! D- ~+ L3 @1 A$ i
  3455. "\nEnter text style to change: "))) (Initget 1)
    1 G7 t  x- H- B0 w/ E$ k  o
  3456. (Setq C (Getstring "\nEnter new text style: "))(Setq D (Entnext))+ v& R: ]( a2 U0 H, `" i
  3457. (Extang C) (While D (Princ ".") (Setq E (Entget D)) (If
    & r1 t) c6 D1 k
  3458. (And (= "TEXT" (Cdr (Assoc 0 E))) (= A (Cdr (Assoc 7 E))))
    5 @0 n; Z5 R4 t+ V3 r6 L0 ^
  3459. (Progn (Setq F (Assoc 7 E)) (Setq G (Cons 7 C))4 z; @+ U9 s" n6 `; G) f8 M
  3460. (Setq E (Subst G F E)) (Setq H (Assoc 51 E)) (Setq I (Cons 51 J))4 F0 d- W3 f$ t9 F
  3461. (Entmod (Subst I H E)))) (Setq D (Entnext D))))) (Princ)); _( \' U; J: K6 s% B. V

  3462.   R6 B9 ?  n% {- z4 H  v
  3463. (Defun Extang (A) (Setq A (Tblsearch "STYLE" A))9 T+ J# A+ n* I/ H1 i
  3464. (Setq J (Cdr (Assoc 50 A))))
    " ]' P. K5 i7 u3 J

  3465. # o0 S* n  K. ^/ X; t
  3466. ;;; ============================ DRAW CLOUD =============================. m& L" c; I( ~* U, l  U# J* l
  3467. . K+ a# z& ~% X1 q! u( q
  3468. (defun CLOUD (/ pt1 pt2 arc1 cnt ss la)    (setvar "cmdecho" 0)
    1 k3 r: t( u6 v% E( @$ d
  3469.     (prompt "\nVe cloud (may) khong khep kin - Tu khep kin ve diem dau!")4 }' e2 L8 p) F
  3470.     (setq la (getvar "clayer"))
    / \# o2 I. p0 z
  3471.     (command "layer" "m" "cloud" "c" "5" "" "")
    0 P. _, c  O( l5 J
  3472.     (setq pt1 (getpoint "\nEnter first point of Cloud: "))5 b/ a. {# P. Q0 ~" y/ s  e
  3473.     (if pt1 (prompt "\nProceed in a COUNTER-CLOCKWISE direction..."))- |0 [: m' V: ^9 Q$ F( ?2 [
  3474.     (setq cnt 1 ss (ssadd))
    8 z3 D( T" W$ a4 j# @8 \
  3475.     (while pt1 (setq pt2 (getpoint "\nEnter next point - and close: "))/ x' }% Z% `1 ?! Q, v
  3476.     (if pt2 (progn (command "arc" pt1 "e" pt2 "r" (/ (distance pt1 pt2) 1.75))
    . s8 t: G- g3 _! K6 q: f3 o
  3477.     (if (= cnt 1) (setq arc1 (entlast) cnt 2) (ssadd (entlast) ss)) ))
    9 f, n9 I+ f1 X2 P8 a; ?) v
  3478.     (setq pt1 pt2) ) (setvar "highlight" 0) (if (> (sslength ss) 0)
    " t- A5 {. D) g  K: R% v) x3 |+ A
  3479.     (command "pedit" arc1 "y" "j" ss "" "x")  G5 ~- V; Q; \: a' ~# c
  3480.     (if arc1 (command "pedit" arc1 "y" "x")) ) (setvar "highlight" 1)6 c7 c0 e$ m# r' D# R# P1 e. n5 N( ~
  3481.     (command "layer" "s" la "")    (setvar "cmdecho" 1)    (princ))  2 O, @+ L" w1 S7 D
  3482. (DEFUN C:CLOUD () (CLOUD)) (DEFUN C:CLO () (CLOUD))
    . @( h+ d+ b: T: {
  3483. 8 n/ J7 v- v; d& C2 E
  3484. ;;; ================================ Funtion-Dulieu ========================
    0 n5 `! |9 a/ x& M8 ?
  3485. ;;; ================================ Funtion-Dulieu ========================# M1 M( R1 X! p* D# y
  3486. ;;; ================================ Funtion-Dulieu ========================
      p9 u# T/ U! k
  3487. 5 s8 P) t$ c/ C  M
  3488. (defun ha:nhap (kytu thamso) (princ kytu) (princ thamso) (princ ">: ") (setq key (getint)) (if key (setq thamso key)) (princ thamso) )  J, ?. ~2 Z* m/ |
  3489. (defun ha:thoat () (reinit) (setq Temp "Da thoat khoi chuong trinh"))) m1 K9 w& C  R* _& F  o
  3490. (defun khoangcach (kh khq11 khq12 / h0 h1) (setq h1 (polar kh (angle '(0 0) (vectophap khq11 khq12)) 500)) (setq h0 (inters khq11 khq12 kh h1 nil)) (distance kh h0))
    $ y; O; \  j8 I- C
  3491. (defun hacat (hacat1 hacat2 / hacat3 chon) (if (and (/= hacat1 nil) (/= hacat2 nil)) (progn   (setq hacat3 (polar hacat1 (angle hacat1 hacat2) (/ (distance hacat1 hacat2) 2)))   (setq chon (ssget hacat3))   (command "break" chon hacat1 hacat2)  ) ) (princ) )( J0 i, z; j. K
  3492. (defun hauon (hauon1 hauon2) (command "fillet" hauon1 hauon2))
    / D3 N% {" W/ b+ x# W- v+ R/ I
  3493. (defun init () (setvar "blipmode" 0) (setvar "cmdecho" 0) (setvar "angbase" 0))6 Y  l) I7 a, z7 x
  3494. (defun reinit () (setvar "cmdecho" 1) (setvar "osmode" 0))7 M) c! G* j. T5 {
  3495. (defun tichvecto (vecto1 vecto2) (apply '+ (mapcar '* vecto1 vecto2)))2 S' \4 A* T- U3 i# z% n2 {* Z3 h8 I
  3496. (defun vectophap (v01 v02 / vectochiphuong) (setq vectochiphuong (mapcar '- v01 v02)) (list (cadr vectochiphuong) (* -1 (car vectochiphuong))))  [5 j4 ]! h7 B; y! C/ a
  3497. (defun ha:giaodiem (dc1 p1 p2 / hc hc1 diem1) (setq diem1 (vectophap p1 p2)) (setq hc1 (polar dc1 (angle '(0.0 0.0) diem1) 100)) (setq hc (inters p1 p2 dc1 hc1 nil)))
    9 |" R! F# I& |
  3498. (defun dtr (dtr) (* pi (/ dtr 180.0)))2 x% P1 t/ {7 y
  3499. (defun rtd (rtd) (* 180.0 (/ rtd pi)))
    " O- y5 B, U8 \; [8 O
  3500. 5 H5 N, r, w: T' l
  3501. ;;;==============================PROGRAME===============================7 n, E. L: p- ^" b) m
  3502. ;;;=====================EditDiM Hien Hop Thoai Dep======================, U2 q4 l# o0 A) }( F
  3503. ;;;==============================PROGRAME===============================
    , q! F0 s$ J; n) P
  3504. ( p0 C$ p6 b7 q% l; d
  3505. ;;Dth Edit Text, Dimtex & Attributes(Chu Co Thuoc Tinh)
    8 C+ N- f* |7 A: O, ]
  3506. ;;Chay Cung Du Lieu.Lsp & Hai.Dcl  K& g+ j; @& i9 v* A
  3507. (Defun Hai_Edim (Chon / Dial State Str Oldlis Dimdefault Pt10 Pt13 Pt14 St Ang Dis Pt Hc)
    1 {  V, j. i$ V6 M+ e
  3508.   (Setq Oldlis (Entget (Car Chon))
    9 p' a. ?% y3 j) D& U/ u8 s# k
  3509.         Pt10 (Cdr (Assoc 10 Oldlis))4 V& k- o/ {5 q: a5 }+ R* d
  3510.         Pt13 (Cdr (Assoc 13 Oldlis)). |0 A7 g8 K7 }( a$ }( u1 I8 y
  3511.         Pt14 (Cdr (Assoc 14 Oldlis))7 ?, O4 v8 j. o' c9 }
  3512.         St  (Cdr (Assoc 70 Oldlis)): k- g+ g% z  i( O9 M8 k  ^! v4 C
  3513.         Dimdefault (Cdr (Assoc 1 Oldlis))" r+ g! e- j$ Q2 Z" a
  3514.         )2 d& J% K" O) ~3 B8 E
  3515.   (Cond4 E! R0 _6 M! T7 @& p
  3516.     ((Or (= 32 St)(= 0 St)(= 160 St))
    8 Z# h* V8 A) L0 f0 x' k3 X
  3517.      (Progn9 d8 f; |) ^! p+ R  Z! P9 }& S9 B
  3518.        (Setq Ang (Cdr (Assoc 50 Oldlis))
    0 V* ?7 S7 V& ^( Y) t
  3519.              Pt (Polar Pt13 Ang 500)
    0 `) ^' i0 Y+ \
  3520.              Hc (Lay_Hinh_Chieu Pt10 Pt13 Pt)
    + ^, N, e8 J9 Q! T0 ^5 J
  3521.              Dis (Rtos (Distance Pt13 Hc))
    ) a& W* [) ^2 M  N/ h; c7 I) S. h
  3522.              ): S) u9 N/ [5 W# f4 ^! g- R
  3523.        )  L" s' H: ]: q# V. S  F
  3524.      )
    : I; S% e3 O8 {8 c" h& w) `# n4 F
  3525.     ((Or (= 33 St)(= 1 St))1 l7 ^1 D4 @& a, q/ y
  3526.      (Progn(Setq Dis (Rtos (Distance Pt13 Pt14)))))3 H7 Z1 i/ u2 }$ F& z6 D
  3527.     );;End Cond
    2 e5 e+ D" }" Y2 Z
  3528.   (If (= Dimdefault "") (Setq Dimdefault "<>")). \0 M" t9 R- B6 x7 d! Y
  3529.   (Setq Dial (Load_Dialog "Hai.Dcl"))- ]6 |- S; k7 J. ~) r4 {. T& }
  3530.   (If (Not (New_Dialog "eddim" Dial)) (Exit))
    5 Z# M1 R+ D/ ?7 R
  3531.   (If (Or (= 32 St)(= 0 St)(= 160 St)(= 33 St)(= 1 St))$ |: V" Y2 j  l' y2 J$ _, Z2 L
  3532.     (Set_Tile "text" Dis))9 }, r3 d. i, l( M4 Z  i0 {9 m; a
  3533.   (Set_Tile "ha:edim" Dimdefault)( U8 C6 E6 }% x7 U1 P4 X3 X7 i2 ?
  3534.   (Mode_Tile "ha:edim" 2); Tao Dau Nhac Tai Hop Thoai, x* x# s0 p2 m# k, u3 C  X
  3535.   (Action_Tile "ha:edim" "(Setq Str (Get_Tile \"ha:edim\"))(Done_Dialog 3)")
      |- v6 a! C  {* Z9 a7 f
  3536.   (Setq State (Start_Dialog))(Unload_Dialog Dial)
    1 x, W& s/ h, T* k' X! V
  3537.   (If (And Str (= 3 State))3 x. B% l5 {7 V: M( }. e& W
  3538.     (Progn
    # \" d" N2 K8 b$ {% W
  3539.       (Setq Oldlis (Subst (Cons 1 Str) (Assoc 1 Oldlis) Oldlis))(Entmod Oldlis)))
    " i6 w' X: H0 q$ _& {  G
  3540.   )! z& B) ^4 e8 C6 u
  3541. (Defun C:EH (/ Chon Name )
    " ], ]- @. g* d0 q5 ]3 c6 E: L: f
  3542.   (Defun *Error* (Msg)+ A: g+ W( X6 a) h9 r% D
  3543.     (Princ "\nerror: ")(Princ Msg)(Princ "  ")
    1 P5 b5 u! V3 e# t' j% I4 `0 t
  3544.     (Start_Dialog)(Unload_Dialog Dial)8 b! n  S  d; T' t
  3545.     (Setq *Error* Olderr)(Princ)
    ' }# d: W9 {3 L, ?. e2 P+ D3 T
  3546.     )
    4 T$ M& r0 E8 ]& w+ y- a
  3547.   (Setq Olderr *Error*)
    3 O1 k1 W. R6 f, L" J: P
  3548.   (Setq Chon T). `( G. `9 h8 W* X
  3549.   (While Chon6 ]3 \% s! V+ d9 Z' U- q. @3 t
  3550.     (Setq Chon (Entsel "\n\n\nSelect Text, Dimtext Or Attributes To Edit..."))
    ! F+ B% a) B) S( ?
  3551.     (If Chon
    0 z9 _2 b0 h$ G" b, y' d
  3552.       (Progn2 T3 @5 \; T. s+ }
  3553.         (Setq Name (Cdr (Assoc 0 (Entget (Car Chon)))))7 G" b# l* J/ `1 j0 L" l
  3554.         (Cond
    : R# o( C9 A5 u8 t7 `; Y3 [1 x
  3555.           ((= Name "INSERT")(Command "Ddatte" Chon)); R) D% o0 ]1 C  [. ^* Y- n9 G# _
  3556.           ((Or (= Name "TEXT") (= Name "ATTDEF") (= Name "TOLERANCE") (= Name "MTEXT"))(Command "Ddedit" Chon ""))1 D% X" H3 G8 H; `
  3557.           ((= Name "DIMENSION") (Hai_Edim Chon))
    9 G0 n9 B) d" F$ r8 W- ]
  3558.           )! \2 O+ _  d, }; p* K3 g
  3559.         );End Cond" w( W; ~5 ^$ ]. t2 f+ x1 R9 m
  3560.       );End Progn, w! k: l' O/ y5 ?/ w3 n9 c+ B# N
  3561.     );End While& s/ M- ^! a- {( h, L
  3562.   (Setq Olderr *Error*)(Princ)' V/ \- s0 n% e7 |
  3563.   );End Program8 X) \9 k" a1 L- s+ W! i" \

  3564. 0 C" X. C* O( X- ?% M5 `0 A" r
  3565. ;;;====================DDeditDim=====================8 J' n* h6 `2 q9 D( v) a' J+ w1 a2 Z
  3566. ;;;=====================Hai.DCL======================9 d5 |+ D+ T7 T: }+ P& e
  3567. ;;;====================DDeditDim=====================5 b" }! k5 m+ r. o5 P0 r% e

  3568. 0 H% |4 h- E9 x/ U
  3569. ;;Dth Edit Text, Dimtex & Attributes(Chu Co Thuoc Tinh)5 _  i" ?6 T+ t9 M- ?- a9 l* _7 {
  3570. ;;Chay Cung Du Lieu.Lsp & Hai.Dcl
    $ F' g& Y9 H/ l) M! ?4 J9 e, l
  3571. (Defun Hai_Edim (Chon / Dial State Str Oldlis Dimdefault Pt10 Pt13 Pt14 St Ang Dis Pt Hc)! F5 r/ Y5 `# V
  3572.   (Setq Oldlis (Entget (Car Chon))' J, D2 q* Q* |$ C
  3573.         Pt10 (Cdr (Assoc 10 Oldlis))
    & B( _3 v+ f) h1 w; y! v
  3574.         Pt13 (Cdr (Assoc 13 Oldlis))# [. L& X' F8 p7 p: V* g3 ^
  3575.         Pt14 (Cdr (Assoc 14 Oldlis))5 E+ d- l- u' Y7 }4 r3 j
  3576.         St  (Cdr (Assoc 70 Oldlis))  n8 O- S4 |- D! u8 u) @! G! J
  3577.         Dimdefault (Cdr (Assoc 1 Oldlis))
    ' u0 a2 a  \# b( A. W5 c& `
  3578.         )
    6 T- n. J4 H$ q, [; ~
  3579.   (Cond, @6 |' h/ {3 D$ T4 c6 A
  3580.     ((Or (= 32 St)(= 0 St)(= 160 St))* H* d; x( J: Y7 G. D! b6 a
  3581.      (Progn) u8 P8 |0 \* ?; y% C- J
  3582.        (Setq Ang (Cdr (Assoc 50 Oldlis))
    5 v) u; z8 c. l6 q7 N
  3583.              Pt (Polar Pt13 Ang 500)3 x( C# n. r; v. S0 {
  3584.              Hc (Lay_Hinh_Chieu Pt10 Pt13 Pt)" |- K2 _* E* t( y7 l; D4 n6 ^
  3585.              Dis (Rtos (Distance Pt13 Hc))6 S: k% r+ e$ X: J. R8 `
  3586.              )
    & V. b- s% J+ M! l6 C+ A% Z% q
  3587.        )
    + _7 |" w2 Q, i+ L, H" Q1 c! p; W
  3588.      ): _' j$ V9 G& j9 K% e( R
  3589.     ((Or (= 33 St)(= 1 St))
    + ~# h$ i8 |! I" Q5 W
  3590.      (Progn(Setq Dis (Rtos (Distance Pt13 Pt14)))))2 k3 ~( g0 B' r8 W
  3591.     );;End Cond4 t' [5 Q1 w! ?" A( M# n. b& @* S
  3592.   (If (= Dimdefault "") (Setq Dimdefault "<>"))4 L. ?; }+ }* `: l5 N9 e
  3593.   (Setq Dial (Load_Dialog "Hai.Dcl"))
    ; U8 Z6 |( d' @& C# Q9 @* P
  3594.   (If (Not (New_Dialog "eddim" Dial)) (Exit))
    2 r4 [1 I' l! G0 X: }+ x; P7 B, g
  3595.   (If (Or (= 32 St)(= 0 St)(= 160 St)(= 33 St)(= 1 St))- h! S1 X8 G1 L& @
  3596.     (Set_Tile "text" Dis))
    $ L" x$ ^! s# G! V
  3597.   (Set_Tile "ha:edim" Dimdefault)
    + }3 D$ z6 o. L. T- h
  3598.   (Mode_Tile "ha:edim" 2); Tao Dau Nhac Tai Hop Thoai, x5 j8 ^/ @  w2 Z& H! v
  3599.   (Action_Tile "ha:edim" "(Setq Str (Get_Tile \"ha:edim\"))(Done_Dialog 3)")+ d+ |$ y; R( n* o$ R' p
  3600.   (Setq State (Start_Dialog))(Unload_Dialog Dial)
    , ~7 S. N0 E% r
  3601.   (If (And Str (= 3 State))
    $ j- d9 z+ N" I, o: r5 y
  3602.     (Progn
    $ U/ a2 M7 }- h
  3603.       (Setq Oldlis (Subst (Cons 1 Str) (Assoc 1 Oldlis) Oldlis))(Entmod Oldlis))). o  X( m  ^. \- Y) y3 n+ u
  3604.   )5 B3 b. c( A- |( L3 H- Y* `& w0 _
  3605. (Defun C:EH (/ Chon Name )
    ' J9 ^2 ?( {  I" C/ ?! v) u5 a- ?

  3606. 9 u1 m$ L8 |4 R4 [% ~" \, d
  3607. ;;;********************Du Lieu********************! {+ \' t* M4 c( G! L! N' H
  3608. 9 G' y: a' e7 P, n1 x& c
  3609. (Defun Ha:Thoat () (Reinit) (Setq Temp "Da Thoat Khoi Chuong Trinh"))
    # ^6 t: U9 p" f: m6 Y# z3 Z
  3610. (Defun Hacat (Hacat1 Hacat2 / Hacat3 Chon), u% J9 b% C1 B
  3611.   (If (And (/= Hacat1 Nil) (/= Hacat2 Nil)). J- V( A& E: P/ f2 S; _" ^
  3612.     (Progn# ?$ ^1 T" F5 N' n  a/ d& }1 U
  3613.       (Setq Hacat3 (Polar Hacat1 (Angle Hacat1 Hacat2) (/ (Distance Hacat1 Hacat2) 2)))
    4 E- K+ Y8 O4 E/ L: N2 g
  3614.       (Setq Chon (Ssget Hacat3))
    5 W8 K: F; `' l) }
  3615.       (Command "Break" Chon Hacat1 Hacat2)+ w- h: ^- i1 Y9 V0 ]
  3616.       )3 L% G  C& V2 u+ b' g2 {6 t
  3617.     )
    7 v* N+ o3 T1 r( j. G5 p' j8 M
  3618.   (Princ)3 }5 {0 [4 k  w7 `
  3619.   )1 g9 Z$ `$ b3 z! C4 {3 ?# @
  3620. ;;  t, A3 J9 R- O- e$ l+ ~7 Q
  3621. (Defun Hauon (Hauon1 Hauon2)(Command "Fillet" Hauon1 Hauon2))  N. |: N: J4 N: e2 {
  3622. ;;
    . L, F+ A9 O! I) I/ h; H- c) F
  3623. (Defun Taolop (Mau Lop / A)(Setq A(Tblsearch "Layer" Lop))(If (Null A)(Command "Layer" "_N" Lop "_C" Mau Lop "")) (Setvar "Clayer" Lop))
    ( R8 k7 G5 [3 H& n+ o/ J+ d7 H
  3624. ;;
    + i& n# [0 K3 c; g+ L5 A
  3625. (Defun Init ()(Setvar "Blipmode" 0)(Setvar "Cmdecho" 0)(Setvar "Angbase" 0))
    7 Q7 Q: X# ]2 M$ m9 A  V
  3626. ;;7 k2 q  X, o4 D! m9 n# s) v" i& o
  3627. (Defun Reinit ()(Setvar "Cmdecho" 1))
      s  y! z5 |5 F+ Y9 J5 l
  3628. ;;1 |8 R% C! m4 h+ [( D) Z8 \' X5 `
  3629. (Defun Tichvecto (Vecto1 Vecto2)(Apply '+ (Mapcar '* Vecto1 Vecto2)))
    0 `0 ~+ h; ~: S3 \$ o$ ~3 o! C
  3630. ;;
    " X7 D4 Z( g8 k' K2 Y% W
  3631. ;;Cho 2 Diem Tinh Ra Vec To Phap! r) [( {* f1 N" z' `
  3632. (Defun Vectophap (V01 V02 / Vectochiphuong)(Setq Vectochiphuong(Mapcar '- V01 V02)) (List (Cadr Vectochiphuong) (* -1 (Car Vectochiphuong))))
    7 B. R% }3 c2 N, l: M
  3633. ;;Xac Dinh Vi Tri Hinh Chieu 1 Diem Len 1 Duong Thang6 b- u% I- p9 y% C: d
  3634. ;;Da Biet 2 Diem Thuoc Duong Thang! M! w; ^) a5 Y7 ?# F
  3635. (Defun Lay_Hinh_Chieu (Dc1 P1 P2 / Hc Dc2)  s1 U5 H# Y. X+ J  d) e8 n" {3 g
  3636.   (Setq Dc2 (Polar Dc1 (+ (/ Pi 2) (Angle P1 P2)) 100)
    ! A( c3 g" N. m! C
  3637.         Hc (Inters P1 P2 Dc1 Dc2 Nil)))
    2 ^( v% R# ^) c- d( E. y' d! n
  3638. ;;Xac Dinh Khoang Cach Tu 1 Diem Len 1 Duong Thang
    % n! }# x% c% `. t+ g7 n
  3639. ;;Da Biet 2 Diem Thuoc Duong Thang
    0 g$ Q% {& Z- m# d
  3640. (Defun Khoangcach (Dc1 P1 P2 / Dc2 Hc)  ?% g6 K8 K, W
  3641.   (Setq Dc2 (Polar Dc1 (+ (/ Pi 2) (Angle P1 P2)) 100)
    / K& e8 F" l/ C1 Q: C
  3642.         Hc (Inters P1 P2 Dc1 Dc2 Nil))9 _2 }& b  l0 Z' l: |5 ]! \
  3643.   (Distance Dc1 Hc)
    . d$ R/ g4 S! h' x8 l
  3644.   )
    1 r$ {2 K3 X# V6 y* q/ a* I
  3645. (load "nhapcua.lsp")% g" \/ W# f' z' n+ b
  3646.   (Defun *Error* (Msg)
    ( t4 M& {' E9 C/ z; e# F4 g# B
  3647.     (Princ "\nerror: ")(Princ Msg)(Princ "  ")
    2 G* i+ d' r8 J1 E/ H, n$ N3 q
  3648.     (Start_Dialog)(Unload_Dialog Dial)0 E0 J6 s2 p( A! E
  3649.     (Setq *Error* Olderr)(Princ)
    ) i2 z! C5 H9 L
  3650.     )
    . e) t* a9 t6 ~3 [3 U9 H8 e
  3651.   (Setq Olderr *Error*)5 _4 }( Y' e5 X& a+ @! c
  3652.   (Setq Chon T)
    9 p7 S, G3 ?9 M. s0 o  M. \
  3653.   (While Chon
    ; N) o, C4 I: I( l* ~
  3654.     (Setq Chon (Entsel "\n\n\nSelect Text, Dimtext Or Attributes To Edit..."))
    ! k0 C3 U4 T; h; d* v
  3655.     (If Chon) x4 S# T6 F; `' V
  3656.       (Progn
    / U3 |: _6 M+ g* k
  3657.         (Setq Name (Cdr (Assoc 0 (Entget (Car Chon)))))  F1 }# e0 }, t  X8 \' }+ x
  3658.         (Cond
    ) H1 _3 e5 L- n' B/ R
  3659.           ((= Name "INSERT")(Command "Ddatte" Chon))
    - C1 E' O$ `. i* \0 w9 K, Z
  3660.           ((Or (= Name "TEXT") (= Name "ATTDEF") (= Name "TOLERANCE") (= Name "MTEXT"))(Command "Ddedit" Chon "")): ?& x7 C6 k9 F2 u
  3661.           ((= Name "DIMENSION") (Hai_Edim Chon)), O9 w0 d2 p# s0 E1 G
  3662.           )
    8 g2 e% ^9 u& A% b6 e7 ]/ j
  3663.         );End Cond
    6 s0 n3 R. B1 j) `# R0 t+ |; v8 k
  3664.       );End Progn
    6 j0 }1 }2 g+ l/ W5 Z, `  v
  3665.     );End While
    7 {9 _2 v: _5 o  A2 P3 Z
  3666.   (Setq Olderr *Error*)(Princ)  `9 u5 F7 g! F/ v7 @6 ]: B" x
  3667.   );End Program
    - t. `7 `7 D/ N& p5 t6 J7 j

  3668. 7 r6 S$ ^5 i. t4 I0 L
  3669. ;===================HAI DCL Nhapcua.LSP De chay Hop Thoai EditDiM===================
    $ M# r) a% r9 f3 T- L
  3670. ;====================================Nhapcua.LSP====================================
    " b/ O2 T# i5 H' G; T' o5 K. ~
  3671. ;===================HAI DCL Nhapcua.LSP De chay Hop Thoai EditDiM===================
    2 }! c0 g/ k2 z8 u
  3672. 3 ?' `, p* a3 b

  3673. - o, C+ m! o9 r* k4 w
  3674. * h& ?. E5 Q2 ]( t! S5 x8 Q  s" d; ~
  3675. ;*******************;*******************;*******************;*******************
    4 Q* g. W) Z# O* t' U# l
  3676. ;****K E T C A U****;****K E T C A U****;****K E T C A U****;****K E T C A U****' q4 s6 D6 w' |; C" [
  3677. ;*******************;*******************;*******************;*******************
    1 V* @2 x% ^" J3 T0 v
  3678. - e8 `9 R: p. G& k
  3679. ;VE HINH BINH HANH
    + ]3 V" q' z; \+ Q3 \
  3680. " ?2 s% l* W, R% p. v" g
  3681. (defun c:binhhanh (/ p1 p2 p3)5 N, A6 j4 |4 W8 R* q3 @
  3682. (setq p1 (getpoint "\n Nhap diem thu nhat:"))
    ! k2 R9 f3 }5 i1 O4 ~
  3683. (setq p2 (getpoint p1 "\n Nhap diem thu hai:"))
    ; `: K8 b! X/ Y7 d. i
  3684. (setq om (getvar "osmode"))$ }; x3 z% C* K( Y( y7 D
  3685. (setvar "osmode" 0)7 B/ ^, O2 a! y
  3686. (command "line" p1 p2 "")
    - o/ |3 s# z! H8 R" k( s
  3687. (setvar "osmode" om)$ {! s" V! G4 w* Y* t5 D  H6 ~
  3688. (setq p3 (getpoint p2 "\n Nhap diem thu ba:"))# c$ X4 k- O/ `9 K7 K/ B, ~1 j
  3689. (setq a (angle p2 p1))
    & H1 U2 B! u; B
  3690. (setq d (distance p1 p2))( b# J3 \& Y4 a- z- I# I6 w" X4 ?
  3691. (setq p4 (polar p3 a d))
    7 G4 R9 W% y0 `* X7 X. f
  3692. (command "OSNAP" "none")
    : x0 A% w( E- B( n+ e4 z' t6 l
  3693. (command "erase" "l" "")6 L% k  N9 d, {! q( o; R7 x4 p, K
  3694. (command "pline" p1 p2 p3 p4 p1 "")
    4 x6 ]4 A, Q# I2 {6 V+ |
  3695. (setvar "osmode" om). _+ H; {- D5 F# ]2 M' F
  3696. )
    / J& |7 A$ @& Y7 X- y5 v4 G$ Q
  3697. 6 `9 r; e5 ~# z
  3698. ;VE LUOI COT- C5 ~5 v9 m: w

  3699.   s. J, t2 b, r+ A- K
  3700. (defun c:LuoiCot ()
    * r; }8 Z; u! @5 R7 v
  3701. (setq om (getvar "osmode"))! O/ \: K. @4 b2 d
  3702. (setvar "osmode" 0)
    , t2 q  P$ [. Z' i) S* N
  3703. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))+ l+ Q! \( k7 |- ^9 R) @
  3704. (setq p0 (getpoint "\n Chon Basic Point:")); Y' H8 b! w3 Z
  3705. (setq nc (getreal "\n Nhap chieu ngang cua cot : "))2 h/ \) S( q9 F' A; K" D; N7 Q
  3706. (setq dc (getreal "\n Nhap chieu doc cua cot : "))
    & J  J9 O. S1 a; N, k% ^
  3707. (setq p1         (polar         (polar p0 pi (/ (* nc hstl) 2 tile) )    (* pi 1.5)    (/ (* dc hstl) 2 tile)  )  )
    : w2 {6 {) B3 f3 U- b- i" y. t4 T
  3708. (setq p2         (polar         (polar p0 0 (/ (* nc hstl) 2 tile) )    (* pi 0.5)    (/ (* dc hstl) 2 tile)  )  )
    7 R6 A: v! j- \0 [+ K
  3709. (command "rectang" p1 p2)
    1 e* N( h) _& n6 |" F& @" H
  3710. (command "hatch" "solid" "l" "")
    4 D! V: r  b3 k3 t2 P
  3711. (setq bcn (getreal "\n Buoc cot theo phuong ngang : "))
    $ y/ ~. R3 a. P1 q9 B
  3712. (setq nn (getint "\n So buoc cot phuong ngang : "))* j& F. L- s  ?0 D% H2 H
  3713. (setq w1         (polar         (polar p1 pi (/ (* nc hstl) 2 tile) )    (* pi 1.5)    (/ (* dc hstl) 2 tile)  )  )( G* x  Y" J& o, a1 ]6 f
  3714. (setq w2         (polar         (polar p2 0 (/ (* nc hstl) 2 tile) )    (* pi 0.5)    (/ (* dc hstl) 2 tile)  )  )1 Y6 \: A3 G* F& S: y
  3715. (command "select" "w" w1 w2 "")- }: y& E- D8 N
  3716. (command "array" "p" "" "r" "1" (+ nn 1) (/ (* bcn hstl) tile) )
    2 z1 y9 k- T( I; A$ i# i
  3717. (command "line" (polar p0 pi (/ (* 1000 hstl) tile)) (polar p0 0 (/ (* (+ (* bcn nn) 1000) hstl) tile) ) "")$ N& `0 n3 t" O: {' W5 ~$ k! Q
  3718. (setq w1 (polar (polar p0 pi (/ (* hstl 2000) tile)) (* pi 1.5)  (/ (* hstl 2000) tile) ))
    " p" z1 G' g# h0 M! x
  3719. (setq w2 (polar (polar p0 0 (/ (* (+ (* bcn nn) 2000) hstl) tile) ) (* pi 0.5)  (/ (* hstl 2000) tile) ))8 z( f2 q- i1 [6 ?
  3720. (command "zoom" "w" w1 w2)/ c3 Y- ?% Z) A0 _; Y
  3721. (command "select" "w" w1 w2 "")
    ' L+ x2 i0 o% r. ]5 X
  3722. (setq bcd (getreal "\n Buoc cot theo phuong doc : "))
    3 B) U& m" e/ G* a3 F# U/ d2 O
  3723. (setq nd (getint "\n So buoc cot phuong doc : "))
    7 o0 d; F: q8 e' Q1 ^
  3724. (command "array" "p" "" "r" (+ nd 1) "1" (/ (* hstl bcd) tile) )6 F2 [% Z, J1 m. a5 z- `" S2 I5 u" d* v
  3725. (command "line" (polar p0 (* pi 1.5) (/ (* hstl 1000) tile))  (polar p0 (* pi 0.5)  (/ (* (+ (* bcd nd) 1000) hstl) tile))  "")
    2 P2 _  j9 D0 P2 M- |
  3726. (command "array" "l" "" "r" "1" (+ nn 1) (/ (* hstl bcn) tile) )6 r9 F4 {. M7 a- j
  3727. (setq w2 (polar w2 (* pi 0.5) (/ (* (+ (* bcd nd) 2000) hstl) tile))  )  
    * i  ?8 d  o# H
  3728. (command "zoom" "w" w1 w2)
    + `, I3 [: H* e0 f( v! w/ k6 T
  3729. (setvar "osmode" om)
    1 g! D2 x6 ~0 H) s6 U
  3730. )
    - I" X; K1 J! g$ ?, u- ]( Q6 p
  3731. 3 C/ E9 G4 E, Y* D1 {$ Q1 D5 ?; R4 b
  3732. ;VE CUA DI2 B, a0 O0 X' b: F) s' z' Q! U& m

  3733. ) B; N' b2 }' V) u3 ?& o4 g! `7 I
  3734. (defun c:cuadi (), n7 y9 @3 {$ N6 I
  3735. (setq om (getvar "osmode")); b/ {) t8 Q- z
  3736. (setvar "osmode" 0)
    # ]3 F; Y5 Z2 t; Q8 P, g4 F: h

  3737. * I# x$ r1 m6 s; K
  3738. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))
    0 v  Q$ d2 [2 u  P$ h
  3739. (setq b (getreal "\n Nhap be rong cua : "))
    2 F+ U/ ~7 S  p% P" E* ]
  3740. (setvar "osmode" om): ^* j7 G7 `: x' t  X5 k
  3741. (while (< 0 1)& \* w: B( Q" T  X  g
  3742. (progn) d$ `  Z- f" j7 G* Z
  3743. (setq p0 (getpoint "\n Chon Basic Point:"))
    # R, [6 G5 N7 A8 f
  3744. (setq p1 (getpoint p0 "\n Chon diem de xac dinh huong cua cua:"))
    , V% Z6 n+ V+ T: I& f8 k) a3 i. M# m
  3745. (command "osnap" "none")
    : _  W5 U& r* m8 g& \+ m* G
  3746. (setq p2 (getpoint p0 "\n Chon diem de xac dinh huong mo cua:"))7 ~- K& [( ]; u3 ]  u5 G* K! F2 ]  X8 q
  3747. (setq a1 (angle p0 p1))
    ! v. \2 k" K1 U. ~) Q
  3748. (setq p1 (polar p0 a1 (/ (* hstl b) tile)))
    # {7 B5 T+ F3 W0 }- a. [
  3749. (setq a2 (angle p0 p2))
    $ N& ?# }+ q2 U$ s$ I  o3 i+ [# c
  3750. (if (< (- a2 a1) pi) (setq a3 (+ (/ pi 2) a1)) (setq a3 (- a1 (/ pi 2))) )4 F2 u2 \+ ~) u. M. @( P% M
  3751. (command "pline" p0 "w" "0" "0" p1 (polar p1 a3 (/ (* hstl 40) tile)) (polar p0 a3 (/ (* hstl 40) tile)) p0 "")
    ' j2 L) t! s: `6 L1 e
  3752. (command "rotate" "l" "" p0 (/ (* (- a3 a1) 180) pi))
    5 P5 \1 ?/ y$ a# f5 [; V
  3753. (command "arc" "ce" p0 p1 "a" (/ (* (- a3 a1) 180) pi))
    ; `1 v) ]" [6 g) B* ?4 z
  3754. (setvar "osmode" om)
    ( n& M5 `& \+ y- W8 U2 `8 C
  3755. ))
    ; S" ^1 R1 i0 Z& m& ?% M9 K
  3756. )
    - X* C4 ~* ?! l5 R+ c
  3757. ) e3 z. \! E% L: j1 s- I
  3758. ;VE CUA SO
    3 Z2 {( J  k+ \5 Y/ O

  3759. . _) z9 [& u% b2 ^9 E  b9 K
  3760. (defun c:cuaso ()9 c+ W; ~' \7 f) F7 i! i1 p) t
  3761. (setq om (getvar "osmode"))
    * D/ v7 r% w% ~+ j0 j$ d8 K* i! [
  3762. (setvar "osmode" 0)% ]" A% E6 x# G: G
  3763. 3 o3 t" V- h5 p9 O/ ~. f' l- h
  3764. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))" H1 e/ z; d9 O$ ]) L1 M
  3765. (setvar "osmode" om): f6 |0 Q; P3 v/ g! q
  3766. (while (< 0 1)  U7 V& S9 K# H! O4 H
  3767. (progn
    9 d( f! O& h2 y9 ^# Q
  3768. (setq p0 (getpoint "\n Chon Basic Point:"))
    5 Q  H" q0 ]  }# R4 ^; k5 {2 A
  3769. (setq p1 (getpoint p0 "\n Chon diem de xac dinh be rong cua:"))4 Y5 c1 c; T2 l) [! q+ M
  3770. (command "osnap" "none")/ c: k& K/ y& C
  3771. (setq p2 (getpoint p1 "\n Chon 1 diem o trong nha de xac dinh huong cua so:"))
    3 q  Q7 h+ t& }
  3772. (setq b (distance p0 p1))# s3 N( j' i5 U8 g# o$ Q8 @( ?
  3773. (if (< b  (/ (* hstl 600) tile)) (setq du 50))
    ( N) v' X6 Y  q
  3774. (if (> b  (/ (* hstl 600) tile)) (setq du 150))$ D. Y! Q; G+ H# A% R: m; K8 h- W
  3775. (if (> b (/ (* hstl 1800) tile)) (setq du 200))
    - R; U' g/ j% E3 c  H7 o6 z$ Y
  3776. (setq a1 (angle p0 p1))
    ; I0 m/ z# [/ C
  3777. (setq a2 (angle p0 p2))  d- J& ]% Y0 c* g: R7 ^: u
  3778. (if (> a2 pi) (setq a2 (- a2 (* pi 2)) )  )
    $ f) b9 h+ ?$ C- M& T! `
  3779. (if (> (- a2 a1) 0) (setq a3 (+ (/ pi 2) a1))  )+ G5 v4 Z2 q# }, O
  3780. (if (> (- a1 a2) 0) (setq a3 (- a1 (/ pi 2)))  )
    + Z" e# Y/ |9 n* s. n, {$ T( X
  3781. (command "pline" p0 "w" "0" "0" p1 "")
    / g  }+ H* a. w0 D  I/ r" s% q
  3782. (command "pline" (polar p0 a3 (/ (* hstl 50) tile)) (polar p1 a3 (/ (* hstl 50) tile)) "")
    " V2 J* S2 n; _) ~
  3783. (command "pline" (polar p0 a3 (/ (* hstl 100) tile)) (polar p1 a3 (/ (* hstl 100) tile)) ""), H2 r/ U7 D$ \% w2 U
  3784. (command "pline" (polar p0 a1 (* (- du) (/ hstl tile))) (polar (polar p0 a1 (* (- du) (/ hstl tile))) a3 (* -100 (/ hstl tile)))
    : w  V9 x$ ~; e9 y% k
  3785.                 (polar (polar p1 a1 (* du (/ hstl tile))) a3 (* -100 (/ hstl tile))) (polar p1 a1 (* du (/ hstl tile))) "")
    $ v/ f( b6 k8 K/ s
  3786. (setvar "osmode" om)) R+ E; @7 Y$ f# A3 r# D& n1 @
  3787. ))
    & ^  v2 a; y2 ?2 ^8 D& h0 q7 F
  3788. )3 M8 Y# ^- h" t6 F; ]9 o4 E% H
  3789. " S6 @& l0 @9 q
  3790. ;;;=== General Utility Functions ===; r3 ^& I9 ^7 I. x# Y- C; v

  3791. ; |9 i/ q! W  m
  3792. ;   R12 compatibility - In R12 (acad_helpdlg) was an externally-defined . d9 q# b% m6 h
  3793. ;   ADS function.  Now it's a simple AutoLISP function that calls the
    $ [* J) b( s5 p- E
  3794. ;   built-in function (help).  It's only purpose is R12 compatibility.  
    0 c8 o) s& z( ]3 m- H
  3795. ;   If you are calling it for anything else, you should almost certainly
    1 j) d) G( I6 m
  3796. ;   be calling (help) instead. 0 p  z/ W" p+ J9 |# F
  3797. 1 h5 H& u3 p0 z1 W6 K3 Y) |# Z# ?, n
  3798. (defun acad_helpdlg (helpfile topic)" e2 t% ?" W8 {$ j7 u" m' v& v  G
  3799.   (help helpfile topic)  [9 y5 f7 o$ `( E9 }, q/ A; [: _
  3800. )  M% w0 A+ q2 j* l- K
  3801. * n2 B0 U8 D* K" O
  3802. 1 \. q: S' ^. ^0 Y
  3803. (defun *merr* (msg)" s6 t: H0 H' C" P
  3804.   (setq *error* m:err m:err nil)
    ) U9 c& _! h3 d! W  `
  3805.   (princ)
    ' ]/ b. Z- k( C. P* B* I6 k
  3806. )' J5 t2 i+ x& Y4 l' C

  3807. 1 [" H: O# O# s
  3808. (defun *merrmsg* (msg)6 O& z) L6 ^: b/ l
  3809.   (princ msg)% d" I1 ^. E" ?0 y  C% K! ^2 ?1 |
  3810.   (setq *error* m:err m:err nil)
    " g" u2 u0 t  n
  3811.   (princ)( G2 B/ D; ~1 P6 ?# j, Q! X" Q. P" Y  r
  3812. )
    ' I/ }' k; [* A" s. Y

  3813. ' g! j% x; @5 B* E% t
  3814. ;; Loads the indicated ARX app if it isn't already loaded
    ( L" q3 L6 z  ?: S# N
  3815. ;; returns nil if no load was necessary, else returns the
    + H0 Z3 \, G* L( u& V; l; ?2 O) M
  3816. ;; app name if a load occurred.
    9 M2 _7 {9 y  s
  3817. (defun verify_arxapp_loaded (app) 3 w2 U4 q4 T1 z6 w, T
  3818.   (if (not (loadedp app (arx)))- Q! X/ m6 `% w# Q
  3819.       (arxload app f)4 Y9 X" }  E% ~1 w( _2 w6 l) U
  3820.   )
    0 [/ W3 e" @: ~0 {
  3821. )
    $ @: S; i9 v- H0 {+ s

  3822. / n5 U" @8 C* o2 h, V
  3823. ;; determines if a given application is loaded...% `" T% w& h; r  E& u
  3824. ;; general purpose: can ostensibly be used for appsets (arx) or (ads) or....
    * S: \5 ~. W7 K8 r  i' ^; ~
  3825. ;;& t& q2 S* W; ~$ r) Y
  3826. ;; app is the filename of the application to check (extension is required)
    & {9 s1 S. |/ r7 ~' |, W( B
  3827. ;; appset is a list of applications, (such as (arx) or (ads)' |8 `/ j* ~! j* ^) F8 v7 l. }9 M
  3828. ;;
    1 t* P( q( z: a4 {$ {) Y
  3829. ;; returns T or nil, depending on whether app is present in the appset) Y+ C" x0 H4 y) h+ M' n% Q
  3830. ;; indicated.  Case is ignored in comparison, so "foo.arx" matches "FOO.ARX"
    . B6 Q* u  G4 N, y  `
  3831. ;; Also, if appset contains members that contain paths, app will right-match
    % W  J8 v& r6 j9 e6 B
  3832. ;; against these members, so "bar.arx" matches "c:\\path\\bar.arx"; note that  y& \, L: P% ~. C$ h
  3833. ;; "bar.arx" will *not* match "c:\\path\\foobar.arx."! T( k: [: k- A( \6 y
  3834. (defun loadedp (app appset)
      I0 Z- L( x) V( T7 q
  3835.   (cond (appset  (or
    # u/ s2 W7 ?# U4 _8 p/ h/ n8 n
  3836.                      ;; exactly equal? (ignoring case)% J3 E. b6 Q- a: l  z! ?
  3837.                      (= (strcase (car appset))( _/ _  L4 \4 x1 g' n6 x. o
  3838.                         (strcase app))
    8 S, O. ~! ~# k7 z* N! H  a% U" C% I
  3839.                      ;; right-matching? (ignoring case, but assuming that
    " h6 C0 y- e: v! L
  3840.                      ;; it's a complete filename (with a backslash before it)
    4 W- h! ]5 M, }2 \
  3841.                                          (and / M" f& y& c( c/ U
  3842.                                              (> (strlen (car appset)) (strlen app))5 r) r7 Z  c" i5 e; P# Q
  3843.                              (= (strcase (substr (car appset)
    3 R( a  u* ~' R; `! m
  3844.                                                  (- (strlen (car appset))
    ! t! ~8 l; y, h- T
  3845.                                                     (strlen app) 6 p$ T: w2 X3 ~& r
  3846.                                                  ) - j# g* {/ A3 i7 J
  3847.                                          )8 \# F4 d! Z# W: X2 t" ^
  3848.                                 ) ( X8 p, m. F& {
  3849.                                 (strcase (strcat "\\" app))
    " `/ Y+ e/ O  J
  3850.                              )
    9 C' M! ?) ]0 w  O% K: y1 x
  3851.                                      )' u  x) Y' o7 O- f7 o
  3852.                      ;; no match for this entry in appset, try next one....
    2 D- `( I& Z4 e
  3853.                      (loadedp app (cdr appset)) )))
    2 A, y* \- P4 l6 n$ o9 s
  3854. )
    * C/ z2 ]6 @+ M0 W' e
  3855. ( t5 `, }2 C& d- s* ?- P
  3856. " I* ?! c; ^1 j. r( h; r
  3857. ;;; ===== Single-line MText editor =====
    8 ?* x7 m# [7 H* T
  3858. (defun LispEd (contents / fname dcl state)
    7 T5 r. F* h5 ?8 L2 _6 W
  3859.   (if (not (setq fname (getvar "program")))
    ! e% |) H+ {5 N  u8 \3 g3 p/ X
  3860.      (setq fname "acad")3 N( e; j4 v+ a1 C/ g( t
  3861.   )
    / e) l/ p2 l2 j+ e' j
  3862.   (strcat fname ".dcl")' q' o% s# a* w- c' s
  3863.   (setq dcl (load_dialog fname))
    / y1 I5 L! k' p2 L
  3864.   (if (not (new_dialog "LispEd" dcl)) (exit))4 [1 |6 N$ k' p3 E, z2 z% a  Z% _. I
  3865.   (set_tile "contents" contents)
    & g4 ]9 z7 o+ n
  3866.   (mode_tile "contents" 2)
    . c% u5 E* y  W9 O8 i5 ]! n
  3867.   (action_tile "contents" "(setq contents $value)")! E. o( {) F& }* X8 W! k, |, O
  3868.   (action_tile "accept" "(done_dialog 1)")
    8 f- p/ C, S1 \, |% O) S( \+ }; `
  3869.   (action_tile "mtexted" "(done_dialog 2)" )6 M5 g/ P5 |' D
  3870.   (setq state (start_dialog))2 C! E* p( ^+ z- o5 ^
  3871.   (unload_dialog dcl)
    5 ]6 U0 Y5 E4 s# X3 |, t5 [. V
  3872.   (cond
    ; p' u+ D$ C! O0 `) B
  3873.     ((= state 1) contents)
    ! C$ M% T; g* D. r2 I0 D
  3874.     ((= state 2) -1)
    : h: D9 u; X, K# b& t" R
  3875.     (t 0)/ P6 v6 h+ [, f; M8 D+ B8 `4 O
  3876.   )
    7 q) K( o" w6 ?+ _& e( n
  3877. )& ^* B. d3 Y" b$ l9 f

  3878. 2 e+ m4 J9 W- t" ~6 o; L
  3879. ;;; ===== Discontinued commands =====
    2 c; M  z2 F6 ^5 t, M& N" @% k$ r
  3880. (defun c:ddselect(/ cmdecho-save)! r3 Y' N1 s* _7 K0 x& a$ v/ e
  3881.   (setq cmdecho-save (getvar "CMDECHO"))# Q9 o4 W. b' |, E7 w
  3882.   (setvar "CMDECHO" 0)! T- O2 F% {3 {4 o& k
  3883.   (command "._+options" 7)
    ; a9 l8 P' R; P3 k9 F6 G
  3884.   (setvar "CMDECHO" cmdecho-save)$ d. n" H7 d1 i* Q( k
  3885.   (princ)
    ) X: @$ i0 @+ e& q# J& i
  3886. )
    9 ?" z# d7 F& F! L; o4 G

  3887. 2 R. Y% p( A- D" u
  3888. (defun c:ddgrips(/ cmdecho-save)
    6 A! ^- }  M2 r: f+ k- k
  3889.   (setq cmdecho-save (getvar "CMDECHO"))3 l7 z# |1 x! s0 ^' y
  3890.   (setvar "CMDECHO" 0)! r- I  q) h- i& y0 `* c: {2 i4 H8 @
  3891.   (command "._+options" 7)
    # `; _- c4 Y1 o1 V* Q6 h3 \2 z
  3892.   (setvar "CMDECHO" cmdecho-save)
    ' C* {$ x5 D7 I
  3893.   (princ)4 k; ^  s8 H1 d6 N% k$ z4 o0 u
  3894. )! t/ Q8 B2 `  z0 ]. X
  3895. 6 s: T1 Z' `8 w+ t6 o' {
  3896. (defun c:gifin ()
    8 f; ~* r/ L! h4 g( i" X
  3897.   (alert "\nThe GIFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")
    ! K% d3 T# [  e2 I' {
  3898.   (princ)
    2 v6 ]1 S0 J; Q; c! h
  3899. )
    ( c6 t+ e0 l$ `- G& p

  3900. $ m: p" B: C7 E- D
  3901. (defun c:pcxin ()
    + O% e* t5 q8 J9 x. O" r; ?, \
  3902.   (alert "\nThe PCXIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")
    : p5 G) ^/ [& w6 n" z7 C
  3903.   (princ)! ?! J0 |: T. [% U$ i0 t0 C
  3904. )% ]5 W8 e4 m- N% p4 Q" f1 `9 y7 p: h9 j

  3905. ' z6 G$ K/ [. L* H  J
  3906. (defun c:tiffin ()
    0 ^" m" Y! `# x8 B' V1 k
  3907.   (alert "\nThe TIFFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")
    % Z0 N6 h4 g( M3 N
  3908.   (princ)8 E1 [! I+ r2 N
  3909. )
    ) l( S& T& Y; E( C7 e8 ?, b) O
  3910. 7 m0 E* x( w1 J, U' ?
  3911. (defun c:ddemodes()
    # q0 Z- f! U7 N/ w
  3912.   (alert "The Object Properties toolbar incorporates DDEMODES functionality.  \nDDEMODES has been discontinued.  \n\nFor more information, select \"Object Properties toolbar\" from the AutoCAD Help Index tab.")
    / ~* n5 Q0 P: Z$ Z7 u3 r
  3913.   (princ). C- D, m2 Q( H: k* W% K: C. U
  3914. )
    . t& S7 i+ q3 H
  3915. ! _0 v( O& E( `8 N
  3916. (defun c:ddrmodes(/ cmdecho-save)* l' y  i- Z8 I1 u0 N
  3917.   (setq cmdecho-save (getvar "CMDECHO"))+ L+ J, F4 i( p* _. v
  3918.   (setvar "CMDECHO" 0). g, ^% P* R6 t/ P4 a
  3919.   (command "._+dsettings" 0)
    ( r7 Q( M1 M2 W% P
  3920.   (setvar "CMDECHO" cmdecho-save)
    3 W0 `5 w- g, w7 P+ b3 d$ P2 ^6 s% {
  3921.   (princ)- Q$ [0 B5 M3 \5 s+ R9 ]# q6 b
  3922. )
    6 R) G! E, ^$ ~
  3923. - m% X7 c+ C9 b3 g2 @5 d
  3924. ;; HPCONFIG
    ! T1 h: ]" ^* [
  3925. (defun c:hpconfig (/ hlppath)* K- ]! r8 e' s* `, ^, @
  3926.   (if (not (setq hlppath (findfile "acad.hlp")))
    7 p& N, ?6 m+ d1 f1 p
  3927.     (setq hlppath ""))
    3 ]; |$ ?9 h1 P3 P2 ^: j( h* S
  3928.   (help hlppath "hpconfig")  c3 U: B% z  c2 S+ [) V
  3929.   (princ)
    ! R3 K0 {2 Z. I4 y* X
  3930. )
    9 L) T7 s8 h; l! P& d4 F

  3931. " e* W7 o: D( f8 y) ^+ P) q
  3932. ;; OCECONFIG
    & {% X- E" V4 |- B
  3933. (defun c:oceconfig (/ hlppath)
    $ ?- G6 V* {4 N; A2 d. \0 \( P
  3934.   (if (not (setq hlppath (findfile "acad.hlp")))5 d* w3 Q0 T; i( G  I7 R8 [$ y
  3935.     (setq hlppath ""))
    - c1 S, s  J: S: |
  3936.   (help hlppath "oceconfig"), Y# J: Z+ x: L" _1 K  g
  3937.   (princ)
    # Q9 B. j7 j( G$ D$ e# e- ^" m
  3938. )4 P- ~9 k  i" z' }9 L, _) q; E
  3939. * Q/ o# f) O  ]. O1 `5 ?$ o" w
  3940. ;; CCONFIG
    2 Z4 s7 f& {3 p' l0 s7 J7 \
  3941. (defun c:cconfig (/ hlppath)
    4 l" m* A5 b1 g
  3942.   (if (not (setq hlppath (findfile "acad.hlp")))
    ' I9 y8 E" a1 G- G, S0 F: E3 m
  3943.     (setq hlppath ""))
    ! [" n, ^; e5 e6 H% m) J8 O+ {
  3944.   (help hlppath "cconfig")3 G6 h& f3 `9 Q. t; h
  3945.   (princ)4 d1 U5 l+ |# M& n: e1 B' X% S
  3946. )! g4 [! M) `) a
  3947. 7 R! f- z. e# u: D1 ^5 }$ i
  3948. ;;; ===== AutoLoad =====/ H& @; l0 @: O8 \

  3949. 9 d; _8 Q4 f8 z# ]
  3950. ;;; Check list of loaded <apptype> applications ("ads" or "arx")
    ; B7 u9 c/ v4 T5 m( [  @
  3951. ;;; for the name of a certain appplication <appname>.3 R  \, m0 H% b% V! G! |
  3952. ;;; Returns T if <appname> is loaded.
    " {1 m: L) u9 G7 g

  3953. 0 y0 [. s+ M! P% V+ I
  3954. (defun ai_AppLoaded (appname apptype): ^& H/ m: H  S
  3955.    (apply 'or
    ! h7 p3 Z8 b% Y( I
  3956.       (mapcar - g. R9 E& m6 i7 F0 J4 N4 F  s9 d
  3957.         '(lambda (j)
    # q& ]% J+ d; _2 q3 h
  3958.             (wcmatch
    9 i' M% I* }+ v) D* N8 B
  3959.                (strcase j T)
    3 y) y# s- D! O" n0 C- w3 C
  3960.                (strcase (strcat "*" appname "*") T)* M2 n7 Z2 `5 {; ^$ N' s' E! o, `3 t0 c
  3961.             )   
    5 o8 ^4 v7 ?" R9 f* M' d2 i6 J$ }
  3962.          )
    8 L% J9 V# y0 {
  3963.          (eval (list (read apptype))); w. K+ H  n4 c4 D  G8 n% a7 a0 `
  3964.       )
    ' Y# a3 @1 m) j  {: K
  3965.    )
    + y; e  t  P/ W- ^# s
  3966. )
    / r' G0 x  ?- d( l
  3967. ( ~; c, L% j+ p5 V+ \+ C. ^
  3968. ;;  1 l8 u  i  a, F6 T
  3969. ;;  Native Rx commands cannot be called with the "C:" syntax.  They must
    * P, Q9 W4 e" N) h: t. `# }" b
  3970. ;;  be called via (command).  Therefore they require their own autoload
    * l3 c5 T4 Y) A) ?! A
  3971. ;;  command.
    * b2 {' d* y. e, @
  3972. 7 y: i; W+ K9 x8 h
  3973. (defun autonativeload (app cmdliste / qapp)" @4 s! p; m% \3 @( r. }3 C! z
  3974.   (setq qapp (strcat "\"" app "\""))" g6 |6 @: Y; f
  3975.   (setq initstring "\nInitializing...")
    ' p0 w" m* g% o) b, K6 p9 N
  3976.   (mapcar7 f. j4 P3 o0 Z# A$ ]* m
  3977.    '(lambda (cmd / nom_cmd native_cmd)5 X; `) F( y2 k
  3978.       (progn
    2 a" w( G- t  h9 Z
  3979.         (setq nom_cmd (strcat "C:" cmd))
    3 E* c1 n" P" ?# q
  3980.         (setq native_cmd (strcat "\"_" cmd "\""))
    . L. t/ A9 X+ K! Z
  3981.         (if (not (eval (read nom_cmd)))% N3 X' v1 s0 B* f: [' k; \) F
  3982.             (eval  ?4 ]+ U5 f) v4 _
  3983.              (read (strcat0 a$ @* G3 ~8 b$ S# [; |$ s
  3984.                     "(defun " nom_cmd "()"# r' H1 A3 I9 b- ], w
  3985.                     "(setq m:err *error* *error* *merrmsg*)"9 _+ \1 N' F  N' s- _
  3986.                     "(if (ai_ffile " qapp ")"
    0 h  W9 p' ^. R+ l' j$ v, j! z
  3987.                     "(progn (princ initstring)"  j9 c0 k& l6 q; L) H) D
  3988.                     "(_autoarxload " qapp ") (command " native_cmd "))"
    1 g; t+ G  q9 ?( m# \
  3989.                     "(ai_nofile " qapp "))"% _0 [( g" u. ^) g9 h8 b9 U
  3990.                     "(setq *error* m:err m:err nil))"! B# ?+ p; X; Z3 j- W( ]& o
  3991.                     ))))))
    - e# z+ X; l( a' v& o2 W8 ^0 N
  3992.    cmdliste)
    9 I8 G: C2 }) [) A% R
  3993.   nil
    8 i; }$ L1 a' U( Y2 B! S/ s
  3994. )- I+ O( J4 @& `: a+ y
  3995. . V: Q. g* \* ~1 c% ^* @0 `
  3996. (defun _autoqload (quoi app cmdliste / qapp symnam)  y) X8 C; h" Y
  3997.   (setq qapp (strcat "\"" app "\""))2 R1 U5 p8 ^9 A3 d
  3998.   (setq initstring "\nInitializing...")
    1 ?# g. s7 [! b" S& y4 @" p
  3999.   (mapcar/ t1 c# M! x( T" p; A% v
  4000.    '(lambda (cmd / nom_cmd)8 _0 ?% U  L5 a: E
  4001.       (progn
    ( b7 C# N. i8 c2 J" e
  4002.         (setq nom_cmd (strcat "C:" cmd))) x5 ~# x& g. n" @
  4003.         (if (not (eval (read nom_cmd)))
    $ P5 i1 X5 P: L8 S9 K8 d
  4004.             (eval
    ! W$ Q! f% S- t
  4005.              (read (strcat! F# v1 r2 m0 Z! C% y1 I: V
  4006.                     "(defun " nom_cmd "( / rtn)"
    ) Y+ |/ y! t4 q. p6 X
  4007.                     "(setq m:err *error* *error* *merrmsg*)"
    ; F0 ~! W; k* `! u- E
  4008.                     "(if (ai_ffile " qapp ")"
    ' _* U# s5 E+ Y6 d! \( Y
  4009.                     "(progn (princ initstring)"8 |; u  T  e6 F5 P. U
  4010.                     "(_auto" quoi "load " qapp ") (setq rtn (" nom_cmd ")))") c0 d! M- p' k( \7 v
  4011.                     "(ai_nofile " qapp "))": |1 k( Z# z! w4 l; K
  4012.                     "(setq *error* m:err m:err nil)"8 b& {- z: f5 o! C- B- p
  4013.                     "rtn)"( L  ]4 v0 H- e; }: D4 X# ^& K' O) `
  4014.                     )))))). G4 t* E+ {, w) G. y+ C- _
  4015.    cmdliste)& E2 z+ }7 F8 y5 E) f* Q" _/ B
  4016.   nil3 l6 ~" a2 W; h! }' R, J
  4017. )
    4 F; S! i( c+ [* r/ B0 Y) Y. w

  4018. # o3 p) b; i! Z2 m1 n& _7 c4 u" i3 {
  4019. (defun autoload (app cmdliste)
    . ~! Q8 f& j+ ~6 v. J! o
  4020.   (_autoqload "" app cmdliste)
    / _+ b7 _% m$ e: U" a# D; F' l% x( X
  4021. )7 a0 }7 ?* N0 q

  4022. % w0 W) L! |; z
  4023. (defun autoarxload (app cmdliste)
    / g* L6 F- E( o7 w5 G9 e
  4024.   (_autoqload "arx" app cmdliste)- \! g3 l1 a' `6 F% Y! [
  4025. )& n) |! Q5 k7 O* X; N
  4026. * Y5 P% y5 g# U; p% O' u3 ^' c
  4027. (defun autoarxacedload (app cmdliste / qapp symnam)
    9 X- B6 n/ R8 ?7 _; Z9 h
  4028.   (setq qapp (strcat "\"" app "\""))
    9 v# O7 v: J* S, o
  4029.   (setq initstring "\nInitializing...")+ X. V1 d! }5 t1 R( p" L1 g
  4030.   (mapcar
    " e' O* T+ U! N$ ]" z$ k; f3 l
  4031.    '(lambda (cmd / nom_cmd)
    0 v' J8 H4 r5 R& r" r. Z
  4032.       (progn9 w& T  l1 s6 q) b
  4033.         (setq nom_cmd (strcat "C:" cmd))
    & b8 w1 ~) o1 h' o
  4034.         (if (not (eval (read nom_cmd)))5 a. N! \( W5 l. t: b
  4035.             (eval) c) I8 z! ?1 k! d
  4036.              (read (strcat
    $ Y4 p+ l/ Y6 h( B" `
  4037.                     "(defun " nom_cmd "( / oldcmdecho)"
    ) D- J* o, p+ q2 y) Y7 k
  4038.                     "(setq m:err *error* *error* *merrmsg*)"
    8 i7 t- ]" S' E2 u6 c1 M4 A
  4039.                     "(if (ai_ffile " qapp ")"4 w. T8 M, |! k
  4040.                     "(progn (princ initstring)"
    ( G6 v9 C. p1 S4 q! p& X
  4041.                     "(_autoarxload " qapp ")"
    0 g$ ~) Z3 U. w$ }& Q7 M
  4042.                     "(setq oldcmdecho (getvar \"CMDECHO\"))"* B7 C& z5 {. o' ^( k4 F$ X
  4043.                     "(setvar \"CMDECHO\" 0)"
    5 R/ M% |3 u6 u3 N, N
  4044.                     "(command " "\"_" cmd "\"" ")"
    : N0 ~2 m4 E0 f# u  ~
  4045.                     "(setvar \"CMDECHO\" oldcmdecho))"
    / {( U7 F) z# K1 m
  4046.                     "(ai_nofile " qapp "))"+ e! M  l$ T( r# z; o1 C
  4047.                     "(setq *error* m:err m:err nil)"
    ' E4 G) b# h( P! f9 N
  4048.                     "(princ))"
    & L9 \) o' C, A
  4049.                     ))))))1 y, P7 {- P- ~) W$ g3 T1 O
  4050.    cmdliste)9 r2 n& v9 O& P! O8 K% Q
  4051.   nil
    9 {2 y- ]* V4 F
  4052. )
    $ |  G  K9 ~- y- z6 _8 D; Z; D
  4053. # W/ M) f2 t7 J  N2 p+ J  j! }/ X
  4054. (defun _autoload (app), ~+ ^5 l3 O4 g! t3 y3 @! e
  4055. ; (princ "Auto:(load ") (princ app) (princ ")") (terpri)7 o1 O$ C: T  K: Y
  4056.   (load app)
    9 G' R( \% `' }1 C0 j# G% y
  4057. )1 s3 B- O! f- V* p6 b! C+ H
  4058. / k* [1 V" B. G+ i
  4059. (defun _autoarxload (app)
    5 I' \+ {/ _, p
  4060. ; (princ "Auto:(arxload ") (princ app) (princ ")") (terpri)2 }' R. Z$ [) R* F
  4061.   (arxload app)
    5 d* s! e8 i7 D9 H# o. h" Y3 T& P
  4062. )5 }5 z" ?2 {/ v: N
  4063. 0 j) r1 v  \+ r1 a( c
  4064. (defun ai_ffile (app)
    0 y& E8 P/ d, V6 b! }/ q
  4065.   (or (findfile (strcat app ".lsp")); b0 T) _) e  W$ C: @5 {* N7 F" h
  4066.       (findfile (strcat app ".exp"))
      t% e. d6 @/ a7 V
  4067.       (findfile (strcat app ".exe")), ^' u% d' X+ m, [, t4 O
  4068.       (findfile (strcat app ".arx"))+ e% s8 g7 f. E1 y
  4069.       (findfile app)( K7 L) Z# I% S" A9 m  ^/ [  G
  4070.   )
    " g4 y& ]/ [- Q5 }8 s
  4071. )
    , }9 W. w$ K+ \' u
  4072. 3 K* o+ {. D! r& K1 L; U: `  D
  4073. (defun ai_nofile (filename)8 Q# J8 e7 j7 r' {# K8 E0 O( P+ g
  4074.   (princ
    . B+ |( z8 H$ S' g% ]+ E0 Z. w
  4075.     (strcat "\nThe file "" c$ D8 I1 q4 j- G* }# P! X
  4076.             filename
    & [: O% q7 Z! m) `
  4077.             "(.lsp/.exe/.arx) was not found in your search path folders."+ j+ i+ U% V- I" @# S6 U
  4078.     )
    / q: S, S! [) ?  y6 F
  4079.   )
    . T* f. K8 ~7 S' O4 z
  4080.   (princ "\nCheck the installation of the support files and try again.")
    % {' V0 B7 k& l+ Y: a$ R
  4081.   (princ)4 J  c" [6 N- U9 _
  4082. )
    / O, U; Q! i. y) {7 h* c
  4083. 1 w. M+ l; w+ ~2 X3 h% f

  4084. $ O. h& n/ P' ^& l0 D: e6 t" H6 |
  4085. ;;;===== AutoLoad LISP Applications =====
    6 }9 q  L9 N) [- @* l/ E2 g8 E- T
  4086. ;  Set help for those apps with a command line interface
    2 d! Z4 H: [$ x

  4087. ) |* u" t' G9 `. D9 T' {
  4088. (autoload "edge"  '("edge"))8 x& n1 p2 _' {9 v, q
  4089. (setfunhelp "C:edge" "" "edge")
    5 d- M3 N  x( o' f3 z1 t
  4090. 3 q, ~% D- @' L4 y8 H% q0 ]' {
  4091. (autoload "filter" '("filter " "filter")); N8 u& ^7 Q/ B2 e' g( q- M7 s" c

  4092. % ?0 x) ?% M2 H) f
  4093. (autoload "3d" '("3d" "3d" "ai_box" "ai_pyramid" "ai_wedge" "ai_dome"
    $ A/ A% n! Q0 D$ B8 O: W
  4094.                  "ai_mesh" "ai_sphere" "ai_cone" "ai_torus" "ai_dish")( X1 B! w" o: {" v: |9 @
  4095. )
    ' h, M. f& }# [( X7 h4 @7 K
  4096. (setfunhelp "C:3d" "" "3d")
    ) [  Z! Z6 n$ U5 D: {
  4097. (setfunhelp "C:ai_box" "" "3d_box")
    4 M3 O  {  I9 w$ i
  4098. (setfunhelp "C:ai_pyramid" "" "3d_pyramid")6 f; z& Q: y3 d5 q2 c9 f
  4099. (setfunhelp "C:ai__wedge" "" "3d_wedge")
    6 g  [. q1 @- Z$ N
  4100. (setfunhelp "C:ai_dome" "" "3d_dome")
    ) R0 s1 K4 N4 V# g* L
  4101. (setfunhelp "C:ai_mesh" "" "3d_mesh")1 M, g: X$ s9 ]% h' R3 n& `2 V4 R
  4102. (setfunhelp "C:ai_sphere" "" "3d_sphere")
    ' A# j! O. B, ^  }
  4103. (setfunhelp "C:ai_cone" "" "3d_cone")3 t/ k6 Q9 N& r
  4104. (setfunhelp "C:ai_torus" "" "3d_torus")/ F6 P* y1 v" G8 j4 A5 T* U9 z% u2 a
  4105. (setfunhelp "C:ai_dish" "" "3d_dish")
    7 z6 C- Y; {/ b# ^/ Z

  4106. 6 z/ P  U, B8 T, |
  4107. (autoload "3darray" '("3darray"))( @! ?+ L- d5 ^* z+ @
  4108. (setfunhelp "C:3darray" "" "3darray")
    . t4 ]/ O; K/ v! w/ G5 ~7 _
  4109. # d+ L4 t; m( }
  4110. (autoload "ddvpoint" '("ddvpoint"))6 ]; J# L) S+ f& `
  4111. / \( q1 e% s- i; h
  4112. (autoload "mvsetup" '("mvsetup"))
    + S  c1 V8 i! X. f  C
  4113. (setfunhelp "C:mvsetup" "" "mvsetup")% y! ?# g1 a& j1 ]6 v% L) |

  4114. * D" T: `' N% l2 u( }4 |
  4115. (autoload "ddptype" '("ddptype"))
    ! N3 H& o! [/ }* v0 Y6 I
  4116. - E' S$ }7 N5 ?
  4117. (autoload "attredef" '("attredef"))$ N( S4 H" P  E8 D
  4118. (setfunhelp "C:attredef" "" "attredef")
    . Y% m- x" {( ~4 r; U4 h2 w
  4119. 1 R' N$ U9 y1 g1 ~
  4120. (autoload "xplode" '("xp" "xplode"))
    , D2 o. }1 t( M: L4 }
  4121. (setfunhelp "C:xplode" "" "xplode")3 ?( u  m% G# W& J1 A5 K; W

  4122. 4 K6 [! [6 t. |6 a. R# b$ D# c
  4123. (autoload "tutorial" '("tutdemo" "tutclear"
      @/ Z' C; c1 [9 [3 _( U
  4124.                                        "tutdemo"
    7 Z# N+ b% Z- q6 I. ?4 n
  4125.                                        "tutclear"))
    1 R( d  F; _* L' h' n

  4126. ; F7 l) x/ W$ @5 |- X9 S
  4127. ;;;===== AutoArxLoad Arx Applications =====1 H3 i- ?3 l& F& E- Z9 F5 a
  4128.   a0 T3 I9 m- q
  4129. (autoarxload "geomcal" '("cal" "cal"))2 H# G0 p+ W6 x; G* c. Z

  4130. ) n, g) L2 |* A, I
  4131. (autoarxload "geom3d" '("mirror3d" "rotate3d" "align"
    9 ]2 d& I  ?& r, ]
  4132.                       "mirror3d" "rotate3d"
    7 F& h* P! \6 d4 y$ m
  4133.                                  "align")). B' O8 {# P& U8 Y4 H, R  b/ R

  4134. 3 d. b+ b+ Z$ l: p7 k; N

  4135. * u8 D* v% N# A
  4136. ;;; ===== Double byte character handling functions =====" |$ Q( I1 o3 [/ U) `1 X

  4137. 6 _6 b7 F8 r) `, F1 Y
  4138. (defun is_lead_byte(code)
    5 z; `# k1 K9 i/ x: Y. ]
  4139.     (setq asia_cd (getvar "dwgcodepage"))
    6 P5 q% z& n+ h& z1 X
  4140.     (cond, [2 F, @! F1 h9 [" b: G1 H" {
  4141.         ( (or (= asia_cd "dos932")7 @/ F0 @/ {. O0 A/ A0 ~8 Q, s5 ~/ a
  4142.               (= asia_cd "ANSI_932")( j! j: x$ a# H  h' W7 c- d# p
  4143.           )2 X0 W) R3 z2 U1 w" \' N! N5 X
  4144.           (or (and (<= 129 code) (<= code 159))
    ! ^8 Q) S3 o  v5 H; m5 r3 E( q
  4145.               (and (<= 224 code) (<= code 252))
    9 J4 a9 p* m* X' J
  4146.           ); x; ?4 V2 ~8 }& ~- |
  4147.         )+ f  m6 i" L) R4 S' a
  4148.         ( (or (= asia_cd "big5")9 Q( E8 ?9 @& T, Y
  4149.               (= asia_cd "ANSI_950")1 K" l% u3 R/ I4 M5 V( v  J# Z! W+ u
  4150.           )
    9 J0 {  M4 `  j* J1 G: A
  4151.           (and (<= 129 code) (<= code 254))
    * ?" C/ M$ n$ l" V- i5 G5 s8 w
  4152.         )
    : B3 ^( g+ h2 X# E, W! ?3 ]; b
  4153.         ( (or (= asia_cd "gb2312")* `5 i" \9 J& N6 |, S
  4154.               (= asia_cd "ANSI_936")
    / {1 r' z; A8 V# `% T1 M4 q; N0 f
  4155.           )3 }5 j4 G: |& P- ]" g; j
  4156.           (and (<= 161 code) (<= code 254))% ^  e- z' j; ~, V+ h. b
  4157.         )
    * ]/ T1 k, g- B
  4158.         ( (or (= asia_cd "johab")
    # O* ~' {: K6 x
  4159.               (= asia_cd "ANSI_1361")
    $ x+ w& p: y7 p! g4 N5 n3 w
  4160.           )
    ) z% l6 s8 n/ x" `/ l5 h
  4161.           (and (<= 132 code) (<= code 211))3 b5 t, `8 t( n" ^$ o5 w( y
  4162.         )
    % D9 p, ^4 ?9 {
  4163.         ( (or (= asia_cd "ksc5601")
    5 b  z/ K# I" x9 b1 a! |$ w
  4164.               (= asia_cd "ANSI_949")& E% H# b/ b% K6 E- s4 S; Q
  4165.           ); W. V, y$ y0 |1 E+ Q
  4166.           (and (<= 129 code) (<= code 254))
    9 K  d0 F( R3 i: D, e
  4167.         )
    , H! P# r$ e( }; h' h! L5 C
  4168.     )- K7 K  ~, m2 V, D( H
  4169. )* D/ B1 }6 i$ r) \# F: ?
  4170. 5 S3 o8 _* l4 n( c
  4171. ;;; ====================================================
    - c( \3 g, t0 |; h* F/ Z

  4172. ! ]# X# m1 S1 A  F- S
  4173. : ?3 H' |5 z5 G9 b6 `. w
  4174. ;;;- N; e) m0 c5 L& P/ X/ E
  4175. ;;;  FITSTR2LEN3 I  g8 w7 M* `; R+ |5 G
  4176. ;;;
    8 K0 D& }: m6 u& W: U! {
  4177. ;;;  Truncates the given string to the given length. " h( b0 V5 Y! Y7 u
  4178. ;;;  This function should be used to fit symbol table names, that; a6 ^8 D; j& s3 V
  4179. ;;;  may turn into \U+ sequences into a given size to be displayed
    ' a! L: j1 H* r* \
  4180. ;;;  inside a dialog box.
    2 j0 ]3 n+ ]; u9 g2 V2 E) ?% q# ~
  4181. ;;;
    ; Z5 j4 m3 F$ {
  4182. ;;;  Ex: the following string:
    - u6 [* |2 [6 q6 B5 y' G
  4183. ;;;
    . e( |+ s( _* `' G6 B9 D
  4184. ;;;      "This is a long string that will not fit into a 32 character static text box."
    ( o$ W4 i1 F3 }; i* i+ e
  4185. ;;;! y; w0 r+ A- \3 v9 q
  4186. ;;;      would display as a 32 character long string as follows:
    " S/ H3 C2 D2 f2 q
  4187. ;;;; i$ K3 k8 L, a2 b
  4188. ;;;      "This is a long...tatic text box.") S# Q! c' O2 \0 Z
  4189. ;;;7 i! d5 q& q% I# E, F# B. V/ ?3 a: D

  4190. , v( j$ s- j* N/ H" u6 e. q3 x9 O5 a
  4191. (defun fitstr2len (str1 maxlen)  u1 T# \: e4 Y. u" H' l
  4192. 7 ?: e7 ]" x  k: `+ Q: l: \
  4193.     ;;; initialize internals
    * t- ?. ~. r7 o- m4 Q# \+ K# W
  4194.     (setq tmpstr str1)
    ! e7 R6 [& H* [  ^1 ^. h( ^
  4195.     (setq len (strlen tmpstr))
    * R4 m0 R  J. t1 w
  4196. ) s8 ^. r) C0 ^( }! l6 q" Z
  4197.     (if (> len maxlen)
    , O! d0 x5 D1 z( _4 W- h
  4198.          (progn# S* B5 d- U+ |. w# }0 I5 P
  4199.             (setq maxlen2 (/ maxlen 2))
    + [$ Q$ {: m# y+ c9 l. }- ]$ F
  4200.             (if (> maxlen (* maxlen2 2))
    * U. w8 g5 z  ^, E9 D
  4201.                  (setq maxlen2 (- maxlen2 1))2 |) b- S2 Y) A8 B; I
  4202.             )
    ) y9 m8 A, m# o$ F# g1 l
  4203.             (if (is_lead_byte (substr tmpstr (- maxlen2 2) 1))9 Y& @8 C  s: r% h
  4204.                  (setq tmpstr1 (substr tmpstr 1 (- maxlen2 3)))+ D( A: u, ^) `) n- P' O. O
  4205.                  (setq tmpstr1 (substr tmpstr 1 (- maxlen2 2)))/ ~( F6 N- s3 f* k  h: I! b- g
  4206.             )
    ' w8 c! _! O! H# i5 C5 g: w
  4207.             (if (is_lead_byte (substr tmpstr (- len (- maxlen2 1)) 1))
    8 t7 d! m$ f% Q: z$ {
  4208.                  (setq tmpstr2 (substr tmpstr (- len (- maxlen2 3)))): L& L$ v+ g' q* G6 ?' e
  4209.                  (setq tmpstr2 (substr tmpstr (- len (- maxlen2 2))))
    ; ~4 r: F' w# T8 ]+ F" Z/ g
  4210.             )$ t; w7 S* f9 m8 O$ o! l
  4211.             (setq str2 (strcat tmpstr1 "..." tmpstr2))8 t0 {7 \( h2 K) c2 U$ `7 _
  4212.          ) ;;; progn; N( f/ b. x6 k! S+ G; Y
  4213.          (setq str2 (strcat tmpstr))& k1 H. k! G3 ~! ]! i$ h: ?
  4214.     ) ;;; if8 c7 Z) T% J$ [  k! D
  4215. ) ;;; defun
    % e. g3 R3 G  |3 G$ H: }! ?' `: H
  4216. : P( J2 N: K$ `" F
  4217. - q6 E; n& G* c0 G
  4218. ;;;
    . W* a" E2 @6 u
  4219. ;;;  If the first object in a selection set has an attached URL
    6 D1 F( U' `% v7 V; [8 [
  4220. ;;;  Then launch browser and point to the URL.
    * f, N& |% x- X0 r/ a. s/ X; q1 f! G
  4221. ;;;  Called by the Grips Cursor Menu
    ( L8 X+ k/ Q9 ^8 _" p& Y* ?
  4222. ;;;4 `; N9 N$ D& a- G$ V0 t( N
  4223. % `! O1 q" H6 T
  4224. (defun C:gotourl ( / ssurl url i)
    5 E& m6 M5 t' V4 y
  4225.    (setq m:err *error* *error* *merrmsg* i 0)
    4 f6 {! }" k; j8 h9 N2 K

  4226. . i1 ]) l4 _% N/ Z  S/ o3 d  |' v
  4227. ; if some objects are not already pickfirst selected,
    ( Z" E! J( {0 h; A, n4 Y& `
  4228. ; then allow objects to be selected
    0 m# F. y8 a, x9 o5 P; x

  4229. / v8 U0 H" R, q3 N! C% e' ~
  4230.   (if (not (setq ssurl (ssget "_I")))
    . F8 G5 z/ D4 Y* {8 A0 H
  4231.       (setq ssurl (ssget))/ G. ?* Q; o7 D
  4232.   )6 k8 K% [% H$ s& Z

  4233. 3 ]) V: v9 Y, ^5 }3 Z8 H
  4234. ; if geturl LISP command not found then load arx application
    & i1 Q- c+ H: X0 y5 ^$ ?

  4235. - [) F* P. K8 f0 q# B' D
  4236.   (if (/= (type geturl) 'EXRXSUBR)
    7 o; e- c( m& X( `
  4237.     (arxload "dwfout")
    1 |. J- M# _& H/ y# o
  4238.   )) R7 q# V- n" E! t9 E
  4239.   
    ! \, z' t4 {8 s) k+ k( Z6 O0 t
  4240. ;  Search list for first object with an URL
    & |" n* ~9 {7 M
  4241.   (while (and (= url nil) (< i (sslength ssurl))), R3 ~# o! P3 d( k/ K
  4242.     (setq url (geturl (ssname ssurl i))
    1 O# g4 Y) l4 {, {; A: ~7 I8 k
  4243.           i (1+ i))
    ( ~( v: H5 ?1 q5 K5 m
  4244.   )8 @' B" p5 [1 b* B; E: W

  4245. 8 m6 m) N3 s# C  v
  4246. ; If an URL has be found, open browser and point to URL
    , D- a* Y+ l6 ?. Y/ u; K$ [2 s- z
  4247.   (if (= url nil)! V: \  e& s# _& E
  4248.     (alert "No Universal Resource Locator associated with the object.")
    : ?  l' o5 f% e( X/ N# |' Y
  4249.     (command "_.browser" url)  O3 L4 D9 \+ t! E: x- ^: I
  4250.   )( g3 z% R3 K  ?5 |7 ~8 d% O

  4251. 0 m: q" o9 p" p' m6 i+ B
  4252.   (setq *error* m:err m:err nil)" r: R) o9 J0 q  D
  4253.   (princ)
      L3 b$ A' Q) u; V( U( e
  4254. * d4 [8 y) X" L; j# j
  4255. )5 J$ X& h6 u( |6 J7 b) t0 G- `( c

  4256. ' z4 Q6 P2 n% ~: }) |
  4257. ;; Used by the import dialog to silently load a 3ds file
    8 e7 [! _8 Q' B5 x2 T! j
  4258. (defun import3ds (filename / filedia_old render)
    - \: L% f0 M( K8 A" W7 p  X
  4259.   ;; Load Render if not loaded6 t$ a0 z" D) e: Z
  4260.   (setq render (findfile "acRender.arx"))- a  u0 C8 M# i: V& R6 ?
  4261.   (if render, J8 F$ q, N: M+ I( i& r. W
  4262.     (verify_arxapp_loaded render) 1 o0 Z+ H; J' N( B+ }2 q6 N
  4263.     (quit)- U8 X8 y0 i4 ]$ A6 C
  4264.   )
    ' F0 p- j. w5 l7 A1 h

  4265. 4 l/ S! o, O* K- ?0 I; _( ?
  4266.   ;; Save current filedia & cmdecho setting.
    / R9 [8 \' K: v& M1 u, s! Z5 I
  4267.   (setq filedia-save (getvar "FILEDIA")); D( c9 c8 v* v' L/ _
  4268.   (setq cmdecho-save (getvar "CMDECHO"))& ?, G! V: i4 i
  4269.   (setvar "FILEDIA" 0)
    ! `3 q- _4 e( p0 d) c" F  ^
  4270.   (setvar "CMDECHO" 0)
    2 v# {& H* e1 O* G9 I: f" j

  4271. # Y2 @# t0 c/ `0 U' R1 {
  4272.   ;; Call 3DSIN and pass in filename.
    5 A5 _6 S. O/ p5 t
  4273.   (c:3dsin 1 filename)
    0 ^* L! c0 h6 G

  4274. " t: o* P; x1 G) D/ D
  4275.   ;; Reset filedia & cmdecho; \2 T; q- m! l
  4276.   (setvar "FILEDIA" filedia-save)4 l& W2 X' \! S
  4277.   (setvar "CMDECHO" cmdecho-save)
    ) w1 \9 {; F' F) A. Q& c+ o
  4278.   (princ)
    0 y, `% K* I3 c' ], N3 X, Z  k. s
  4279. )) Y1 N; f+ G8 R, Y( E- A; q; ]

  4280. 5 w, q! m: }5 A  ]' I" v0 }

  4281. + z+ g- T; P& `# X& u
  4282. ;;;=== Menu Functions ======================================
    , M0 i% s! J5 V+ C" a

  4283. ) Y3 c4 r) ~  n
  4284. (defun ai_rootmenus ()
    9 b7 E! v4 i, ~& A) Y! H
  4285.   (setq T_MENU 0)
    : k+ h* ~4 O/ P; h
  4286.   (menucmd "S=S"): S3 ^! L& G, [
  4287.   (menucmd "S=ACAD.S")
    7 H$ o$ `' n! T; o& Y1 b
  4288.   (princ)8 W8 }) j$ N2 [4 J$ H$ `- X
  4289. )' Z/ f# n$ u: W4 n4 V

  4290. 9 M' N7 d$ G) S6 k  f; z& ~
  4291. (defun c:ai_fms ( / fmsa fmsb), T8 J' Q5 m( j/ a4 n- D1 Y
  4292.   (setq m:err *error* *error* *merr*)
    1 v7 f9 {, j( |: s6 L7 ^" j& J: E( L
  4293.   (ai_undo_push)
    % N2 j1 b$ p8 j
  4294.   (if (getvar "TILEMODE") (setvar "TILEMODE" 0))
    ' ~; O- x! M0 o
  4295.   (setq fmsa (vports) fmsb (nth 0 fmsa))
    ' K3 J$ H9 E& S' ]
  4296.   (if (member 1 fmsb): i1 V3 E2 s* m- _. |) {; |
  4297.     (if (> (length fmsa) 1)( E- n3 U) ?) n0 Q2 S- z
  4298.       (command "_.mspace")5 X% l7 i) Y4 U- K8 c8 P" U, k/ a/ U3 W
  4299.       (progn) O, Y; d$ m: P) D% t
  4300.         (ai_sysvar '("cmdecho" . 1))
    - G( C5 a7 w# y3 d5 @! X
  4301.         (command "_.mview")
    7 o: a2 R+ l* c  ^  s# Y) w, ?
  4302.         (while (eq 1 (logand 1 (getvar "CMDACTIVE")))! e! B+ H( B1 z; `
  4303.           (command pause)
    5 z, L, q  I, Q( n% S
  4304.         )4 F1 N1 s4 K% m6 ^& M5 }( i
  4305.         (ai_sysvar NIL)
    1 T) N. c4 L4 M# _9 w1 F' w; q1 h
  4306.         (command "_.mspace")& J; ~9 n  p" r& a6 d
  4307.       )2 B' D% M9 P: {0 ~2 E6 [3 P, Z
  4308.     )# e0 @+ s+ N  ?8 R% x& m" J
  4309.   )
    - K) t; _$ O4 `# j! n% b* N4 g
  4310.   (ai_undo_pop)
    4 m& @0 P* i' Z# J4 P, \) ^
  4311.   (setq *error* m:err m:err nil)% X. u) h- I% K
  4312.   (princ). y# J/ n- h, G: t8 R
  4313. )
    ( p; v* }: R9 Q& a1 [. \0 q0 H

  4314. , J. L" j5 k& @# I, B9 U: k
  4315. (defun ai_onoff (var)& o& }2 T4 d7 h6 ~# l8 \+ v
  4316.   (setvar var (abs (1- (getvar var))))9 u4 |2 U7 A. p; w( k. g
  4317.   (princ)
    + g/ M/ W1 P4 v' @
  4318. )
    - ?9 U7 f7 y& k" X) W3 J) g; a9 H

  4319. % E7 ^; I! I. O* Q0 L3 x
  4320. ;;; go to paper space  ^: ~" F2 V+ s/ \
  4321. (defun c:ai_pspace ()
    7 s8 `2 g3 ~: F  p; Q2 {
  4322.   (ai_undo_push)3 Q7 y7 i" |* Q* M9 |+ N1 d9 y
  4323.   (if (/= 0 (getvar "tilemode"))
    + k* e: H' r5 w3 p4 i3 j
  4324.     (command "_.tilemode" 0)& d" }9 ?) I$ R  C; W0 X8 G
  4325.   )
    9 J0 N% ~# D+ \! ^6 p2 M
  4326.   (if (/= 1 (getvar "cvport"))( j) e' e2 r& m4 {
  4327.     (command "_.pspace")
    ! n# {9 k6 ]$ N& i+ B
  4328.   ), h% p1 y: D- X8 \
  4329.   (ai_undo_pop)
    & l+ R+ a6 V$ b; e- i1 z0 w
  4330.   (princ)1 E% R( a8 S; Y- r
  4331. )! i% A- V/ x0 d  n: }# M
  4332. 6 T$ W2 a' [% [
  4333. ;;; go to tilemode 1
    4 p4 a$ R/ ]! ^+ @' A' R5 U  z
  4334. (defun c:ai_tilemode1 ()
    2 Y' B) h+ `' ~0 L- p& {
  4335.   (ai_undo_push)
    . t: S# s! _8 [
  4336.   (if (/= 1 (getvar "tilemode")): J, }: w) \- A! F
  4337.     (command "_.tilemode" 1)- h4 p+ W4 q* L# s3 C4 a
  4338.   )
    ( f( Q7 z9 A+ c$ _- @
  4339.   (ai_undo_pop)8 Y7 O) i* x7 `3 s9 U% v  e" O
  4340.   (princ)
    + T; ?+ g, e+ m; n+ S6 o
  4341. )' b3 G1 }8 K* `0 R
  4342. / i$ W3 J8 M. ~
  4343. ;;; Pop menu Draw/ Dim/ Align Text/ Centered$ k! T4 u3 c) F! U  I$ n
  4344. ;;; Toolbar Dimensions/ Align Text/ Centered
    ' L5 ~- b% X0 [' V# G  ~, a
  4345. 1 ~, p2 ?$ t7 e% E* Y6 o* q) m
  4346. (defun ai_dim_cen (/ ai_sysvar ai_dim_ss)8 o: S" c4 b9 x  |3 }7 N2 x
  4347.   (setq ai_sysvar (getvar "cmdecho"))
    ) O: }$ p. a) t( X* U2 h( v
  4348.   (setvar "cmdecho" 0)' H- @8 t* A% c/ {% A! O
  4349.   (cond) ~4 {  v% n- z8 c; J6 x
  4350.     ((setq ai_dim_ss (ssget  "_P" '((0 . "DIMENSION"))))- R$ \8 {' z3 \, p% X% u
  4351.       (command "_.dimoverride" "_dimjust" 0 "" ai_dim_ss "" - B1 {5 q- @4 W; L
  4352.                "_.dimtedit" ai_dim_ss "_h")
    ; b' K7 f$ R- M5 u9 v/ C/ r; S
  4353.     )
    ( P( r) Z# u3 [$ F: a2 s! ?
  4354.     (T nil)
    / C/ p: T& n1 v( o$ o4 C
  4355.   )) l- J- g. F( s4 K; D' i
  4356.   (setvar "cmdecho" ai_sysvar)- T; V7 X( t& r+ k' J
  4357.   (princ)$ m  f8 A5 ?# u* W9 n5 m1 N
  4358. )
    . W( M2 d. x& e' ~1 i8 R- W" q

  4359. 7 G' L2 r: ^0 n# m3 U* k
  4360. ;;; Shortcut menu for Dimension Text Above
    5 P1 k4 G7 K, I* H6 n+ u

  4361. 7 w% J* m+ P: e; P$ |
  4362. (defun c:ai_dim_textabove (/ ss)! @6 V! L/ R7 b" |2 O/ ^
  4363.   (ai_sysvar '("cmdecho" . 0))
    8 M$ p: z# f/ ^; C/ \5 C% j1 Y
  4364.   (if (setq ss (ssget "_I")), w% s; R& b2 B" ~, `( L
  4365.     (command "_.dimoverride" "_dimtad" 3 "" ss "")
    - g+ q  n2 O4 q# ^5 Q0 R
  4366.     (if (setq ss (ssget))3 w) h/ P' u- g1 g" B/ v3 z
  4367.       (command "_.dimoverride" "_dimtad" 3 "" ss "") " j! H! Y* M1 z, S: Y
  4368.     )
    - b: s9 \0 c$ j+ m2 a  B6 \3 Q2 X
  4369.   )
    ( M; v' S9 G' I( V2 P
  4370.   (ai_sysvar NIL)' n4 x$ N6 G/ [/ G9 }
  4371.   (princ)
    , w( @* L# {- ]" k& _9 l1 \
  4372. )2 ^; G. ?0 ?9 V6 W

  4373.   ]$ a' y3 L, k  e# @
  4374. ;;; Shortcut menu for Dimension Text Center 2 z+ n8 H: Y% x% o$ q: P1 `

  4375. 8 [5 c; G3 x' f% u
  4376. (defun c:ai_dim_textcenter (/ ss)
    & n1 w2 W0 Y, ~5 ^
  4377.   (ai_sysvar '("cmdecho" . 0))0 _5 x, F, E! K
  4378.   (if (setq ss (ssget "_I"))
    / A+ g* M2 U( n3 H# J/ t- c! V
  4379.     (command "_.dimoverride" "_dimtad" 0 "" ss "")* l1 F3 T. F9 p
  4380.     (if (setq ss (ssget))  Z" a4 l# f+ u0 y
  4381.       (command "_.dimoverride" "_dimtad" 0 "" ss "")
    : N. j/ O# e& P% v
  4382.     ); b* `3 E- H- y. ?& n
  4383.   )
    / s  b) \6 v$ s5 D6 @* W
  4384.   (ai_sysvar NIL)
    2 c/ y( F. \- r" S8 Q2 H* c
  4385.   (princ)
    1 _# @; f. W5 x* T4 J
  4386. )
    " V. v: H& r/ s: N( r6 a

  4387. - R# ^$ G& j. @5 R) @4 `+ q
  4388. ;;; Shortcut menu for Dimension Text Home
    3 V1 s" j  Y. f, `" r/ c
  4389. 1 w7 ^' B* v( K1 I4 R
  4390. (defun c:ai_dim_texthome (/ ss)
    ' n' O3 D, i; e! W( F- f/ B( J! @
  4391.   (ai_sysvar '("cmdecho" . 0))
    , v. {$ \7 M4 T$ m# Q3 F
  4392.   (if (setq ss (ssget "_I"))5 }% w$ I( I# |* p
  4393.     (command "_.dimedit" "_h")
    1 [* ?) Q/ ]: S/ t6 m1 n: R& H  e
  4394.     (if (setq ss (ssget))
    7 S2 U* A' \+ F6 d8 M! Q" K
  4395.       (command "_.dimedit" "_h" ss)4 O+ t6 ^& O. L! s$ K* t  I5 V
  4396.     ); D) d: c" T/ e" {6 ~8 X
  4397.   )
    5 X7 u: O( P) n- a. @1 i$ B
  4398.   (ai_sysvar NIL)4 z! A. [2 ?' Z5 n
  4399.   (princ)
    3 y, h% `: ]/ D: C$ H# |: c
  4400. )! Y/ ~( G$ u2 t1 w$ C
  4401. * Y$ _( M4 g' A" m* y) A. C5 r
  4402.   ]& r) d* X# r  {: R  f
  4403. ;;; Screen menu item for CIRCLE TaTaTan option.
    . O6 }* B/ {4 z# R6 B$ Z1 A
  4404. ;;;     first, get points on entities
    ( P" o* ]' m% J2 d. |9 K
  4405. (defun ai_circtanstart()
    / N: M6 @8 g& p& x1 V+ E0 d
  4406.    (setq m:err *error* *error* *merr*)+ f1 u3 _5 b. V* x5 z' i$ l
  4407.    (ai_sysvar
    . o8 ?8 V! V- x* G, i3 I
  4408.       (list '("cmdecho" . 0)% W9 x; u1 X6 u
  4409.          ;; make sure _tan pick for CIRCLE gets same entity. Z7 A" |# H( k
  4410.          (cons "aperture"  (getvar "pickbox"))
    % U  [( o" v: ^) A
  4411.           )
    & R. s& e/ d, F
  4412.    )+ |5 [( B: w) S+ q+ _3 ?) W
  4413.    ;; prompts are the same as CIRCLE/TTR command option4 v3 J- e5 I& B$ C
  4414.    (setq pt1 (ai_entsnap "\nEnter Tangent spec: "  nil))
    6 B) Z7 d$ U: P* e6 C+ g
  4415.    (setq pt2 (ai_entsnap "\nEnter second Tangent spec: " nil))$ \% u6 q; Q) z' E' G
  4416.    (setq pt3 (ai_entsnap "\nEnter third Tangent spec: "  nil))
    % ]% A* s3 d1 |0 ^  C
  4417. )
    , z& k9 a0 q! B# {  E: ]4 T
  4418. ;;; Command-line version0 j- p- C) C. t. G1 M  A2 d+ x1 _, B
  4419. (defun c:ai_circtan (/ pt1 pt2 pt3)
    & Z) ^5 n) }3 |, D+ y
  4420.    (ai_circtanstart)
    & {$ t2 A, f. M
  4421. : ]0 d2 H( t& E3 u  _8 I4 T
  4422.    (ai_sysvar '("osmode" . 256))3 T: g; ?- ^: `
  4423.    (command "_.circle" "_3p" "_tan" pt1 "_tan" pt2 "_tan" pt3)3 t0 I, d2 X3 k+ |8 _' V
  4424.    $ p/ y3 i, j7 ^% {" j
  4425.    (ai_sysvar nil)% N. K! i' y; V0 R" m+ s4 \
  4426.    (setq *error* m:err m:err nil)
    " d7 ^% {+ o* S, _  P
  4427.    (princ)% [% c3 K" Y( W. |7 V0 ~% B
  4428. )
    ( l7 B* `( h  F6 I$ l& E; B0 [
  4429. ;;; Use this if CMDNAMES == CIRCLE7 Q' O: `$ N7 `3 @7 k
  4430. (defun ai_circtan (/ pt1 pt2 pt3)
    " r0 w3 }. h, B$ Q2 Z
  4431.    (ai_circtanstart)% |3 `4 `# s$ N3 F" a8 ]3 T9 L+ L
  4432. 3 c: P# r5 P" \7 i# B
  4433.    (ai_sysvar '("osmode" . 256)): G% a$ P& |; e' ]- h5 R9 V
  4434.    (command "_3p" pt1  pt2  pt3)
    * q3 r, I5 K! R: w5 G3 y% ^
  4435.    
    & q) X$ |0 X5 _; O
  4436.    (ai_sysvar nil)
    4 x/ `% A# m0 D' _
  4437.    (setq *error* m:err m:err nil)$ a, D: T0 ]* ^% x
  4438.    (princ)
      ]1 N7 z1 e4 x% ^  Y( o# A
  4439. )
    7 I9 w3 @' o. f: L' H, q

  4440. , r" T. g" a# q

  4441. / c, Z: R$ G% Q" @
  4442. " r( ?, u7 E0 t0 u1 \1 m( u
  4443. ;;; Shortcut menu Deselect All item.8 p. ]- j4 Q- e5 Q7 x
  4444. ; w1 S' T0 K  R8 r" a& ?0 w! l
  4445. (defun ai_deselect ()
    4 u; r7 ?6 A$ {; B0 {+ b3 y
  4446.    (if (= (getvar "cmdecho") 0)                        ;start if# ]+ b2 K8 l+ H
  4447.        (command "_.select" "_r" "_all" "")+ E+ M5 J' {' r6 d4 ~+ v
  4448.        (progn                                        ;start progn for cmdecho 1* D% o4 ~8 `7 N/ }4 A0 m
  4449.            (setvar "cmdecho" 0)
    3 N9 s+ B1 |. S9 Q- J- `) S
  4450.            (command "_.select" "_r" "_all" "")/ X4 _' \4 i  U+ k
  4451.            (setvar "cmdecho" 1)* Y4 V' B: m) f. w, L& i
  4452.        )                                        ;end progn for cmdecho 1& \4 B# O1 h; |: Q
  4453.    )                                                ;end if( D( v2 f) }( n( W1 C4 F" [, k
  4454.    (terpri)
    ; E( ~1 V/ d6 {' r1 `
  4455.    (prompt "Everything has been deselected")
    4 t# I9 @6 M( V( B- c+ _$ u
  4456.    (princ): l( l& \0 X$ n9 {
  4457. )
    ; i1 c5 v. p5 l4 o
  4458. 8 q1 R0 ~: L. d
  4459. ;;; Command version of ai_deselect to be called from the CUI
    ( v# T" p5 Y/ W8 Y1 {3 c  [9 n
  4460. ;;; so it gets properly recorded by the Action Recorder
    . [3 F" Q4 J: f3 k& X
  4461. ;;;% M7 ?  }! J  |5 C+ F
  4462. (defun c:ai_deselect ()8 d0 j3 d  P" |
  4463.   (ai_deselect)' l6 I* w  v3 T+ r% `- x1 K
  4464.   (princ)
    ) \5 m5 w; [6 C! r% @4 {3 u8 T
  4465. )4 w* Q# P! Z/ y3 D/ p

  4466. : H3 H$ o* Z) Z3 f# p: i! P& u
  4467. ;;;) B5 ]1 T' t, l: H
  4468. ;;; Enable Draworder to be called from a menu' F4 `- j: [' o, ?3 {) f4 ^
  4469. ;;; Checks for Pickfirst selected objects
    . I! M( ]! Q: E% |) j% i
  4470. ;;;
    / M9 ?/ K' O1 v9 T: a$ k. T! Q
  4471. ( D! L/ L5 ?5 @; d. I5 t8 X+ u
  4472. (defun ai_draworder (option / ss )* x) f; p4 ]" B/ ]; M" J3 z

  4473. 9 A: B, }7 D6 f  v  ]
  4474.   (setq m:err *error* *error* *merr*)9 g+ d3 r, G8 a$ W$ y4 F2 J# b. O
  4475.   (ai_sysvar '("cmdecho" . 0))* ?" z: T+ d% Y8 ^+ q- g; m

  4476. / p3 B3 ^6 k, m' V" E, C
  4477.   (if (setq ss (ssget "_I"))7 \) Y7 u8 b* y2 T- o2 D
  4478.     (command "_.draworder" option)
    * u3 Y$ K2 E" l+ g& y$ q5 ~
  4479.     (if (setq ss (ssget)); E, f( Y0 p1 k/ x
  4480.       (command "_.draworder" ss "" option)9 [- \) [; \" S& X! `9 s7 O
  4481.     )
    : j0 x- L1 @4 @: ]# E8 c
  4482.   )5 Y- d' ?( F# G- b" W5 o
  4483.   (ai_sysvar NIL)
    . ^2 ?$ B3 j. T5 V
  4484.   (setq *error* m:err m:err nil)$ X9 q/ B: V7 \1 l  d6 _& J( o& u
  4485. / _' j* D+ p: |! G; m
  4486.   (princ)
    . {+ B7 C* n$ p- y
  4487. )% h0 {5 ]; W! f2 h- p( y' k6 f
  4488. ( d5 q5 V' E5 }) X$ F
  4489. ;;; Command version of ai_draworder to be called from the CUI$ u$ f0 }$ {# L8 u1 k1 T* b
  4490. ;;; so it gets properly recorded by the Action Recorder
    ) F, Y7 h2 Z  @; _" J4 j! H
  4491. ;;;* d6 c' k5 i5 R5 u" l
  4492. (defun c:ai_draworder ()
    & n* G% B0 }0 N4 q# d4 q8 `8 U
  4493.   (initget "Above Under Front Back")
    % l' D* L- i1 A. j) T# N% U
  4494.   (ai_draworder (strcat "_" (getkword)))- q; M! @" v! N6 {2 t
  4495.   (princ)
    . h7 l3 j4 j. K$ t, S- X
  4496. ), k1 ?7 f& Q. ^8 R, e/ e' o1 K
  4497. 8 T* U, U* G+ Z
  4498. (defun c:vlisp ()
    ' B  f/ O( u4 L
  4499.   (if (/= nil c:vlide) (c:vlide))% f, }- \$ d# ]1 K  c/ ]9 {
  4500. ), L: P( Y  J) U* [7 q; d0 z

  4501. 9 D) I# X, r$ R  m: P1 ^& f
  4502. (princ "loaded.")3 w: z! a6 C# T* S$ S  Y$ u+ D* G. N
  4503.   B( C2 k: ~  f) Z* ?. V7 j
  4504. ;; Silent load.( }0 ^: E$ R! s& G5 X# g
  4505. (princ)
    , t+ a! W$ u1 T% `" Z0 D

  4506. $ B9 j+ U- s, [* V$ w% L$ T
  4507. ;;;----------------------------------------------------------------------------& K" I1 m+ {, d# c
  4508. ;;;" C& ^5 D9 `- w; c
  4509. ;;;   DDCHPROP.LSP   Version 0.5/ M+ i, t9 I0 F
  4510. ;;;: k! j# O3 o. B6 C0 V
  4511. ;;;   Copyright (C) 1991-1993 by Autodesk, Inc.' [' o- H5 Y: A6 D/ q8 j
  4512. ;;;
    9 N9 G1 C( |3 d7 f/ p+ u1 ]: H
  4513. ;;;   Permission to use, copy, modify, and distribute this software
    + l. S  p9 m' U
  4514. ;;;   for any purpose and without fee is hereby granted, provided
    # k5 v4 r* l0 w7 l
  4515. ;;;   that the above copyright notice appears in all copies and that
    7 d3 s" S+ i2 z7 M
  4516. ;;;   both that copyright notice and this permission notice appear in
    6 {1 X; j& i1 l& O& q: ?) ]- @/ f
  4517. ;;;   all supporting documentation.) r2 u4 a! O% B# ?2 a
  4518. ;;;$ f$ {* b, C: E" `
  4519. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
    $ ^4 p7 ]' [6 Y( L1 r! r4 [5 q
  4520. ;;;   WARRANTY.  ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR2 U9 \( ?; N: h2 I6 F% h
  4521. ;;;   PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.
    6 S* s3 @% I; l& ^
  4522. ;;;
    3 t" s5 b2 B/ J# O4 D  \
  4523. ;;;   2 February 1992
    * \5 I2 c1 S7 n8 ^" E
  4524. ;;;   : Y+ `' x; V0 R& |
  4525. ;;;----------------------------------------------------------------------------& [3 R3 `# b% ]; L6 m) [" p
  4526. ;;;   DESCRIPTION9 K6 b9 e4 ~' p7 ^
  4527. ;;;----------------------------------------------------------------------------
    6 m7 B) J# X& e! X& G+ z
  4528. ;;;   C:DDCHPROP is a dialogue interface for the CHPROP command.
    % i( ?1 @. ^$ s# @
  4529. ;;;
    $ l7 @" w  w3 G% L0 j
  4530. ;;;   The command looks similar to DDEMODES.  The main dialogue has an image
    4 w; R) q% ~9 K( Y  g
  4531. ;;;   tile, 3 buttons (layer, color, linetype), and an editbox (thickness).   & p9 w  h0 E8 z% j* Q
  4532. ;;;   The 3 buttons each launch a sub-dialogue containing a list and edit box.  : \# J* E: T/ v5 W
  4533. ;;;   The dialogues are all defined in the DDCHPROP.DCL file.- U( E  D' _" `7 a( }1 c* H
  4534. ;;;
    " p3 W, B% y9 C2 m7 M9 `
  4535. ;;;
    $ ~5 U- H5 n; U
  4536. ;;;----------------------------------------------------------------------------3 |$ H$ ?  j$ S" t
  4537. ;;;----------------------------------------------------------------------------
    , x0 o1 M( {0 g
  4538. ;;;   Prefixes in command and keyword strings:
    4 ^" r0 P3 K1 E% Z
  4539. ;;;      "."  specifies the built-in AutoCAD command in case it has been        % Q/ F5 Q- T5 @
  4540. ;;;           redefined.! a1 W  h/ G/ g9 x; r" o9 v0 s
  4541. ;;;      "_"  denotes an AutoCAD command or keyword in the native language2 Y; K' B3 r; ?9 I* S
  4542. ;;;           version, English.
    % t6 @; m& Q4 p2 E0 B" Z
  4543. ;;;----------------------------------------------------------------------------
    / w! e/ t  e  H1 D
  4544. ;;;
    5 _) d9 v4 e5 Z: g' }+ Z9 c
  4545. ;;;6 e( N- @; S: ?6 f
  4546. ;;; ===========================================================================$ B0 b0 G; B& f9 H
  4547. ;;; ===================== load-time error checking ============================
    + a+ w! y+ p6 G3 r' c# l8 {$ X" j
  4548. ;;;
    8 U5 [# v$ Q6 {- R
  4549. : t" k' H9 S# K
  4550.   (defun ai_abort (app msg)
    5 t; h5 `# \* y% p! K9 n! d& \
  4551.      (defun *error* (s)
    6 u, I/ ~, Q; I' S' b' {
  4552.         (if old_error (setq *error* old_error))7 Z) k; j# u$ Z/ V+ X
  4553.         (princ)5 q( }( U5 W* T( n# J$ G9 X
  4554.      )) w6 V: j9 {+ d4 R. j& |7 k' _6 e- @
  4555.      (if msg
    5 G6 A9 ^5 a; W' o$ \
  4556.        (alert (strcat " Application error: "' w) y6 C4 {+ E; A  m: c1 ]
  4557.                       app
    + r1 o. b, n& L& d% x
  4558.                       " \n\n  "! e/ S5 p% m) O( n  Z$ {/ U+ t$ H
  4559.                       msg
    : C% F# U6 @" X' K9 ^- T1 P$ \
  4560.                       "  \n"
    . v; h; z! e. w( ]: l
  4561.               )* O4 c/ H3 `% b, J2 }6 b5 R% f
  4562.        )
    3 {3 Y' K  ?7 a. \# U; r
  4563.      )
    ' a: H6 B! n, L
  4564.      (exit)5 u' }6 A: i. o2 C1 [  r
  4565.   )
    # |2 h3 [' O- t* `3 @
  4566. - I# h4 X4 t7 X
  4567. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    & P5 Z( _3 Y" f1 C' o. |, t
  4568. ;;; and then try to load it.& H* z! o4 s; p* c6 Y2 [
  4569. ;;;' A; J% t% W& Q) X: v% F- y5 ?; I+ _
  4570. ;;; If it can't be found or it can't be loaded, then abort the
    ; V; o! Q* W/ K. a+ B
  4571. ;;; loading of this file immediately, preserving the (autoload)& Z" K- g1 J- D( x; A% s
  4572. ;;; stub function.
    ( k+ d; Q+ i! I  ^+ u

  4573. 2 p& P: }9 H* _
  4574.   (cond0 I% B  M% ?: q$ {2 u
  4575.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    : {  \- ~+ u2 e& S

  4576. 5 o" x; U. E1 V% l
  4577.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    5 n7 }9 t& g1 r- b! G' Z' r
  4578.         (ai_abort "DDCHPROP"
    $ h' Y  p$ n9 |  e* S( W
  4579.                   (strcat "Can't locate file AI_UTILS.LSP."9 {% k0 \$ F) [  o  y% s# B
  4580.                           "\n Check support directory.")))2 \- X4 ^1 s$ \2 T, [! u" N; \

  4581. 4 u: ~1 {4 @/ h( u3 c/ B5 i
  4582.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it$ k- K% ]- z" |& ?
  4583.         (ai_abort "DDCHPROP" "Can't load file AI_UTILS.LSP"))/ f2 _: J+ Y) c" K  y$ b/ J& v
  4584.   )
    ' |: K4 V$ W( J- k  p5 z+ C
  4585. / \1 ~# ~7 g" H" c3 ~" q
  4586.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    ) M! G4 `; B# j
  4587.       (ai_abort "DDCHPROP" nil)        ; a Nil <msg> supresses
    8 ?7 R+ K% N/ y7 D1 }
  4588.   )                                    ; ai_abort's alert box dialog., Y1 O) {( P7 f3 f6 w; q
  4589. & d- s$ w) h. ~4 g
  4590. ;;; ==================== end load-time operations ===========================
    ! r1 k. s; }- V2 L7 N
  4591. 6 S1 w( {) r1 Z6 U# d3 f1 P
  4592. ;;; Initialize program subroutines and variables.) z# d4 U2 G3 r- B8 c+ D0 M
  4593. # \) X3 M  g( [6 s3 [
  4594. (defun ddchprop_init ()
      N, S+ ?4 o/ m1 L% m

  4595. ! b$ u1 H3 Z) t5 ~- \1 \7 W
  4596.   ;;; E$ \2 t3 C$ v- {( |5 T
  4597.   ;; Define buttons and set values in CHPROP dialogue box
    ' M. E' B; L1 H) h. S
  4598.   ;;8 \, r- Z; t- k0 H
  4599.   (defun call_chp ()2 ]( w6 }! J- V  u4 {
  4600.     (if (not (new_dialog "ch_prop" dcl_id)) (exit))
    2 w  e$ P  }3 Q7 g
  4601.     (set_tile "error" "")
    * ~3 Y. W6 e. r6 [
  4602.     ;; Set initial dialogue tile values* O- u" b, K7 D" L# E* s
  4603.     (set_col_tile)
    ! r1 ?$ ]4 M+ j; L4 [8 Y
  4604.     (if (= lay-idx nil)  i; h# F, C: r+ n, a6 w- p
  4605.       (set_tile "t_layer" "Varies")% W0 m( G) H/ I+ o; O$ l
  4606.       (set_tile "t_layer" (nth lay-idx laynmlst))- l: a3 P8 }. D' `" r' \6 P
  4607.     )- z6 d( ^1 W( I0 _5 v! u% I
  4608.     (cond
    1 A- a; A/ d( }2 }$ }1 ?* {
  4609.       ((= lt-idx nil)
    ! d2 i6 m* G# F. X2 ^
  4610.         (set_tile "t_ltype" "Varies")/ s: o+ Y8 T" \6 ^
  4611.       )& f  k& l8 [% \" R
  4612.       ((= lt-idx 0) ; set tile "By layer & layer linetype"
    - r$ k. I8 f" v: f, f
  4613.         (set_tile "t_ltype" (bylayer_lt))+ q9 A$ D2 d5 `2 a% s
  4614.       )' ]6 H" `! F- i. C
  4615.       (T 1 B  n6 ^: o! T% e; {  [" J: p
  4616.         (set_tile "t_ltype" (nth lt-idx ltnmlst))
    2 m) v& _+ S0 b5 u
  4617.       )5 A' A, n* h& r6 R
  4618.     )
    + p0 n' w; m9 s& S( D
  4619.     (if (or (= ethickness nil) (= ethickness "Varies"))
    " ~; v# W  q  s+ f) l- @  A
  4620.       (set_tile "eb_thickness" "Varies")  t* M* \4 {0 d0 I" x
  4621.       (set_tile "eb_thickness" (rtos ethickness))) s+ `$ f  z: i/ }
  4622.     )
    - }( P) x# Y: E$ u" r
  4623.     ;; Define action for tiles
    ( E6 ^' A3 J2 l2 ~3 G8 a5 h2 k; g
  4624.     (action_tile "b_color" "(setq ecolor (getcolor))")
    * L' {2 Y# D3 m4 u8 ?! y2 ~& e6 w4 ?* C
  4625.     (action_tile "show_image" "(setq ecolor (getcolor))")
    ( i: V" H+ G4 @; `2 M) t) m
  4626.     (action_tile "b_name" "(setq elayer (getlayer))")
    # e8 `' _+ W1 K- k: }4 k+ q
  4627.     (action_tile "b_line" "(setq eltype (getltype))")& T& `8 R6 R5 T" Z( H
  4628.     (action_tile "eb_thickness"  "(getthickness $value)")$ T0 C9 J! \! L  n- e3 s* w
  4629.     (action_tile "help" "(acad_helpdlg \"acad.hlp\"  \"ddchprop\")")" \- l9 N3 S/ z, V
  4630.     (action_tile "accept" "(test-ok)")
    ( z1 X1 y* w9 P. P2 ?+ G# R" s
  4631.     (if (= (start_dialog) 1)6 B, i/ c4 J4 `( Y1 x" g
  4632.       (progn# z) O) |5 Z6 x- C9 l! j0 @. |% T
  4633.         (command "_.chprop" ss "")% c& i9 J& T9 l. w
  4634.         (if ecolor
    - O7 D) r8 M7 |5 P
  4635.           (progn& }+ ~+ H+ X5 ]4 Q( J& V  B
  4636.             (if (= 0 ecolor )   (setq ecolor "BYBLOCK"))
    # s" E/ _& @* Z1 h" D
  4637.             (if (= 256 ecolor ) (setq ecolor "BYLAYER"))
    - k7 R9 L2 R8 O* o
  4638.             (command "_c" ecolor)5 A0 d2 m( g* I* ?
  4639.           )
    7 n& Y8 Q2 r% Y8 Q* [3 V3 O
  4640.         )
    8 H( f7 `  t( o# S/ x
  4641.         (if (and (/= eltype "Varies") lt-idx)
    " _5 c! V0 [3 J$ _
  4642.           (command "_lt" eltype)
    ; z- ^$ K9 J$ y4 O- e
  4643.         )% k- w* ?$ c3 p7 M$ F0 l6 Q5 m
  4644.         (if (and (/= elayer "Varies") lay-idx)
    8 k( |1 a# K' U7 |5 n2 H
  4645.           (command "_la" elayer)4 C# A! `2 r; W1 e0 A+ N
  4646.         )+ Q0 i  y+ q- P' m! D# g
  4647.         (if (and (/= ethickness "Varies") ethickness)$ N4 C4 l: t+ w) g# c$ |  d2 `/ b
  4648.           (command "_t" ethickness)4 A5 @5 ~" }9 w  n; k
  4649.         )
    . r; G( l' F" o2 p5 F3 G& i
  4650.         (command "")4 b1 P7 t3 a1 M+ l2 F! r( U0 ~" i6 `
  4651.       )% o# {* j$ e# Z4 _! E! o
  4652.       (princ "\nProperties unchanged")" w0 Y* O# @) c
  4653.     )
    " n: [8 C  T2 @% T( W
  4654.     (princ), u. [( ]/ A! |% J- P2 [, a6 F9 `
  4655.   ), c2 a& o- N0 T. `4 w  g
  4656.   ;;5 M9 M8 P# O+ R7 f. }( U
  4657.   ;; Function to set the Color text tile and swab to the current color value.6 R% l  g  I/ g! F
  4658.   ;;
    4 s, Z4 v. _+ w6 I* N2 `0 {1 E
  4659.   (defun set_col_tile()3 l, ?' h# m3 [0 j& F" ]3 s
  4660.     (cond - A1 V5 q: s; @# b' u
  4661.       ((= ecolor nil)
    " r. a1 \/ \: T6 t5 t0 k6 Y
  4662.         (set_tile "t_color" "Varies")
    7 `( ?1 @2 g! _  }6 [& ~; u* U
  4663.         (col_tile "show_image" 0 nil)2 ]: Y9 ?, H/ C
  4664.       )
    3 V; Y, E' ^$ l
  4665.       ((= ecolor 0)3 f+ ^' y9 V4 Q) U4 m
  4666.         (set_tile "t_color" "BYBLOCK")
    6 j8 s( V4 g, D6 E: i0 J. q) G
  4667.         (col_tile "show_image" 0 nil)' \3 }4 L8 H& O2 `; k* k
  4668.       ). Z4 ~5 [* h( v0 T
  4669.       ((= ecolor 1)
    1 O' L; V' T% l, t9 X2 D
  4670.         (set_tile "t_color" "1 red")
    - ~( K  s% i1 a# n' G, O
  4671.         (col_tile "show_image" 1 nil)3 C* c9 {' u' D' _( \
  4672.       )
    $ M0 W) ^  L4 z4 m
  4673.       ((= ecolor 2)
    1 |7 ~1 M+ l* |5 P. H$ K' V
  4674.         (set_tile "t_color" "2 yellow")
    # B  p* u* Q2 N3 G7 R" T
  4675.         (col_tile "show_image" 2 nil)1 d1 `# Q3 w" d7 U% h
  4676.       )
    . v& a9 w" r2 ?1 W4 J" X% _
  4677.       ((= ecolor 3)
    # f7 b1 u. i5 ^& u  y
  4678.         (set_tile "t_color" "3 green")
    $ K$ \# c( ?( o, B
  4679.         (col_tile "show_image" 3 nil), o: {( J$ s, i. w
  4680.       )2 |8 s7 @/ Y* R6 O6 e
  4681.       ((= ecolor 4)/ @, v4 f6 X: }5 ~: y! T3 [. f
  4682.         (set_tile "t_color" "4 cyan")
    % B2 b+ Z0 O+ b& U
  4683.         (col_tile "show_image" 4 nil)
    - V/ ^# s) e$ a
  4684.       )
    % X1 m$ n" \2 K1 E" _+ k* d
  4685.       ((= ecolor 5)! a& v  E* ?$ ^* I, Q- L  p
  4686.         (set_tile "t_color" "5 blue")3 f/ x, C5 L9 l! m% R! P' R& _# \) V
  4687.         (col_tile "show_image" 5 nil)' I+ z0 q; }9 P* Y- E/ D- O  n
  4688.       )& O! p: a3 i+ a5 X4 j: L. z
  4689.       ((= ecolor 6)
    * M5 k/ F: K: D* c
  4690.         (set_tile "t_color" "6 magenta")2 R2 z! |. e" ~# h3 Y
  4691.         (col_tile "show_image" 6 nil)3 w4 U6 u1 ?; t: q0 @
  4692.       )# k( @$ h/ {. v1 t. v
  4693.       ((= ecolor 7)
    & Q9 }5 U" c. Z: b3 v
  4694.         (set_tile "t_color" "7 white")# V# Z+ @5 }! [$ P
  4695.         (col_tile "show_image" 7 nil)' Y* ~3 d: Q0 q6 B- a, j" `
  4696.       ); u1 q9 \3 o3 w/ r* L$ W
  4697.       ;; If the color is "BYLAYER", then set the tile to
    ; h$ P- t* u3 D
  4698.       ;; show it's set By layer, but also indicate the
    4 T1 S) W0 v$ [2 ]" o
  4699.       ;; color of the layer - i.e. By layer (red)9 P" l7 v8 G' q' V8 U! v4 _! S
  4700.       ((= ecolor 256). e/ d3 V7 I# N% f. f) q+ [3 y
  4701.         (set_tile "t_color" (bylayer_col))4 y# ~2 N- E  l6 E
  4702.         (col_tile "show_image" cn nil)
    4 c# p* z* I" c
  4703.       )$ @, V- |8 K) z# }6 D
  4704.       (T
    4 k* X' t) u) e6 D% b
  4705.         (set_tile "t_color" (itoa ecolor))
    + b; W( B; \; g7 w
  4706.         (col_tile "show_image" ecolor nil)$ m9 I0 ~/ a0 B1 q$ h* L4 K  E7 I
  4707.       )
    0 e) W1 C+ Z$ M: y4 t+ @
  4708.     )# l, w* |. {8 N! L+ e% A
  4709.   )
    1 w* L* O0 F4 O/ m% l7 ?1 k
  4710.   ;;* j/ n: e0 ?* t$ z4 r
  4711.   ;;  Function to put up the standard color dialogue.; y5 ^5 r+ c1 V" |
  4712.   ;;8 W& J1 h, B$ l2 ]5 t0 t
  4713.   (defun getcolor(/ col_def lay_clr temp_color)
    : x" o6 w, ^  r  X  n' n
  4714.     ;; col_def is the default color used when rq_color is called.  If ecolor
    : j- y7 E9 k4 g( }: ^
  4715.     ;; is nil (varies) then set it to 1, else use the value of ecolor.( ~4 B( I- |. W4 E
  4716.     (if ecolor, z% R+ X& H* P1 Z1 I
  4717.       (setq col_def ecolor)2 M: a9 B& w( W: j. |2 X6 M
  4718.       (setq col_def 1)
    # l  k; m1 e, O) b. }/ Q3 o3 |' o
  4719.     )  z, K6 |3 O# a3 F3 o" L" g
  4720.        ! E2 y6 s$ z/ K) F6 G
  4721.     ;; If we're working with a single layer, get its color
    ' r& z" |2 B0 I6 E
  4722.     ;; for use in the color swatch if the user selects color BYLAYER." Z1 T; r4 f% ^/ z# }9 A- n3 K/ p4 @: e
  4723.     (if (/= elayer "Varies")( t/ e9 g5 J& m- v9 }2 W7 A& @4 s
  4724.       (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))/ j% i4 w6 E7 H  [( h+ u* Z0 ?& P
  4725.       (setq lay_clr 0)/ |8 S2 Y; p8 I( z* a; f7 O# i
  4726.     )
    1 ~  y3 B5 ^/ @
  4727.     (if (numberp (setq temp_color (acad_colordlg col_def T lay_clr)))
    " c4 H( Q7 p  C  f7 u
  4728.       (progn
    4 V! B- [$ S( p% t1 \
  4729.         (setq ecolor temp_color)
    " p' p. |* R1 p# r
  4730.         (set_col_tile)& [1 w, y  Y  V6 d+ ~. z/ N+ B
  4731.         ecolor4 B/ V& l" t0 J- h/ E. Q: Q- C
  4732.       )
    : I2 F, Y% T* N. ^
  4733.       ecolor
    % u! P. g4 m* F
  4734.     )  " o+ Z  N: t5 V- z. Z$ t. o
  4735.   )
    * i# O  n7 k# ]* A2 d) V& q
  4736.   ;;
    8 N% U. N( E& P* x
  4737.   ;; This function pops a dialogue box consisting of a list box, image tile, % _1 [9 ~$ B: }" }$ @/ U
  4738.   ;; and edit box to allow the user to select or type a linetype.  It returns 5 v; O* U1 B, f2 x7 n0 ]" M& X" Z! _
  4739.   ;; the linetype selected.2 W( s6 A  G6 s2 o! p) m
  4740.   ;;
    ! e+ a: [" U6 x+ e3 P( A5 H7 w
  4741.   (defun getltype (/ old-idx ltname)2 p0 Y. x0 \  \( _
  4742.     ;; Initialize a dialogue from dialogue file
    4 G  j( \6 ~1 I; c& `: d8 ?5 H1 w
  4743.     (if (not (new_dialog "setltype" dcl_id)) (exit))
    , t3 B  Z, \& c! G0 @- z7 V
  4744.     (start_list "list_lt")
    ! s9 `" `1 u! J8 q
  4745.     (mapcar 'add_list ltnmlst)         ; initialize list box
    1 a, q% b' n4 q" z: a  v: V9 q
  4746.     (end_list)" M4 q+ }5 o. k& x9 r
  4747.     (setq old-idx lt-idx)
    5 ]5 f: E6 N: `4 ?0 ]) N
  4748.     ;; Show initial ltype in image tile, list box, and edit box' }& w( P5 O8 t& u5 Y7 P
  4749.     (if (/= lt-idx nil)
    * k1 s. t+ M; `0 ~3 a# ^5 T* q  D* W
  4750.       (ltlist_act (itoa lt-idx))
    4 E, `4 A/ E. N2 w( @- p
  4751.       (progn2 S" |5 `# F& u
  4752.         (set_tile "edit_lt" "Varies")' z1 o8 q$ s2 {) A$ ^4 l
  4753.         (col_tile "show_image" 0 nil)
    1 p9 f2 @6 [8 S
  4754.       )
    . X; L1 p% Y' @4 \1 R- K
  4755.     )
    . _3 n* H7 E! W; [& D9 J# ]" \& Q, p2 j
  4756.     (action_tile "list_lt" "(ltlist_act $value)")
    ! T7 i. R; V" H; j
  4757.     (action_tile "edit_lt" "(ltedit_act $value)")
      }4 S3 n9 ~6 t: ~% ?" ]8 i
  4758.     (action_tile "accept" "(test-ok)")
    - Q* e0 s9 K: |7 Z* y2 P  V. G
  4759.     (action_tile "cancel" "(reset-lt)")
      F: j! }& m7 b1 X' ]: W2 V" G
  4760.     (if (= (start_dialog) 1)           ; User pressed OK/ B! D8 U2 u$ g
  4761.       (cond
    % b8 a9 J, G- h4 r" N. z) P
  4762.         ((= lt-idx nil)& A2 d7 N: Y& d# f
  4763.           (set_tile "t_ltype" "Varies")
    # `, c2 ], P5 V  K$ |
  4764.           "Varies", w, F3 C: f3 U( j2 B& X
  4765.         )
    9 ~9 }6 r8 M( V
  4766.         ((= lt-idx 0)
    & [% Y: M/ X# a- U
  4767.           (set_tile "t_ltype" (bylayer_lt))
    3 N( I+ a. x% s" c6 C5 {6 l
  4768.           "BYLAYER"
    4 [' j7 x+ U5 \& _2 t+ J8 r
  4769.         )* u+ ]% T- V! H: J" w
  4770.         ((= lt-idx 1)  }- n4 g" p4 N( w4 N9 `
  4771.           (set_tile "t_ltype" "BYBLOCK")* U+ L0 d  s0 X- |
  4772.           "BYBLOCK"
    ' X; T- o! l" I6 b7 u8 U
  4773.         )! T7 W  F$ [$ [* i0 O$ B8 w7 v( i
  4774.         (T  
    ; u' i( j7 J' H0 n
  4775.           (set_tile "t_ltype" ltname)
    ' [: a/ D: ]/ d) j0 @4 T. |/ J% l" V4 S
  4776.           ltname& B; D% y! B/ }' z) i; i
  4777.         )
    - V9 j3 f! j8 \" W% d9 y3 t. O
  4778.       )5 i- _* S/ ^0 w' j: E5 r: u( R% g/ O
  4779.       eltype
    % k" E3 I  h( a8 |
  4780.     )' Y$ ^' c# ~& U7 [. A/ f1 e" q
  4781.   )5 Z0 G6 T  a0 \* f; J" j
  4782.   ;;. Y9 m3 y8 m8 k: {8 w
  4783.   ;; Edit box entries end up here! c7 S: |; m' n8 V8 U2 X' m
  4784.   ;;* V1 z+ X- z  Y1 S; j0 {
  4785.   (defun ltedit_act (ltvalue)
    ! Q. N2 x7 p7 W) s+ i( N: C$ M/ X
  4786.     ;; If linetype name,is valid, then clear error string, 1 N6 o2 G3 X$ M/ |; Z/ ]
  4787.     ;; call ltlist_act function, and change focus to list box.8 z) r8 {! G9 \) P
  4788.     ;; Else print error message.
    ' w% `1 `4 L% d$ _
  4789.     (setq ltvalue (strcase ltvalue))
    / k, ?$ r6 O8 s% D! l, s0 n3 J; w
  4790.     (if (or (= ltvalue "BYLAYER") (= ltvalue "BY LAYER")); K$ Y4 w: A: ]" t' Q
  4791.       (setq ltvalue "BYLAYER")
    % h; A3 y* }0 X8 ?; F# \. t
  4792.     )- W: G4 p) m) I+ s- G
  4793.     (if (or (= ltvalue "BYBLOCK") (= ltvalue "BY BLOCK"))
    " ^" V" }9 \$ [) r0 @, u) p
  4794.       (setq ltvalue "BYBLOCK")
    : S% t: P9 M  ?
  4795.     ): B6 ^' C& N, v! A; ~
  4796.     (if (setq lt-idx (getindex ltvalue ltnmlst))
    6 S% P- c  L: |' w0 I, x
  4797.       (progn% k: {2 R' w$ d/ H2 P3 M
  4798.         (set_tile "error" "")
    / n% }, x; d7 L+ `
  4799.         (ltlist_act (itoa lt-idx))- V# |' B5 ]0 |2 T$ t5 ?
  4800.         (mode_tile "list_lt" 2)
    # y% U3 s0 W6 B8 X
  4801.       ). p' S* g" e, `/ l2 D' P# v$ r# o
  4802.       (progn* B4 V, b' U/ A: r
  4803.         (if (/= ltvalue "VARIES")
    ! u5 p! O! V5 B4 j  J5 H- v
  4804.           (set_tile "error" "Invalid linetype.")4 J- S' `! c8 X
  4805.         )! A  L0 ~1 O) B1 i# ?
  4806.         (setq lt-idx old-idx)& p" \& Z  v1 N9 i& m" F3 N
  4807.       )
    4 t8 W3 l8 M; z* O
  4808.     )  _% P% n; Z, E- `7 |
  4809.   )% V, u& W/ v$ {( Q  w5 P9 |! R
  4810.   ;;0 N) r0 l6 T( w& l, i: e) u
  4811.   ;; List selections end up here! M4 u9 f3 C8 [* B
  4812.   ;;- x( g. |) g$ e, }
  4813.   (defun ltlist_act (index / dashdata)! Q' @& V! C: G
  4814.     ;; Update the list box, edit box, and color tile
    7 j2 d# ^! p* f9 M" H
  4815.     (set_tile "error" ""), Z7 h; [. O: q
  4816.     (setq lt-idx (atoi index))
    ' e' r5 K7 U7 D$ P) B1 e  U
  4817.     (setq ltname (nth lt-idx ltnmlst))- [, ^- U( }* e! F6 j- g/ u; T' r
  4818.     (setq dashdata (nth lt-idx mdashlist))5 L: r* q+ g8 D4 e/ I; k7 ?5 I( T
  4819.     (col_tile "show_image" 0 dashdata)
    . k/ U7 U. P# I4 s
  4820.     (set_tile "list_lt" (itoa lt-idx))) _; E$ u% S) I8 u3 `
  4821.     (set_tile "edit_lt" ltname)7 ~8 X" w3 F) ?' y5 C4 @) M( q6 p6 {
  4822.   )
    , q: f& z8 n0 B  e
  4823.   ;;, X/ Z: k9 Z( C2 l/ d2 W
  4824.   ;; Reset to original linetype when cancel it selected& N" e( X( C! M/ Z1 f6 {* w( ?
  4825.   ;;) z; d3 y0 [7 s* E% W9 O9 U
  4826.   (defun reset-lt ()
    # i( [8 d& N8 ?6 n2 b# K
  4827.     (setq lt-idx old-idx)
    * J% P; v* k' a& K) W) O3 W. i) ~
  4828.     (done_dialog 0)8 r8 b7 m0 B" d! G- x
  4829.   )6 t9 E' m; M, J$ k4 c0 n! l
  4830.   ;;
    " A1 }) ~5 b* T$ `; C; n
  4831.   ;; This function pops a dialogue box consisting of a list box and edit box to - m- E* C" e4 w- n
  4832.   ;; allow the user to select or type a layer name.  It returns the layer name
    ! {9 ^* y+ h3 i! U3 ?
  4833.   ;; selected.  It also the status (On, Off, Frozen, etc.) of all layer in the ' U6 ]! t# F1 w# M
  4834.   ;; drawing.
    - v! v/ @; @; b8 s" e/ |' S
  4835.   ;;
    . p5 G  b# F4 G9 g' J
  4836.   (defun getlayer (/ old-idx layname on off frozth linetype colname)
    5 v; D; G5 Y- Q* p% A2 c% X9 l3 m5 h
  4837.     ;; Load a dialogue from dialogue file
    7 r0 P' A2 `7 k9 m! I
  4838.     (if (not (new_dialog "setlayer" dcl_id)) (exit))
    ( V* ~0 Y1 q3 X7 X& d) s/ y7 R. W$ m
  4839.     (start_list "list_lay")
    9 C& s4 z- S1 [! j$ G% ^1 a2 H
  4840.     (mapcar 'add_list longlist)        ; initialize list box
      X+ h. W# p- f. ?# H
  4841.     (end_list)
    6 w7 }* E* O  C. b5 y
  4842.     ;; Display current layer, show initial layer name in edit
    * W6 n: j" z; Z: |- N
  4843.     ;; box, and highlight list box./ i" @# S5 q- t3 e8 {# Z7 M* S: o
  4844.     (setq old-idx lay-idx)
    3 c# ^/ ]1 x& H( V* X: J
  4845.     (if (/= lay-idx nil) (laylist_act (itoa lay-idx)))3 k0 V' n, h% D8 W! ^$ J& a. l/ |
  4846.     (set_tile "cur_layer" (getvar "clayer"))* `" o. T: [6 x8 E. R2 X3 X
  4847.     (action_tile "list_lay" "(laylist_act $value)")
    - v4 I1 L2 t1 {0 N. I- K, b
  4848.     (action_tile "edit_lay" "(layedit_act $value)")9 [, k$ ^# t9 [$ S
  4849.     (action_tile "accept" "(test-ok)")
    # G6 w5 G4 }1 [9 D
  4850.     (action_tile "cancel" "(reset-lay)")/ j' A2 E) o7 \, E1 V! ]
  4851.     (if (= (start_dialog) 1)           ; User pressed OK
    ) k& q* q7 }8 Z7 K- E( R+ L" A
  4852.       (progn
    ! r* d9 n- p4 J0 X
  4853.         (if (= lay-idx nil) (setq layname "Varies"))
    , O' U5 N8 {+ W& F9 l
  4854.         (set_tile "t_layer" layname)
    8 ^( C2 t4 G. w1 e
  4855.         ; If layer or ltype equals bylayer reset their tiles
    , y5 V' E5 O/ h7 s! u" M
  4856.         (if (= lt-idx 0)' X5 F- v9 [% u, L: i4 j5 p& a
  4857.           (set_tile "t_ltype" (bylayer_lt)), k0 n% S- ]7 G0 f
  4858.         )
    ' Z5 ]1 L+ a* J' N$ c4 f8 @
  4859.         (if (= ecolor 256)
    & Z; D; s( B% z% \0 q
  4860.           (progn) Y1 t/ D3 |" c. @
  4861.             (set_tile "t_color" (bylayer_col))$ W/ B+ Q( }4 h9 i4 t2 c! C
  4862.             (col_tile "show_image" cn nil)& a2 Y& P9 @+ @9 R  @- D
  4863.           )- d) j( A, a! H- }/ a
  4864.         )
    % b' c6 a9 t+ _6 I' w" H# y
  4865.         layname4 E  s. ~& W4 J5 v0 F3 q
  4866.       )
    2 ]- G) O, g% ~
  4867.       elayer- I& X# M" h! c& h/ {
  4868.     )+ d. D5 r) C: y; o
  4869.   )
    4 D0 X" u  f1 O. O) `
  4870.   ;;: W- |7 s( C. l% Q* F. i: V
  4871.   ;; Edit box selections end up here. `, ]! b, d$ T- Y; A
  4872.   ;;
    4 }" v0 [' d3 U5 \" q9 `
  4873.   (defun layedit_act (layvalue)& s9 y3 f3 m4 h1 T( \. x$ Z! ^
  4874.     ;; Convert layer entry to upper case.  If layer name is
    5 J* Q# E( v& |* d# `, k
  4875.     ;; valid, clear error string, call (laylist_act) function,
    + k: y* I# j: L2 C/ e; W7 t  J
  4876.     ;; and change focus to list box.  Else print error message.1 F) N2 O- f/ K9 A: @
  4877.     (setq layvalue (strcase layvalue))% |: y1 V6 B: p3 ]: ]
  4878.     (if (setq lay-idx (getindex layvalue laynmlst))
    / m& k+ f/ X7 m
  4879.       (progn
    , c5 m; v; |; ~$ Q1 P, ^# ~
  4880.         (set_tile "error" "")
    3 P2 m7 Q* m5 K3 A8 t1 Q. J
  4881.         (laylist_act (itoa lay-idx))
    $ v# Z" f* E/ O2 D) l7 H. C: w3 ~. `
  4882.       )
    - i" [& N. K/ ]# n# k8 A
  4883.       (progn
    " ]( p' w$ Z1 ?3 O: J7 a
  4884.         (set_tile "error" "Invalid layer name.")
    2 b! U! a/ H3 e3 Z
  4885.         (setq lay-idx old-idx)5 y  g. i% Y$ U$ O8 F" e- z5 z
  4886.       )
    % b' j1 W" P3 U6 G* c  C. ~4 N6 J! P
  4887.     )
    . |- W4 s' y) W
  4888.   )( Y. n* i2 ]* ]5 O1 R) J( H5 K
  4889.   ;;  ^1 ^2 @3 {. V+ x( L8 a' n8 `
  4890.   ;; List entry selections end up here
    4 S" B/ q' n+ X% U3 ]1 o
  4891.   ;;
    4 d/ D2 T$ r2 [8 M* N# y
  4892.   (defun laylist_act (index / layinfo color dashdata)
    ; j/ G* d6 ~! N* `" A2 H/ D: ]
  4893.     ;; Update the list box, edit box, and color tile' k, U# W; y9 H6 i9 x1 C4 `
  4894.     (set_tile "error" "")
    ( O" \6 f+ C# o2 A* R
  4895.     (setq lay-idx (atoi index))6 k0 |. w- ^! q" N& y9 Z
  4896.     (setq layname (nth lay-idx laynmlst))
    & f" H7 E  j  j2 e
  4897.     (setq layinfo (tblsearch "layer" layname))
    . K9 s8 N8 O( G; Y
  4898.     (if (= (logand (cdr (assoc 70 layinfo)) 4) 4)
    , U  Y3 S  o' s' Y& m
  4899.       (set_tile "error" "Cannot change entity to locked layer."); E# B6 K+ n  v& q, [9 D, V
  4900.       (progn7 ^: u( V! G; b# [  F% E3 m
  4901.         (setq color (cdr (assoc 62 layinfo)))
    ) a0 ?/ ~- j2 _# I- l( Y: k0 \
  4902.         (setq color (abs color))
    4 Y% g- o0 S  A' i, q. [0 f& Y
  4903.         (setq colname (colorname color))
    - z+ ?5 k1 ^1 V" `' }1 F
  4904.         (set_tile "list_lay" (itoa lay-idx))
    / X5 i& p6 X' y3 C  o3 o
  4905.         (set_tile "edit_lay" layname)
    7 S$ }; O( k1 m% i" e2 d6 {* y
  4906.         (mode_tile "list_lay" 2)# P& s" O% g6 |: ^, V# z
  4907.       )6 o* O% O' R% C' N
  4908.     )/ Z+ h5 i, E# p/ x+ i) d7 ^
  4909.   )
    2 n. D( V, u* z; U2 \; g# y* [. l! ^
  4910.   ;;
    9 T4 t8 |; l+ L4 P" e
  4911.   ;; Reset to original layer when cancel is selected/ Q+ X5 ]3 h- {, j4 u+ j
  4912.   ;;$ p. f, i6 v: l" n
  4913.   (defun reset-lay ()* M* p$ Z1 B) T# `
  4914.     (setq lay-idx old-idx)
    ! d% a4 O+ K" y) z: g* Z
  4915.     (done_dialog 0)$ Q: \# i* a+ A' P! z, C# J
  4916.   )# ^, t$ W6 {" W1 ?/ D! {
  4917.   ;;4 F/ W! I4 A  }- c; d4 h
  4918.   ;; Checks validity of thickness from edit box. Since (atof) returns 0 when a ; D. ~' b: f0 K! {9 H% J% p) \& I
  4919.   ;; string can't be converted to a real, this routine checks if the first 8 [' E/ L& L4 G; a; t
  4920.   ;; character is "0".  It also checks to see if the value equals "Varies".
    1 |8 U  A5 t7 }) [+ V
  4921.   ;;
    7 u' Y5 p/ B9 w( W
  4922.   (defun getthickness (value); L/ J0 y+ K9 A2 A9 d: a
  4923.     (setq value (strcase value))0 j8 J' y. M" @7 L. D  G
  4924.     (if (or (= value "VARIES")+ f3 B  s% i0 i' S9 G
  4925.             (distof value)
    ( x! Y9 ~$ S  P+ [
  4926.         )# q% G7 R0 ?9 v- a
  4927.       (progn( z" T8 [5 ~* n+ N) N
  4928.         (set_tile "error" "")7 ^2 L- q4 ]& s! f7 y( D
  4929.         (if (= value "VARIES")5 O( `! k9 p$ i# A! G, f) A
  4930.           (progn( P: ]6 y+ X+ B* P; j: F: ?
  4931.             (set_tile "eb_thickness" "Varies")
    8 T) x- c7 Q4 w5 J: ?3 W2 F
  4932.             (setq ethickness nil)* M# Z9 B5 b! j- h
  4933.           ). R$ G& X/ [1 `7 X  y% k7 K, i! B
  4934.           (progn0 i. B7 j4 l5 z% }" d
  4935.             (setq ethickness (distof value))' Z% E' D& M5 K0 G2 @
  4936.             (set_tile "eb_thickness" (rtos ethickness))
    ' a0 o0 F4 r& H; [8 K: A+ R
  4937.             ethickness& h* u2 a3 u+ ?& C
  4938.           )
    $ B5 z* ?( Z$ h4 Z5 W
  4939.         )
    / l7 c% v$ `7 b7 M: Q5 }5 L
  4940.       )
    ; w4 }& H6 `8 g9 Q% Z1 D$ B
  4941.       (progn
    * S( U) n- H! r; a5 O
  4942.         (set_tile "error" "Invalid thickness.")
    4 m3 U" [. `1 `. C2 z! C/ O$ w+ ]
  4943.         nil6 n9 q! H0 g3 e' L0 c% ?
  4944.       )6 D6 s' B' g" W
  4945.     )
    0 Z% G: X- q4 o
  4946.   )8 h3 A& M( Z6 u0 m
  4947.   ;;
      I+ l! a( X5 x1 F  Q, J
  4948.   ;; This function make a list called laynmlst which consists of all the layer
    2 n  X2 E+ F, V; X0 |8 P5 ]
  4949.   ;; names in the drawing.  It also creates a list called longlist which : a5 j; G% }. y9 Q* f2 k& w
  4950.   ;; consists of strings which contain the layer name, color, linetype, etc.  " e4 N9 o7 `  v  L' s8 g5 T3 ~0 S
  4951.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the + U9 Q  l7 k6 c' K- ^" x
  4952.   ;; same.
    / L9 a6 B& o+ K" H& l4 J8 d; M
  4953.   ;;
    4 f9 ?0 V0 w0 p6 T8 F% ?3 E
  4954.   (defun makelaylists (/ layname onoff frozth color linetype vpf vpn ss cvpname
    8 ]4 ?+ ?# F. b, S$ w' [
  4955.                          xdlist vpldata sortlist name templist bit-706 w2 {( ?6 {5 I/ O, v2 Q/ P1 m
  4956.                       )$ s, [! e' A3 B) e8 q
  4957.     (if (= (setq tilemode (getvar "tilemode")) 0)2 X" B  Y: [! Z
  4958.       (progn
    8 n$ F) Z1 z+ K
  4959.         (setq ss (ssget "x" (list (cons 0 "VIEWPORT"), A* F& f* \5 O0 O8 {. g* L- c
  4960.                                   (cons 69 (getvar "CVPORT"))' r/ `  M  V* u  j: ?7 }  \
  4961.                             )" Y8 n/ Y8 e5 {  F) N0 E
  4962.                  )
    / Q( c4 _" m2 g2 C9 J, H9 T2 G5 t
  4963.         )     / |$ r" @6 c. ]. w+ H, u
  4964.         (setq cvpname (ssname ss 0))6 ]& c" P8 [3 O3 b% @- S. v: w# E
  4965.         (setq xdlist (assoc -3 (entget cvpname '("acad"))))- w1 |6 `3 j3 S4 M$ W9 W
  4966.         (setq vpldata (cdadr xdlist)): R) i  }2 x' {: ]
  4967.       )$ B, i% e( n) h' u% ]! p# {' S5 l
  4968.     )- q2 ?, n8 b+ k8 H- h4 u5 t* n
  4969.     (setq sortlist nil)& @- }/ U$ [& \9 n8 Q
  4970.     (setq templist (tblnext "LAYER" T))9 R4 s. p; V1 C0 f- E: ]
  4971.     (while templist8 v, C3 H: ~& M2 ~1 F
  4972.       (setq name (cdr (assoc 2 templist)))3 k" Q+ F/ P& P, n' u3 d
  4973.       (setq sortlist (cons name sortlist))+ P9 N- m* I. L: g
  4974.       (setq templist (tblnext "LAYER"))8 z/ y6 V) ~  S3 c0 W4 c
  4975.     ) 8 h# v& g+ @% N& T
  4976.     (if (>= (getvar "maxsort") (length sortlist))0 K3 y9 U8 ~% l7 W& N' n4 D
  4977.       (setq sortlist (acad_strlsort sortlist))6 ?# ^9 L# a+ J; H4 t( f
  4978.       (setq sortlist (reverse sortlist))6 {( R, r. }' z0 A! x$ W
  4979.     )
    , d" y' [* z! U! u5 q
  4980.     (setq laynmlst sortlist)
    5 d$ Z$ Q2 A/ t7 o( _" O
  4981.     (setq longlist nil)
    0 @8 J7 f% a6 u  ~
  4982.     (setq layname (car sortlist))
    ; Y" G1 q3 e4 k9 e1 ]) @
  4983.     (while layname; h" Y$ t/ j* i% D, B" ?
  4984.       (setq laylist (tblsearch "LAYER" layname))" X" _+ r& g' l  q7 J
  4985.       (setq color (cdr (assoc 62 laylist)))
    6 Z0 O4 G- l9 w) t# [0 g% o8 `/ p8 R# P
  4986.       (if (minusp color)
    7 X  }0 I7 A7 ^/ `. o
  4987.         (setq onoff ".")
    % i: r5 {3 y# d& K
  4988.         (setq onoff "On")3 Z# N, H" a5 X
  4989.       )
    " E5 W- W' ^3 Y9 C/ C& S! v
  4990.       (setq color (abs color))9 z2 V! E  Y" }% B5 o; b, ?- D
  4991.       (setq colname (colorname color))4 t8 w0 f, M( `
  4992.       (setq bit-70 (cdr (assoc 70 laylist)))+ l: [, E' _4 M  D: D8 Q$ P
  4993.       (if (= (logand bit-70 1) 1)
    . {- f6 `$ l2 w7 `8 p9 J
  4994.         (setq frozth "F" fchk laylist)
    / \6 u. C, {* E' a6 A; w3 P
  4995.         (setq frozth ".")
    7 D. _$ P" x# D% {8 _5 a$ D. o  ]( X" y
  4996.       )
    2 V- V+ e3 S+ p
  4997.       (if (= (logand bit-70 2) 2)2 H" O+ Z: W' b4 L) T! {1 m1 P
  4998.         (setq vpn "N")( s4 z" K' h4 B9 U# D* Q
  4999.         (setq vpn "."); i; T& ^, Y/ E+ [8 |/ Y
  5000.       )
    0 a. ~+ O% I5 Z% D; H# v
  5001.       (if (= (logand bit-70 4) 4)
    * X# k6 X; @* Z  l. l0 _( b
  5002.         (setq lock "L")- \# w1 Q! A$ |# R1 Y2 ~
  5003.         (setq lock ".")
    3 _' |; ]( E1 c, ]: o% v
  5004.       )# B6 K8 i- ]* I
  5005.       (setq linetype (cdr (assoc 6 laylist)))( h) H: c  D( h4 O" Q' b4 ~
  5006.       (setq layname (substr layname 1 31))! x2 E. S2 W+ _- P) x" H: L( _
  5007.       (if (= tilemode 0)
    ( k! }* e! n$ \/ y8 N
  5008.         (progn7 X6 @3 H$ V& D$ V9 q7 |/ V: c& V
  5009.           (if (member (cons 1003 layname) vpldata)# D( m* V+ m- H7 ^& x
  5010.             (setq vpf "C")
    - M5 d$ i+ s/ j4 o+ N* A
  5011.             (setq vpf ".")
    : u& _, ^5 ^2 K+ m6 u1 ?# G
  5012.           )1 e8 l! t$ N" i4 t! v$ M
  5013.         )! H  @0 f' \% T9 u$ ~
  5014.         (setq vpf ".")% h* R* p, V6 E; s
  5015.       )! X" |2 n) q$ i' }8 y
  5016.       (setq ltabstr (strcat layname "\t"
    8 V# ~$ t5 s( |6 k/ l
  5017.                               onoff "\t"2 |6 E: s; K" |1 @" f; M3 H+ p
  5018.                              frozth "\t") F. s5 L5 j+ O% Z
  5019.                                lock "\t": q9 k8 j$ m  U  m& @2 Y2 _
  5020.                                 vpf "\t"
    $ ]1 b) l- }; R
  5021.                                 vpn "\t"# Z. q1 x' p/ s8 V- A
  5022.                             colname "\t") O; K+ a, ~3 I5 V4 v) `
  5023.                            linetype3 c; S) v+ d/ c  B3 [
  5024.                     )! r' C# R9 Z4 [/ H' C
  5025.       )
    $ q+ ?! O4 a. ?5 e& p! Q
  5026.       (setq longlist (append longlist (list ltabstr)))6 k8 C" O' L& b5 \- k
  5027.       (setq sortlist (cdr sortlist))3 F, \$ a7 v0 ]7 g/ P
  5028.       (setq layname (car sortlist))& y4 E( L6 G! ]+ |) W: V) A, X
  5029.     )
    9 v# d# L! Y8 }3 v8 _0 D5 r# g
  5030.   )
    $ v% A9 o- i# X/ _: T
  5031.   ;;; F2 S7 S: C6 k$ ~$ Z$ p8 b. N
  5032.   ;; This function makes 2 lists - ltnmlst & mdashlist.  Ltnmlst is a list of
    + y3 D1 |0 R) m8 _( n) v
  5033.   ;; linetype names read from the symbol table.  Mdashlist is list consisting 4 d5 m; c! ~7 q7 [- q
  5034.   ;; of lists which define the linetype pattern - numbers that indicate dots, ! m( G; a' i+ k) s- n1 B" o
  5035.   ;; dashes, and spaces taken from group code 49.  The list corresponds to the
    ; O! N1 m$ r& s8 N5 O3 N
  5036.   ;; order of names in ltnmlst.7 l4 w* ?9 H5 n+ r8 I6 w
  5037.   ;;8 N' b7 v8 C, x* C1 B% d1 g
  5038.   (defun makeltlists (/ ltlist ltname)* E3 @+ H' Z4 U1 t! w; Q5 `
  5039.     (setq mdashlist nil)
    % e7 M; q' Q- V6 F, K- M8 U
  5040.     (setq ltlist (tblnext "LTYPE" T))
    ; L4 X: w, [9 U. @
  5041.     (setq ltname (cdr (assoc 2 ltlist)))
    : A6 c+ A5 t2 K- Q, |2 u6 j) W
  5042.     (setq ltnmlst (list ltname))- U! v" L( }- ?9 d

  5043. * q, v% d, N7 [) ~4 d/ k" p% w" ]
  5044.     (if (= ltname "CONTINUOUS")
    ! r5 n  ]8 Y0 B4 W! o
  5045.       (setq mdashlist (list "CONT"))
    1 c8 Z2 y3 g* N; W7 u5 M' `( B. P
  5046.       (setq mdashlist 0 \& z# Z1 D2 G$ m
  5047.             (append mdashlist (list (add-mdash ltlist))). }5 `: E, A7 m- `  W
  5048.       )
    9 |, r" l; f0 i0 T6 l
  5049.     )& ^% B8 m3 [1 S) v5 x2 V1 p
  5050.     (while (setq ltlist (tblnext "LTYPE"))
    / t5 g" G3 U5 [7 J0 S: ^+ X1 E
  5051.            (setq ltname (cdr (assoc 2 ltlist)))
    * M; k- n3 D3 b5 a$ {" u& x; _
  5052.            (setq ltnmlst (append ltnmlst (list ltname)))$ b$ L( A8 U7 o. b
  5053.            (setq mdashlist . Q& {% y, h( z7 `# C0 Y. n
  5054.                 (append mdashlist (list (add-mdash ltlist)))! X) d9 N1 e1 q7 D
  5055.            )0 s. U! M, `& V, n5 m1 v
  5056.     )! a7 s1 R' P# J# J! u9 U) i$ @% @% z) P" O
  5057.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))- p( }. u$ ?- p9 i( X2 R
  5058.     (setq mdashlist  (cons nil mdashlist))- A4 n! I  R2 l: Y; B* i. c  D4 q
  5059.     (setq ltnmlst (cons "BYLAYER" ltnmlst))9 V! C) b  G( @* a! ]
  5060.     (setq mdashlist  (cons nil mdashlist))
    7 B* j4 Y" g# o" v
  5061.   )
    3 U# t# `! m8 t. W
  5062.   ;;9 M0 e! Y5 z5 @5 X$ O6 E8 ~3 U
  5063.   ;; Get all the group code 49 values for a linetype and put them in a list
    , T. \* L. z/ C4 }3 m
  5064.   ;; (pen-up, pen-down info)" w5 E2 G* x) R5 l* q: j3 ~
  5065.   ;;2 O7 D# o, y' h+ T2 e
  5066.   (defun add-mdash (ltlist1 / dashlist assoclist dashsize), t9 _2 s2 s1 x& c
  5067.     (setq dashlist nil)% ~! p0 p$ u9 p1 B# }) @- Y8 j6 a
  5068.     (while (setq assoclist (car ltlist1))* _0 P* ^1 [$ _3 x) d" E
  5069.       (if (= (car assoclist) 49)0 f# n. w. }: f; w6 T4 c
  5070.         (progn/ T- L7 g: W4 b$ F  M
  5071.           (setq dashsize (cdr assoclist))
    8 \" s  y# ]. u. B9 @" L' o" z
  5072.           (setq dashlist (cons dashsize dashlist))' M" E" i9 T3 ^( e% b* w
  5073.         )
    3 P5 T- \8 G# L0 J
  5074.       )4 l/ m" y) j7 R( s
  5075.       (setq ltlist1 (cdr ltlist1))
    ' r! V6 d: k. A! R
  5076.     )* e' Q2 x8 U! d3 u& |, f2 k( D
  5077.     (setq dashlist (reverse dashlist))
    / L: h/ Q7 p. Q; v! h+ T1 l
  5078.   )
    7 \! {. ]( A% Z, \6 @% }
  5079.   ;;
    % }. o4 b, z; Z6 F8 z
  5080.   ;; Color a tile, draw linetype, and draw a border around it
    $ [8 G0 j1 J! I+ h1 p/ V) x! [8 b
  5081.   ;;
    : t+ q/ n" ^* _0 y
  5082.   (defun col_tile (tile color patlist / x y)- D; o$ M, S5 f7 {: w6 P
  5083.     (setq x (dimx_tile tile))
    9 j7 O9 v4 r" ^% Q) j
  5084.     (setq y (dimy_tile tile))5 I* T# b! g" }
  5085.     (start_image tile)! q: R( i* D( c  y
  5086.     (fill_image 0 0 x y color)
    7 }9 A! F8 ?7 Q3 I; U( Z
  5087.     (if (= color 7)
    $ Z1 p4 a6 u2 L: t4 C- W+ v
  5088.       (progn' {. u" G4 Y4 ?( t: F4 M3 d
  5089.         (if patlist (drawpattern x (/ y 2) patlist 0))
    - }) j  g" x+ W, U
  5090.         (tile_rect 0 0 x y 0)
    8 h1 C3 j& A- V# E% L: R
  5091.       ): Q9 u' X; s4 u2 L1 G. U
  5092.       (progn" D) S+ t& E0 o
  5093.         (if patlist (drawpattern x (/ y 2) patlist 7)); z( L8 w: r5 l) N
  5094.         (tile_rect 0 0 x y 7)* `- y2 Z* V: _5 T( W6 m/ g( l7 k
  5095.       )! U: T. z* r% |5 G. Y
  5096.     )
    & S& W7 S3 R6 J. v
  5097.     (end_image). G' p2 ]$ Z; |# W* P1 K1 _0 P
  5098.   )
    . V. J% c1 \2 e! ^7 c/ @# f* U' Q
  5099.   ;;0 i: a" T' ?' U' H8 d
  5100.   ;; Draw a border around a tile4 |3 z1 R9 R6 b4 }1 }
  5101.   ;;  ^7 q, k% s' Z* j' G
  5102.   (defun tile_rect (x1 y1 x2 y2 color)
    5 K, S5 i. }7 z: s- [
  5103.     (setq x2 (- x2 1))6 s+ G$ s. ~  w8 Z, c5 K- N
  5104.     (setq y2 (- y2 1))  K+ T% r  P8 y2 x( A. w0 E
  5105.     (vector_image x1 y1 x2 y1 color)
    + s' c4 ~( B3 s) e6 P  L8 P( f) I3 z
  5106.     (vector_image x2 y1 x2 y2 color)5 @4 Z5 A+ _3 T' e# ^  V( f. G
  5107.     (vector_image x2 y2 x1 y2 color)
    / l) b. i7 ~" q$ w& }
  5108.     (vector_image x1 y2 x1 y1 color)5 s8 `  P. P- K" S$ m* l6 Y/ O
  5109.   )1 A" u/ c4 X! F& c! S
  5110.   ;;8 z- a. T9 u) j: [) `
  5111.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image * w2 J9 C9 d; |8 N$ J# L( r  H
  5112.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a
    8 S9 I( |$ u$ i7 I1 x
  5113.   ;; list of numbers that define the linetype, and color is the color of the & r4 T& U# I, Q- H8 e( e0 ~
  5114.   ;; tile.
    , ]/ A- B0 V* S8 ~3 Z3 a* w% ^
  5115.   ;;# F+ }+ F% o7 L, X# o, @/ _
  5116.   (defun drawpattern (boxlength y2 pattern color / x1 x2
    ; h1 c; `5 N3 t, v. O/ A0 U
  5117.                       patlist dash)3 g9 X9 s, o/ n
  5118.     (setq x1 0 x2 0)9 Y1 }$ d; y. V' k& C4 x5 O
  5119.     (setq patlist pattern); {1 O" o9 ^0 L( y1 G6 q- }
  5120.     (if (= patlist "CONT")& p* V9 f) B# i
  5121.       (progn
    ; Q! r" _- {7 K, y  X
  5122.         (setq dash boxlength)
    9 W' S- v6 F3 i8 t$ ]- O- t' z
  5123.         (vi)
    0 |  D# ]- }9 u" l8 N% s
  5124.         (setq x1 boxlength)7 N0 M5 D" U+ M
  5125.       ), B# e2 B+ B6 v6 m4 @- v3 o
  5126.     )  o4 |  a9 v% |* k
  5127.     (while (< x1 boxlength)
    7 u$ V! ^, A9 O. }; F0 T
  5128.       (if (setq dash (car patlist))' v) l' N* j* d. ]4 g8 S; D. s
  5129.         (progn* j1 [4 F% X8 f- G4 x. |
  5130.           (setq dash (fix (* 30 dash)))4 f5 U) b: V- k  O# s
  5131.           (cond - B- y/ E5 S3 h( ?8 ^) [6 G5 e- j
  5132.             ((= dash 0) 8 y0 Z1 P# }4 l9 T9 X7 R
  5133.               (setq dash 1) 6 ~+ o. j6 t  P
  5134.               (vi)
    / k0 g# z  _- w" U( D, b
  5135.             )
    - Q2 y7 _5 K, Y% q( F
  5136.             ((> dash 0) # Z/ d. F/ S% y1 R/ @
  5137.               (vi)7 y& k- u0 X# G. Z* a1 U6 Z* y
  5138.             )( X- B$ T3 z0 a1 b
  5139.             (T
    3 O+ c- c. }% h3 v% X/ `7 q" \
  5140.               (if (< (abs dash) 2) (setq dash 2))# O9 y9 E/ m+ S( L* J, E# d
  5141.               (setq x2 (+ x2 (abs dash)))1 X8 W/ w4 X- v/ c
  5142.             )0 Q1 r  j4 {2 N
  5143.           )
    5 M! m, B% J$ h9 x, m0 a, e$ B
  5144.           (setq patlist (cdr patlist))3 b0 m% [. V4 T) ~
  5145.           (setq x1 x2)1 y6 b& T1 v3 M9 @1 w* ?. d7 ?
  5146.         )1 X  {" B8 ~: i4 a3 X, c
  5147.         (setq patlist pattern)/ Q0 F4 C- G2 }/ J: d
  5148.       )
    5 M* Y0 V8 R. z
  5149.     )4 h: t% ?# M. U" ~1 j1 I
  5150.   )$ g, j, z. L  c7 F
  5151.   ;;
    8 |2 D! f: Q/ e8 U( k! f: L
  5152.   ;; Draw a dash or dot in image tile2 W* |' S4 o, b  r- ~6 r  Z% ]6 \) ^
  5153.   ;;$ F% P  @+ Q8 u" k
  5154.   (defun vi ()" P  T( V8 D$ A: |. J. E3 A
  5155.     (setq x2 (+ x2 dash))
    # n' @. Q: I, R5 \
  5156.     (vector_image x1 y2 x2 y2 color)
    : H# {, O" f9 l/ ^, e% T
  5157.   )
    , r. |6 g/ ?4 N6 A
  5158.   ;;
      G" E: l* |; C4 B
  5159.   ;; This function takes a selection and returns a list of the color, linetype, 0 s& b) c' e4 `+ F8 m
  5160.   ;; layer, and thickness properties that are common to every entities in the
    6 w7 o5 V* b" N. O
  5161.   ;; selection set - (color linetype layer thickness).  If all entities do not 4 f' b  S1 C1 ], _4 h$ u8 J
  5162.   ;; share the same property value it returns "Varies" in place of the
    . B9 t5 u. Y! _  f: R
  5163.   ;; property value.  i.e. ("BYLAYER" "DASHED" "Varies" 0)
    & `4 g( o- }9 T# D
  5164.   ;;
    0 ~, T  d; G! `  U" B$ T( p
  5165.   (defun getprops (selset / sslen elist color ltype layer
    ! \3 j9 n# i  w
  5166.                             thickness go chk-col chk-lt chk-lay chk-th ctr)
    $ k  s2 R& l7 N* D( ^
  5167.     (setq sslen (sslength selset))2 h4 k- W, |0 d
  5168.     (setq elist (entget (ssname selset 0)))
    % T& ]0 I8 u& p4 w" X: k
  5169.     (setq color (cdr (assoc 62 elist)))
    3 G8 g. h/ b' W, D
  5170.     (if (not color) (setq color 256))
    ; F; r" F$ k5 L" f& E( _
  5171.     (setq ltype (cdr (assoc 6 elist)))! I$ f& o! _( g
  5172.     (if (not ltype) (setq ltype "BYLAYER"))
    . a; e9 e+ p: ^
  5173.     (setq layer (cdr (assoc 8 elist))), s. K7 {4 M3 U. e
  5174.     (setq thickness (cdr (assoc 39 elist))): D+ G" D6 u2 c$ ~: v
  5175.     (if (not thickness) (setq thickness 0))3 A! W& Z- q" y# n. n
  5176.     (setq go T chk-col T chk-lt T chk-lay T chk-th T ctr 1)
    8 c( x" d, F3 C/ \# K
  5177. # {; s7 X; b! s5 q! M
  5178.     ;; Page through the selection set.  When a property
    2 o% _5 q# W+ P( y
  5179.     ;; does not match, stop checking for that property.4 u- V4 O: t3 _/ N6 r6 s0 m
  5180.     ;; If all properties vary, stop paging.
    . b5 s4 s7 ?. l* j- M- H/ L1 j- M

  5181. 9 S  q' r' F: D4 Y
  5182.     (while (and (> sslen ctr) go)
    & f) `' G! C5 N  k$ E4 K  |
  5183.       (setq elist (entget (setq en (ssname selset ctr))))
    1 T  Y3 ]" {* y- J& `
  5184.       (if chk-col (match-col))
    ) @* A" Z% i3 `) d8 |5 |
  5185.       (if chk-lt (match-lt))
    ( V; j  u' X. E5 |" x9 S
  5186.       (if chk-lay (match-lay))
    ' {9 l! x. _1 C0 a/ r" Y
  5187.       (if chk-th (match-th))* i6 A' X, h' ?" Z  D  L
  5188.       (setq ctr (1+ ctr))
    ! X  g; k' O  J5 B8 d2 ]
  5189.       (if (and (not chk-col) (not chk-lt) (not chk-lay) (not chk-th))1 O7 k. G; ~) K' O* o4 i+ n3 Y
  5190.         (setq go nil)
    4 Y! \9 B, l4 K9 |- X' l  b
  5191.       )3 }3 a. r  _( K2 f/ ~( u/ k
  5192.     )  i6 N& F9 f" `: N- f. Z) M
  5193.     (list color ltype layer thickness). }0 q4 ?0 b0 d) h
  5194.   )- ]+ b4 D1 @+ N% h; b/ h9 d9 b
  5195. % c! A! I/ \  Y. s6 ~+ J: i3 a
  5196.   (defun match-col (/ ncolor)
    " Z" w3 e& J/ N! }. Q
  5197.     (setq ncolor (cdr (assoc 62 elist)))
    * Z; }* ]9 O+ p3 u4 J8 V# b
  5198.     (if (not ncolor) (setq ncolor 256))
    # v' q. A7 Q( L. @2 |) j( N
  5199.     (if (/= color ncolor)  v! ]4 A: E3 f
  5200.       (progn
    0 ^4 ^  e% u. [1 ^( \" [2 W
  5201.         (setq chk-col nil)% a0 d2 w2 }* D7 j) A
  5202.         (setq color nil)
    * s7 i+ o5 w/ s+ ^: [2 P
  5203.       )$ M1 G( A: |' n* r9 i/ i. m' G7 N
  5204.     )
    " P, K+ a# j3 G: `( L% e* H3 ]- }
  5205.   )
    4 o; A) u. C. Z* d( [

  5206. ' V% @6 A5 [% H; P1 r7 }; ]' J
  5207.   (defun match-lt (/ nltype)
    ; y' |9 D  B& s* D3 p% f) D; a) @
  5208.     (setq nltype (cdr (assoc 6 elist)))1 |6 [  m$ N! \
  5209.     (if (not nltype) (setq nltype "BYLAYER"))2 k% C  B3 s  R5 }  h  Q  f
  5210.     (if (/= ltype nltype)" S# D2 y6 a9 z% z; w% g1 d( {
  5211.       (progn& F' `- P9 w5 b$ f5 q+ _: q
  5212.         (setq chk-lt nil); \# \4 W) |5 k8 Y/ e8 P9 m
  5213.         (setq ltype "Varies")1 c0 n( h% f; u
  5214.       )6 G0 d  u9 S; o( p* ?
  5215.     )" P& d9 `5 b! \9 F( \
  5216.   )" {, ]( D1 |' W( u
  5217. 3 X- ?! _4 }3 |, q; S2 x% I
  5218.   (defun match-lay (/ nlayer)# Z5 y8 r) }0 F) J0 J% A$ b" a# }
  5219.     (setq nlayer (cdr (assoc 8 elist)))4 L' |* K, I$ B% ?% Q3 q# Z: U& E
  5220.     (if (/= layer nlayer)8 Z) u, B  @; L7 D! w! b3 R0 s
  5221.       (progn
    / t( H8 n$ N5 n2 x9 O& [$ c
  5222.         (setq chk-lay nil)
    ; a' g- Z5 O2 k7 Y1 I( [
  5223.         (setq layer "Varies")
    2 ]5 S) q: ]6 M! Y* {8 A: j
  5224.       )$ m% q% t+ [" c6 X& v
  5225.     )" R4 h! H, M! j
  5226.   )
    ! z& A( s% Z' Z: T
  5227. 2 |" s& p  ^9 h# F8 S
  5228.   (defun match-th (/ nthickness)6 V7 m& I5 G& F) o/ B& R: H& s
  5229.     (setq nthickness (cdr (assoc 39 elist)))
    , W; ?) a" N& G
  5230.     (if (not nthickness) (setq nthickness 0))/ G8 x. z. r' L" M0 S4 [" j4 D
  5231.     (if (/= thickness nthickness)$ B% O  p" e7 E, W( c
  5232.       (progn
    $ S! K9 E$ d* w) O; n
  5233.         (setq chk-th nil)( {$ g2 q9 M% o$ e" @2 r
  5234.         (setq thickness "Varies")
    * _% k. ^, x8 x% d* d" G* r* v0 W
  5235.       )
    : N  L3 O2 G( r3 p9 f/ I
  5236.     )- k2 z5 O4 a, K4 j+ K) Z
  5237.   )
    ( e- I1 B& c4 m+ u. `4 Z

  5238. ! c- A3 x# t7 ?; R
  5239.   ;;5 I' t5 x! p5 \/ O  l4 T4 E' W
  5240.   ;; If an item is a member of the list, then return its index number, else
    2 n/ K" Z# Y2 ~
  5241.   ;; return nil.
    : b! j& d) p! m' m9 a- R0 x! D
  5242.   ;;
    % G/ ~/ _- F  M$ s1 i8 _
  5243.   (defun getindex (item itemlist / m n); u0 e: q: {; n% u0 I: L
  5244.     (setq n (length itemlist))
    ( }% S5 z) r* T7 @9 @% C/ ?
  5245.     (if (> (setq m (length (member item itemlist))) 0)
    % s3 ?1 y% K9 x) w) `
  5246.         (- n m)5 k, v6 G9 }, r0 |8 W. s
  5247.         nil9 k4 l- R8 u; u( @) V
  5248.     )1 b& M- ]4 g" e# L/ C
  5249.   )/ a2 L  ?2 P7 j: d2 @
  5250.   ;;
    5 u& g5 m" I$ l: |
  5251.   ;; This function is called if the linetype is set "BYLAYER". It finds the
    7 z+ _% y" v; Z; A" Y" W; n  X
  5252.   ;; ltype of the layer so it can be displayed beside the linetype button.
    1 n& `2 B/ D' E9 h: U2 s9 c
  5253.   ;;
    3 {8 F- S; s- G, z
  5254.   (defun bylayer_lt (/ layname layinfo ltype)
    : M( i0 @7 R" x7 _
  5255.     (if lay-idx
    / Z! w" H! K- G% E& o# ]6 A+ }
  5256.       (progn
    , z/ i8 N  M' _  ]) ?  L
  5257.         (setq layname (nth lay-idx laynmlst))  ~* b* S+ e) K0 K1 r
  5258.         (setq layinfo (tblsearch "layer" layname))& p8 `' x0 |. K% O) Y
  5259.         (setq ltype (cdr (assoc 6 layinfo)))+ D) Z2 B, z, V: V+ ~
  5260.         (strcat "BYLAYER (" ltype ")")
    $ Q4 ]6 E  Y4 F  d
  5261.       )
    0 y0 O+ P: N. R% ]7 E8 h
  5262.       "BYLAYER"& }+ n% A2 m3 \9 v9 x
  5263.     )
    7 i2 `' P) q' J( @* L7 ?. l) c
  5264.   )
    / l+ U6 x: v2 S6 Q
  5265.   ;;5 @  @- u1 R3 h, F4 i
  5266.   ;; This function is called if the color is set "BYLAYER".  It finds the 0 j$ m' s4 q5 H  [; k) E8 h2 S
  5267.   ;; color of the layer so it can be displayed  beside the color button.9 B' N! d2 ^/ _0 y& \% p
  5268.   ;;( V2 S# m( v+ v1 E
  5269.   (defun bylayer_col (/ layname layinfo color)
    1 ^1 n& t: A* X: T/ \
  5270.     (if lay-idx2 h6 P: B  ?( O- @6 u" t
  5271.       (progn5 ?# h: D+ p. c3 }" }7 g8 l
  5272.         (setq layname (nth lay-idx laynmlst))2 O1 a: k& l2 a2 c, g
  5273.         (setq layinfo (tblsearch "layer" layname))& w/ f" p% L! b. U6 ?
  5274.         (setq color (abs (cdr (assoc 62 layinfo))))
    + k3 L; y; ^8 c5 J: j
  5275.         (setq cn color)
    ! p; h3 v7 ~- l5 p) Z. p' ?& i
  5276.         (strcat "BYLAYER (" (colorname color) ")")
    5 f* b( I! r4 y6 O
  5277.       )% _- V. q1 E5 o" y2 N/ u# K
  5278.       (progn+ |; g" t6 E3 I* V
  5279.         (setq cn 0)1 n: o5 B1 T4 d0 n7 D% a
  5280.         "BYLAYER"
    ( `* C) O. o) M
  5281.       )/ L; ~: A0 p1 S. f0 f9 w: |& t/ C
  5282.     )
    / ~1 F7 Z) n' B, M7 H+ G' E
  5283.   )
    * T+ \* T, i; s/ j& e2 r
  5284.   ;;
    / b! e2 j- E0 H, [  j& \
  5285.   ;; If there is no error message, then close the dialogue
    1 a- a8 m; m0 `( O
  5286.   ;;
    - D9 j2 Q" q. h; @: P
  5287.   ;; If there is an error message, then set focus to the tile
    7 ~, k3 I* E* p0 s' N* \
  5288.   ;; that's associated with the error message.; k+ ~( e. \0 G+ y6 \) n
  5289.   ;;  @* X5 z, m! O
  5290.   (defun test-ok ( / errtile)$ q" d+ G0 G' w$ N
  5291.     (setq errtile (get_tile "error"))
    . U* F% ]+ u+ B4 ~
  5292.     (cond' K* m+ j3 }$ V! Y1 J+ l
  5293.       (  (= errtile "")9 X6 \: M8 A5 A; m8 u+ P# S; l9 L6 m
  5294.          (done_dialog 1))
    : b0 M! W" P- }
  5295.       (  (= errtile "Invalid thickness.")( r. Y  K: w, a* V4 e/ R: V; p
  5296.          (mode_tile "eb_thickness" 2))
    / q+ T6 L, j1 D( c) v! D( J6 m+ @) ^
  5297.     )+ l/ x* A. p6 Y2 q
  5298.   )3 e% c2 d! K! A" X( m4 X
  5299.   ;;) x0 T+ {4 i& @" A! X; ^0 Q
  5300.   ;; A color function used by getlayer.
      L+ ^% l) |: {# k1 v" o5 W" F7 Z
  5301.   ;;& c$ M& H8 R8 s) t9 u. {
  5302.   (defun colorname (colnum)
    " h8 p; C0 K; O
  5303.     (setq cn (abs colnum))/ v* {" z. l- n
  5304.     (cond ((= cn 1) "red")8 ?; q" G( p. o3 J: C8 c
  5305.           ((= cn 2) "yellow")
    # G7 `8 [4 |! d- X( }9 _5 [& {
  5306.           ((= cn 3) "green")
    7 r3 {+ U% g8 v0 W7 Z3 \, U
  5307.           ((= cn 4) "cyan")9 l- X/ F6 y$ K
  5308.           ((= cn 5) "blue")* l! E, T8 b8 m/ H: m" F& X# J: o, X
  5309.           ((= cn 6) "magenta")
    9 e+ F9 N3 w' ^
  5310.           ((= cn 7) "white")8 t' X+ k( h1 R$ L
  5311.           (T (itoa cn))
    / c! @$ v* V9 d( H
  5312.     )2 c, A3 z$ z7 q) {" k% V
  5313.   )' ^! @5 Q) x4 ?8 O5 Q. V& J
  5314. 0 d9 \, [) Z2 R) P" u, d
  5315. ;;; Construct layer and ltype lists and initialize all
    . R3 h$ q8 ]# a* g2 l
  5316. ;;; program variables:
    4 N4 Z; n; ?3 i" P. \; H8 s
  5317. 7 m3 o/ N( a2 |
  5318.   (makelaylists)                     ; layer list - laynmlst# A  V1 e" n5 ]3 T" Q9 V
  5319.   (makeltlists)                      ; linetype lists - ltnmlst, mdashlist
    : J2 ]9 \- Q* _) ?- ~/ E  a
  5320.   ;; Find the property values of the selection set.
    , ]/ `. {8 K2 u. h6 ^9 R
  5321.   ;; (getprops ss) returns a list of properties from- ~# `1 _& K2 n. I  O: `
  5322.   ;; a selection set - (color ltype layer thickness).
    3 O& t- A, B" i3 W1 ]; t& [$ k
  5323.   (setq proplist (getprops ss))$ `! h3 m6 P) P4 C; V0 ~
  5324.   (setq ecolor (car proplist))
    & m3 E' h. t8 F: k: h  }
  5325.   (setq eltype (cadr proplist))
    # o6 Z3 p6 a) `3 z, T
  5326.   (setq elayer (caddr proplist))* ~( d4 p7 @; S" ?% o
  5327.   (setq ethickness (cadddr proplist))# i( n) {2 U5 s+ [1 f
  5328.   ;; Find index of linetype, and layer lists
    8 C6 B" N! N7 n% h  g7 [/ k: m
  5329.   (cond
    " H# q4 T. m. n3 D2 N0 P0 g
  5330.     ((= eltype "Varies") (setq lt-idx nil))
    % `9 t1 A# M7 ?, U7 u# `2 N$ g
  5331. ;   ((= eltype "BYLAYER") (setq lt-idx (getindex "BYLAYER" ltnmlst)))1 _2 R+ |0 Q4 ]' d! K$ G
  5332. ;   ((= eltype "BYBLOCK") (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
    % f3 V9 H& D. H$ Q$ s) Q5 ]2 A6 Z
  5333.     (T (setq lt-idx (getindex eltype ltnmlst)))
    ; T: s" J3 L/ G% W9 E8 z$ |3 S' m0 t
  5334.   )
    7 k+ j7 C; O. p/ u
  5335.   (if (= elayer "Varies")8 s- ?# _( U' S3 w- J6 F4 H! o3 `
  5336.       (setq lay-idx nil). o2 h1 }" c9 L) ]4 Q
  5337.       (setq lay-idx (getindex elayer laynmlst))) L7 q0 B/ P$ z! f7 P; g
  5338.   )
    % p! x/ d+ G+ ~. B0 m
  5339.   (if (= ethickness "Varies"). S* s3 L9 y+ V! z  H
  5340.       (setq ethickness nil)0 s) n) g7 Z: j% X
  5341.   )
    4 e; N5 ^7 _8 [( m, {$ t1 l/ `

  5342. 0 ?5 u- v  @  x2 S3 ~
  5343. )   ; end (ddchprop_init)
    * M' F+ X# n8 W. G. W; }( J
  5344. # h7 x: O" |1 R4 {4 Q
  5345. ;;; (ddchprop_select)
    % c! ~3 S: W. b0 J6 b* T
  5346. ;;;
    4 F1 p0 N3 `4 t* J& Q: v
  5347. ;;; Aquires selection set for DDCHPROP, in one of three ways:
    . @6 F0 h+ c* Y* r7 f7 V
  5348. ;;;
    : _( N& u8 A, a7 M3 o! s
  5349. ;;;   1 - Autoselected.
    + p! J8 n9 ?6 P- W. T
  5350. ;;;   2 - Prompted for.
    ; W) ?! P/ R5 {, \; `) O5 `
  5351. ;;;   3 - Passed as an argument in a call to (ddchprop <ss> )1 n3 t7 c: C# R
  5352. ;;;
    . x2 Z6 V# V) Z
  5353. ;;; The (ddchprop_select) function also sets the value of the) W# h0 S3 w) J
  5354. ;;; global symbol AI_SELTYPE to one of the above three values to% t3 S/ A; v) P% c1 \7 e9 M
  5355. ;;; indicate the method thru which the entity was aquired.
    6 U' D% `/ x! ]
  5356. 0 C& }& W4 P: n# l( |6 y2 w

  5357. 1 I1 B4 M( ]5 M- }# W' B" J/ x
  5358. (defun ddchprop_select ()8 {' ?1 w1 t0 i, G$ q: J/ j5 }! |
  5359.    (cond
    0 u6 M9 T% u2 g, N' s* p: j
  5360.       (  (and ss (eq (type ss) 'pickset))        ; selection set passed to
    . d' t! W& o3 t5 |- Q
  5361.          (cond                                   ; (ddchprop) as argument" t/ C- y. |$ @: T6 @
  5362.             (  (not (zerop (sslength ss)))       ;   If not empty, then7 A! z7 I5 O6 f& U$ N
  5363.                (setq ai_seltype 3)               ;   then return pickset.2 M* b, \4 l# d3 |. a2 ~2 L
  5364.                (ai_return ss)))), o  R8 S( K) m* r- P  [
  5365.   G3 Z5 B7 z/ t: ]) ?" W
  5366.       (  (ai_aselect))                          ; Use current selection' v; z+ _) y5 u4 j0 N6 S# H& w- Q
  5367.                                                 ; set or prompt for objects
    1 t) W& B) p! z# S
  5368. ' K5 {2 Q7 X. i# Q. o( `9 g
  5369.       (t (princ "\nNothing selected.")! u( q+ F2 y4 s2 G0 ]! z, H
  5370.          (ai_return nil))
    9 D* G4 A5 I1 y3 `0 y% s# H
  5371.    )
    : C! a+ ?$ f. ^4 u
  5372. )9 C9 P* l/ x) {! \

  5373. ! x4 `2 S2 ^( H) ^% ?# p
  5374. ;;; Define command function.9 {5 [1 I. O9 |) p
  5375. . F5 }  K7 d' F1 ]0 Y
  5376. (defun C:CH ()
    ) a# {  A& F$ T
  5377.    (ddchprop nil)
    * G: i5 L4 m, d: i9 \, t0 e8 V
  5378.    (princ)5 v  J* ^: ~! w
  5379. )* E) ~& Y& K: H' `" T. D4 A( K& J

  5380. & E/ D, }! z- e0 ~

  5381. 7 V  L& R4 v) D% P2 l: `4 g0 r
  5382. ;;; Main program function - callable as a subroutine.
    8 L  g; a, z7 l# p" e
  5383. ;;;: _, N! }7 E4 h+ b- w9 }# K
  5384. ;;; (ddchprop <pickset> )
    0 @3 ]4 O5 u  Q$ f6 E
  5385. ;;;
    4 F4 L' |2 |' F8 |5 P) A: U
  5386. ;;; <pickset> is the selection set of objects to be changed.: Z6 N3 L! F0 a4 a3 y  d. s: i
  5387. ;;;
    4 W5 \2 {+ M% B6 }; A! [
  5388. ;;; If <pickset> is nil, then the current selection set is! p" l5 \8 F$ m0 H
  5389. ;;; aquired, if one exists.  Otherwise, the user is prompted$ }, i" Z2 a* P2 c: N. n
  5390. ;;; to select the objects to be changed.
    ) d9 i6 x! N) T9 Y7 j# F
  5391. ;;;6 R& J; _4 l" i6 T' |/ Q' Y4 r
  5392. ;;; Before (ddchprop) can be called as a subroutine, it must
    / {- W" g% Z: \5 x% e9 w4 \
  5393. ;;; be loaded first.  It is up to the calling application to1 ]% ^* I  K: M; L
  5394. ;;; first determine this, and load it if necessary.
    / w& l# o& q' d4 w5 ^
  5395. / R* t2 r" r6 h0 ~: m$ L1 D8 K
  5396. (defun ddchprop (ss  /) z) N8 C2 [$ ]! {' [! S7 Y" x$ o
  5397.   y6 f/ V' K$ c  H. U
  5398.                   add-mdash      ecolor          ltedit_act      s$ S$ v' p& y9 ?% G2 b& \1 i
  5399.                   assoclist      elayer          ltidx           selset; t$ D/ C1 Z; b, C. ~& B' o, ~
  5400.                   bit-70         elist           ltlist          set_col_tile
    ' k! {$ L+ v* }8 k2 g3 q
  5401.                   boxlength      eltype          ltlist1
    6 s0 ]6 I0 t$ A' O. r9 R/ {4 w( l
  5402.                   bylayer-lt     en              ltlist_act      sortlist
    # S( b' d- Z0 @, ^
  5403.                   bylayer_col    ethickness      ltname
    8 T9 t8 ?. x! o2 \
  5404.                   bylayer_lt     fchk            ltnmlst         sslen5 G# ^4 Y) j% C6 s  D# r0 A* e
  5405.                   call_chp       frozth          ltvalue         templist
    7 M& U5 t  A1 z+ Z- E* r
  5406.                   chk-col        getcolor        ltype           temp_color
    7 A4 H* A6 r. n' T# ~
  5407.                   chk-lay        getindex        m               test-ok9 Z; {: n: h! z' S( K; a/ D( i
  5408.                   chk-lt         getlayer        makelaylists    testidx
    0 n4 R% D& k4 f' v& L
  5409.                   chk-th         getltype        makeltlists     testlay
    : p2 Y  D; O) _+ f
  5410.                   cmd            getprops        match-col       th-value" W/ U9 c  `9 b6 E- Z
  5411.                   cmdecho        getthickness    match-in        thickness
    - ?) E, ~+ }% \7 j4 f) R$ }
  5412.                   cn             globals         match-lay       tile
    1 \# a6 h  [5 {: w  o8 F8 v
  5413.                   cnum           go              match-lt        tilemode
    . N7 j+ u# {6 [4 X1 ~7 Q( R3 K
  5414.                   col-idx        index           match-th        tile_rect
    1 r  w# C6 w4 @# V% Q2 p# T" d
  5415.                   colname        item            match_col       vi2 H" E: v! l; a$ J* k; v
  5416.                   colnum         item1           mdashlist       vpf9 }6 F9 U/ d  r" n* W
  5417.                   color          item2           n               vpldata
    4 A/ q5 o! @+ h1 ~4 V6 P0 o
  5418.                   colorname      itemlist        name            vpn
      n6 |1 g" ?' X: J+ k7 x* N! R
  5419.                   col_def        lay-idx         ncolor          x4 s" t$ @1 c4 e$ ^/ M7 k' n" I
  5420.                   col_tile       layedit_act     nlayer          x18 u" S! s! m$ s: _8 Y( b
  5421.                   ctr            layer           nltype          x2: c4 Q, M4 k5 F  [- Y% z
  5422.                   cvpname        layinfo         nthickness      xdlist
    , \8 @& c. T. n( q: v
  5423.                   dash           laylist         off             y
    9 l' |' F) q9 J% I
  5424.                   dashdata       laylist_act     old-idx         y1
    * c( e( b) ~6 r
  5425.                   dashlist       layname         olderr          y2
    & x; y* ?; S, Q8 i4 c' z  a
  5426.                   dashsize       laynmlst        on              undo_init4 Z& A2 ]- f! c' B5 Z
  5427.                   dcl_id         layvalue        onoff- ]7 m# k0 k: p8 E9 v: @+ d4 n
  5428.                                  linetype        patlist
    # c2 H1 g, Q) v7 ^& Q( Q
  5429.                   ddchprop-err   list1           pattern0 K- _# d8 P$ I) t, L. x
  5430.                   longlist       proplist
    ; J7 Q, Q0 b5 a# J0 B" S
  5431.                   lt-idx         reset-lay% L5 i" B6 d. M2 M5 x& D5 Y
  5432.                   drawpattern    ltabstr         reset-lt- |0 Y$ j' w: |0 E  W' F# t
  5433.                 )6 n) ]: o2 t  X" E# S! |
  5434. 6 S3 P% o4 y, y% F2 Q% D
  5435.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    & Q; o- I1 p  ]3 Q
  5436.         old_error  *error*            ; save current error function* |6 Z, x9 _% ]- Y7 B
  5437.         *error* ai_error              ; new error function4 O& t& g3 p! N) ^# o/ n
  5438.   )
    : e( C# W, \1 y- Z; L
  5439. 4 W9 y; p) ~* t7 K6 r" K
  5440.   (setvar "cmdecho" 0)
    5 O( _* g, K  G; g# @( y; k* o
  5441. : ~' k1 m- F6 }9 ^+ {* F7 n
  5442.   (cond
    ( k6 U8 I; P; Y
  5443.      (  (not (ai_notrans)))                      ; Not transparent?* D- P  K2 _1 `+ E! B4 z3 I% o
  5444.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?) @# R- ~6 i  _( v4 G5 g! B; e8 e
  5445.      (  (not (setq dcl_id (ai_dcl "ddchprop")))) ; is .DCL file loaded?
    2 \5 x# i4 [) K% G  J5 z( V& N
  5446.      (  (not (setq ss (ddchprop_select))))       ; objects to modify?
    / ?6 Z( {4 ]2 j+ |% p) Y

  5447. 8 i6 ^. R! K. i0 N$ D) g
  5448.      (t (ai_undo_push)
    - `$ `5 X  q+ t- n
  5449.         (ddchprop_init)                          ; Everything's cool,: C$ g! a) T" e, N/ g! N
  5450.         (call_chp)                               ; so proceed!
    8 f4 ]1 R9 \8 z/ o9 c9 i
  5451.         (ai_undo_pop). g  M- E4 e, M1 r, h
  5452.      )5 {3 R0 ~" w( M* o+ b* x
  5453.   )
    ) o; O+ M5 E3 Z% F; l5 M
  5454.   1 g( U* Q- {2 B6 z+ n. \) z! Z
  5455.   (setq *error* old_error) 1 ^  M+ W, C  f8 s
  5456.   (setvar "cmdecho" old_cmd)( o& B$ S# Z1 Z8 y! L
  5457.   (princ)+ t0 o9 B0 h4 B/ k, C, w/ \& R; l
  5458. )
      w- f' i, g3 U: z
  5459. 9 k3 v, h' `2 h- l& g% m& O3 [. _" W
  5460. ;;;----------------------------------------------------------------------------. u! x$ i& W/ A& O5 |
  5461. : T9 ~! t8 S$ y% ^
  5462. (princ "   DDCHPROP loaded."). @* ~- R) T0 i" e
  5463. (princ)
    0 p0 {# X" m3 r1 C) B. B% k

  5464. ) l5 o2 y. c* J& U& T; M: R
  5465. ;;;----------------------------------------------------------------------------
    6 @9 k, u- r; w) _- M7 w

  5466. ! z1 z1 A- X8 _7 F# ?5 ?: r
  5467. ;--------------------------------ddmodify.lsp----------------------------------! M$ t- b* y$ x9 r8 e: Z
  5468. ; Next available MSG number is    111
    ) z- L3 U- |" V
  5469. ; MODULE_ID DDMODIFY_LSP_. w2 |- I! n% r$ S+ Y
  5470. ;;;----------------------------------------------------------------------------
    ( _- X7 q( t6 f7 z) U4 l5 f0 i" {
  5471. ;;;    DDMODIFY.LSP; w& Y" J  h8 T
  5472. ;;;* u$ y# Z8 ?) {5 r/ q6 u9 i0 c+ H
  5473. ;;;    Copyright 1997 by Autodesk, Inc.0 `' U( z7 W3 {+ G) _5 s
  5474. ;;;2 o" s5 M, A0 }2 @) s
  5475. ;;;    Permission to use, copy, modify, and distribute this software) c  _( m% x  s9 s
  5476. ;;;    for any purpose and without fee is hereby granted, provided! t3 v, s3 p7 Y" j8 N3 n7 T
  5477. ;;;    that the above copyright notice appears in all copies and
    4 a5 T( I: m- ?' l) _5 {
  5478. ;;;    that both that copyright notice and the limited warranty and
    5 U! a3 K7 ~2 u& e) d% c
  5479. ;;;    restricted rights notice below appear in all supporting
    * O- T+ w) U9 {( F' \% H3 M3 @, n
  5480. ;;;    documentation.4 z9 Y/ ?/ P$ b5 f3 Z
  5481. ;;;& f* b9 W7 K! z1 l  I* @
  5482. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    2 C; H. n0 B- n7 t% F
  5483. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    " J8 S) ^$ p# c2 h6 V' Q& P
  5484. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.- q+ p4 s+ M) N0 U8 c
  5485. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    - _9 v# r. ^  r+ V
  5486. ;;;    UNINTERRUPTED OR ERROR FREE.$ U' E  U9 y6 ]0 m) N2 J2 ]
  5487. ;;;
    % p# q- v9 Q+ t7 d3 E) l: ^; t
  5488. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to
    / M7 [/ z: T  G' d/ q
  5489. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer- P0 g  v$ e0 s& s5 E. Q8 u
  5490. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    $ h& N! ?! o* A4 e) M+ ~! [1 J0 a. X3 u( H
  5491. ;;;    (Rights in Technical Data and Computer Software), as applicable.; }9 v5 t  T6 v# W9 z; y
  5492. ;;;
    7 \! q" {- w. n! B' z+ b4 H
  5493. ;;;.* l, i; g) \. {8 Z3 y& f% U+ ?
  5494. ;;;1 l) k# b& \1 h/ `6 r/ C; a6 Q& R5 G, a
  5495. ;;;----------------------------------------------------------------------------
    1 t+ C' E: }% a4 A. J
  5496. ;;;   DESCRIPTION- T) e7 ?8 q6 K- b# k
  5497. ;;;
    2 m0 I7 o% [/ z6 n
  5498. ;;;   This function allows the user to get a listing comparable to the LIST: D# t$ l! m# M7 M4 S, l, i
  5499. ;;;   command for most objects.  In addition, most object fields in the( z* m1 h  s& X2 C- G
  5500. ;;;   dialogue box are editable.  Points can be specified dynamically by
    3 e. {8 \2 M+ B1 V' Z
  5501. ;;;   temporarily dismissing the dialogue box.  Each object has a unique
    2 z8 Q; F6 |1 o; |, X+ M
  5502. ;;;   dialogue.
    ( |6 s' n6 B/ l! k% N5 F) m4 _
  5503. ;;;
    4 X1 W! T5 ]3 r
  5504. ;;;   Naming conventions, B+ ?6 I% c' c  _
  5505. ;;;   Long function and widget names may use an underscore "_"
    - g; n9 S* o) c' }
  5506. ;;;   in their names to make them easier to read, long variable. l$ R' {% \" C7 B/ g
  5507. ;;;   names use a dash "-".
    & S( p1 ~( r) B& B; \3 T6 o
  5508. ;;;----------------------------------------------------------------------------
    1 d& g1 h3 R5 j9 W
  5509. ;;;----------------------------------------------------------------------------9 _" W3 f. t  F1 ]0 p3 e+ K
  5510. ;;;   Prefixes in command and keyword strings:
    2 d. |1 S: \. f  N6 r6 o9 {
  5511. ;;;      "."  specifies the built-in AutoCAD command in case it has been: z0 r6 j# V* s- Z
  5512. ;;;           redefined.# F, u! {3 A, K6 D5 K/ Y
  5513. ;;;      "_"  denotes an AutoCAD command or keyword in the native language
    # e( Z' s& h8 N) T
  5514. ;;;           version, English.
    * q% c8 v. ?# h! Q3 j# V
  5515. ;;;----------------------------------------------------------------------------
      E6 t# V. F' i& }% I1 ]
  5516. ;;;
    ( K1 {4 B/ p% F1 E
  5517. ;;; Avoid (gc)s on load to improve load time.
    6 z" K$ C  g4 a) m3 F8 C/ [
  5518. ;;;( ]+ t0 Y& i9 F9 d& R! A
  5519. (defun do_alloc (/ old_allod new_alloc)
    8 @. b5 O1 w5 K5 C9 H
  5520.   (setq old_alloc (alloc 2000) new_alloc (alloc 2000))0 h) `1 Y( U) K/ X
  5521.   (expand (1+ (/ 17000 new_alloc)))9 X4 l8 z6 g4 w. B2 a* h4 K
  5522.   (alloc old_alloc)
    $ g5 b. X; D) B- _3 Y7 O" h
  5523. )
    1 R3 P' M0 y8 j  D, Q) p
  5524. (do_alloc)
    ; d+ s. X& v9 H- c: n: W6 h
  5525. (setq do_alloc nil)
    0 ~2 @7 @* k! a% U1 r' A
  5526. " ]& r. ?0 O1 `* P! U" Z3 i/ N
  5527. ;;;
    3 L1 w( _! B- f- a+ d  v
  5528. ;;;8 }) {  a) O$ `) ~; V. ?. m
  5529. ;;; ===========================================================================- `* u+ B. _! m( |
  5530. ;;; ===================== load-time error checking ============================2 F" `7 Q: y: c
  5531. 7 V5 X% }& \4 v, P5 T! a' w& c
  5532.   (defun ai_abort (app msg)" T4 Y! B  J& K5 s, v* j3 G  W
  5533.      (defun *error* (s). A$ ]0 F/ j4 \7 q
  5534.         (if old_error (setq *error* old_error))
    2 F3 W; W* R, R5 m. [
  5535.         (princ)  @3 f: ]+ t3 R9 f* K
  5536.      )7 b  }6 A4 u/ t$ _: R0 e
  5537.      (if msg
    * n" e9 ^7 c1 i: g7 j: D3 A2 X
  5538.        (alert (strcat " Application error: "& a3 ?1 I/ e4 i
  5539.                       app8 S# @5 S8 x! J; d  l3 E1 O
  5540.                       " \n\n  "" W5 S7 ^% k2 v+ c. P7 c
  5541.                       msg1 l8 v0 d9 ~' ^5 z( C4 V
  5542.                       "  \n"5 d' e4 L$ Y! }( Q: B  e; C* G
  5543.               )
    4 @9 R8 c+ i$ E  k8 s4 ]
  5544.        )7 M1 v. Y2 g9 U
  5545.      )
    % N8 c8 `6 s& `) p
  5546.      (exit)
    - Y, V( M% g; U9 q
  5547.   )# {( ^4 O+ v& c4 O8 x1 O
  5548. 3 Q+ m; z. Q5 L4 M# [
  5549. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,) I! a6 s1 O1 l& ^) h1 i
  5550. ;;; and then try to load it.  If it can't be found or can't be2 L! ^2 ], R) }  H
  5551. ;;; loaded, then abort the loading of this file immediately.
    4 i& J4 W" P5 k1 }; `

  5552. : a- b; c3 V9 z* A, \4 m5 S
  5553.   (cond
    9 M7 i, {- q: h  Y: M
  5554.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.# c- D" }7 s9 u; B8 |# V2 `

  5555. 4 E7 L7 E2 Q9 i; d  @2 d9 W
  5556.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    & [6 F; r8 d. y; ]' H3 g
  5557.         (ai_abort "DDMODIFY"
    . t- M/ ?; h1 V# E) L
  5558.                   (strcat "Can't locate file AI_UTILS.LSP."
    " U: g9 w! a% R+ X
  5559.                           "\n Check support directory.")))& I3 y0 d5 k4 O$ w+ x- c5 M5 E
  5560. 0 d) n1 g! Z3 `, c. N
  5561.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    ( W+ _. a. T8 D4 Z1 U
  5562.         (ai_abort "DDMODIFY" "Can't load file AI_UTILS.LSP")): _: Y" W, {' l) w$ W
  5563.   )
    ) T7 ^' {; W/ k+ p2 v' [  p2 d7 P
  5564. + ]. p6 h2 ~* M) n+ G( j. ^' V
  5565. ;;; If we get this far, then AI_UTILS.LSP is loaded and it can
    * z$ r- s' F; J5 K: C
  5566. ;;; be assumed that all functions defined therein are available.
    ! i: J0 C! H5 T9 a" |5 L5 h
  5567. ' _$ K( ?, w- i
  5568. ;;; Next, check to see if ACADAPP.EXP has been xloaded, and abort5 j* X% Y) L3 }! y6 k& T* H; l
  5569. ;;; if the file can't be found or xloaded.  Note that AI_ACADAPP
    . q. ^, b9 Z4 u& A, B+ p
  5570. ;;; does not abort the running application itself (so that it can, i4 C0 R8 [" g! j- L/ u7 o
  5571. ;;; also be called from within the command without also stopping
    % X  Z, w4 f! I& E
  5572. ;;; an AutoCAD command currently in progress).' n) h0 M! B* h

  5573. $ ^, y1 @. M3 D9 i& B+ U+ j5 k
  5574.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    ) `* K2 x2 w3 h. q5 X$ a. k+ m& z& Y( ^
  5575.       (ai_abort "DDMODIFY" nil)        ; a Nil <msg> supresses3 O3 R. T$ O% u! e
  5576.   )                                    ; ai_abort's alert box dialog.
    ) r) x9 H) L) C0 q4 m! j

  5577. 4 W( Y5 z; m3 W$ [9 C
  5578. ;;; ==================== end load-time operations ===========================
    1 M3 R7 g1 t1 \7 R  B# B
  5579. ; Z* \1 U/ s% ?3 C
  5580. ;;; global variables# H- l1 M3 \' r, `( E

  5581. % h+ V9 z" U: G" a
  5582. (setq hatch-elist nil)
    : M8 R9 n3 A5 o0 K$ L+ H5 j5 I
  5583. 2 `% q; q- |  c: W$ \4 k
  5584. ;;; If we get this far, both ai_utils.lsp and acadapp.exp are
    ! A) U/ ~$ T  Q) X; }! p  t" I
  5585. ;;; assumed to be available.
    & g/ @( L, D% P  B' T+ l6 r
  5586. + Q; h8 t2 u- n" A. y1 |
  5587. ;;; Define and encapsulate all subroutines that are declared: L, p$ B2 d+ E; n8 R- q! E
  5588. ;;; locals of the (ddmodify) function.
    , {; e! j0 J6 c

  5589. 8 u6 y" Z. _5 l" @; C7 y
  5590. (defun ddmodify_init ()* E; n- T$ ?! p1 u
  5591.   ;;6 r1 A& f% R& h$ D% ~2 l& _
  5592.   ;; These three functions modify the enitity list for common properties.  Since7 n; a0 p! W- @
  5593.   ;; color, ltype, and thickness are absent from the object list when they are
    8 j+ L0 C, h) l2 R% H: \
  5594.   ;; set to their defaults (i.e. color = bylayer), a simple substitution using
    : t" j- c. t2 ~
  5595.   ;; SUBST is not possible.
    4 z: N' P' t* Y7 }/ r8 k" Q% V
  5596.   ;;" A& u4 M3 q. N4 i, |
  5597.   (defun modify_properties ()
    . z) P8 M. ~: w& y
  5598.     (emod ecolor 62)
    * W! I: V( j( p! k  X
  5599.     (emod eltype 6), `1 |) }; m! D3 l* T5 `1 `
  5600.     (emod ethickness 39)
    9 O9 F; e* K* e4 z) g) M9 n: ?/ S
  5601.     (emod eltscale 48). B* z3 W/ Z; E, c
  5602.     (tempmod elayer 8 nil)0 L6 C  J$ |9 [6 t. |
  5603.   )& z, J4 T- C+ l. P
  5604.   ;;
    ; c  G- O3 `; y8 [
  5605.   ;; This function is used for modifying common properties of the ACIS# o1 f* M( o8 ^& R" ~4 y
  5606.   ;; based geometry objects. Thickness is not valid for these objects6 [8 p, o+ ]6 N: d
  5607.   ;; so it is left out.& F; Q% _3 y7 R% y* x
  5608.   ;;
    : |8 l5 P9 H# J- z/ e; m
  5609.   (defun modify_prop_geom ()
    ; h% s# s* l& V+ c9 p' l/ u
  5610.     (emod ecolor 62)% [  Q5 Z; B/ H7 u! {3 U* A
  5611.     (emod eltype 6)0 n( _+ V, h: A
  5612.     (emod eltscale 48)" \) L7 ]8 ~8 c7 I
  5613.     (tempmod elayer 8 nil)% O$ x; _: |$ L% D) A+ d6 w6 X% O
  5614.   )
    8 R4 G" b# o+ }( x6 I
  5615. ' Z8 D* r; _" H
  5616.   (defun emod (value bit)
    4 ~) K" o4 t6 K
  5617.     (if (= bit 62)- h1 E0 C$ |; X" I* F% i, t4 h9 l- X
  5618.       (progn
    ; `7 \7 ~" J+ P% d1 n! u
  5619.         (if (or (= value "BYLAYER")
    8 u4 N/ O3 [$ L( j8 v9 L) a* ^
  5620.                 (= value "BYLAYER")) (setq value 256))7 O0 X) X9 a; q  e# m, I2 r+ g
  5621.         (if (or (= value "BYBLOCK")6 [2 X& b4 s* |& D
  5622.                 (= value "BYBLOCK")) (setq value 0))
    ! u+ d" t" A4 B
  5623.       )
    , L3 {: i: H' \/ E, G9 [* c# i
  5624.     )' T  w8 h  r' z$ ~. S
  5625.     (if (setq oldlist (cdr (assoc bit elist)))
    . P( }, |+ l$ U2 U6 ]3 P
  5626.       (tempmod value bit nil)
    ' `' n2 k1 ?; r1 G6 r
  5627.       (setq elist (append elist (list (cons bit value))))3 g* R; `6 r2 c  B0 _
  5628.     )
    ; }+ V0 w) J) N: s/ \) L. T  i9 b! y
  5629.   )
    6 J! C) W7 @: Q2 y9 u8 L" @
  5630.   ;;
    ) d9 u+ {3 C( E- m: v& t
  5631.   ;; Resets object list to original values.  Called when the dialogue or4 y6 Y* a- Z2 W1 ~5 [4 U
  5632.   ;; function is cancelled.8 X+ x* K: R8 k% p3 O% J' [8 K# \
  5633.   ;;
    ! z* K+ n: \; \- a/ J
  5634.   (defun reset ()
    5 S+ o" ~8 W* {& Y) X: h  R8 R
  5635.     (setq elist  old-elist
    1 D0 @1 v7 z& p
  5636.           ecolor (cdr (assoc 62 old-elist))
    $ L$ U% P; i+ q! w
  5637.           ethickness (cdr (assoc 39 old-elist))5 T5 f- i9 k& H5 S3 {
  5638.           eltype (cdr (assoc 6 old-elist))
    # B& O  }* X3 j4 o
  5639.           elayer (cdr (assoc 8 old-elist)): K9 o" E& p- d( t
  5640.           eltscale (cdr (assoc 48 old-elist))9 C' V& n+ B. t( c, b3 ?+ ~
  5641.     )
    5 e: e4 X9 ^4 T
  5642.     (if (not ecolor) (setq ecolor "BYLAYER"))7 j- c/ s. F/ O: [2 i
  5643.     (if (not eltype) (setq eltype "BYLAYER"))
    4 z3 \! p$ f) g9 U+ _
  5644.     (if (not ethickness) (setq ethickness 0))
    # s; d4 @  ?  @3 N
  5645.     (if (not eltscale) (setq eltscale 1))4 g1 T) U& V" s/ H( w& g
  5646.     (modify_properties)! q. b: W% ]* P, Y7 i- O0 Q; }
  5647.     (setq reset_flag t)/ V+ t- H. b; {; E
  5648.     (entmod elist)7 J5 j: M0 h1 Q3 k% Q  e
  5649.   )
    # ^6 p& d% X4 ^8 Y9 \6 }* ~. O) K
  5650.   ;;
    3 a1 Z& W5 ]1 p7 [- |5 R. W
  5651.   ;; Modify object when dialogue is temporarily dismissed to reflect latest
    ; q# V! h0 @# E" d
  5652.   ;; settings of dialogue.  It converts the point from current UCS coordinates to( [5 J0 @; S: i2 v/ i8 @: b# ]
  5653.   ;; the proper object coordinates (world or object).) n$ U& X4 P7 k4 d! f
  5654.   ;;
    8 A- `  [" y. L6 ]  y' }+ d  y4 z
  5655.   ;; Arguments: value - in current UCS coordinates
    2 v5 D: E3 b" L- L
  5656.   ;;            bit   - object code (i.e. 10 for start point)0 }2 t! N" S: O9 C( K# {  Q: `) ~
  5657.   ;;            ptype - point type  0=world 1=planar+ t7 x! d8 g6 b+ [2 k3 t: L, d+ {
  5658.   ;;
    ; _# M' p- _4 T/ Z6 [1 N( z3 F
  5659.   (defun tempmod (value bit ptype / newpoint)
    4 B" d6 J$ @. W: w9 X0 C& J
  5660.     (cond+ A$ C2 F6 S5 S; b
  5661.       ((= ptype 1) (setq value (trans value 1 ename)))
    7 z7 ]+ x* Z' A5 f
  5662.       ((= ptype 0) (setq value (trans value 1 0)))0 B1 ?* d( H/ r! b7 G! ~+ z: n" O+ s
  5663.     )+ P! T& n$ s! J0 O9 e7 Z
  5664.     (setq elist (subst (cons bit value)" k' E, I- ]( n$ X
  5665.                        (assoc bit elist)
    ( b% ?6 L8 |" m- |/ [' D
  5666.                        elist; E+ m0 h: v" e' X9 q
  5667.                 )$ {/ O9 [" ^8 O6 J0 ?/ ]# w0 u
  5668.     )
      N3 q+ [* |0 U; W# F
  5669.   )/ D& R7 g9 n. A$ u
  5670.   ;;9 t! f9 ?! O, S7 s5 \! c3 S
  5671.   ;; The following functions are called after a dialogue has been temporarily- f8 Q) E- u7 t3 n# a
  5672.   ;; dismissed and the user is selecting a point.  If a point is selected the$ m! I7 v. ~: Q" I6 |, `4 k6 R
  5673.   ;; object list is modified and new X,Y,Z values set.  If no point is selected1 t: ]1 a4 P* e# ?: F0 L8 |
  5674.   ;; (null response), then the point is reset back to its previous values.  A1 z( W- h) E6 |! q+ k( J  B" S
  5675.   ;;
    ' u5 g- }% v7 [8 |7 T/ ~2 t
  5676.   (defun ver_pt1 (ptype)
    " J8 f$ ~9 u2 ^7 Z5 Q. L
  5677.     (if pt1
    9 l6 ~+ W8 P  \, u; |% Y, @
  5678.       (progn
      I) h) `/ p4 }( l
  5679.         (tempmod pt1 10 ptype)# G3 l6 `) u' `
  5680.         (entmod elist)
    ( Y* l' D, A) G' c0 j( I* v& `2 W
  5681.       )
    9 J% G5 D# }. K* O) A
  5682.       (setq pt1 (list x1 y1 z1)); K. l" Z5 {( {- I: J
  5683.     )
    $ h* J1 Q6 _" ^- ^
  5684.   )
    1 _: Q: h7 f! u) L

  5685. # g' G, A% I: o+ U# e
  5686.   ; (move_pt1 <ptype> )
    & m- R! l' N' [* i" P. q4 ^7 h
  5687.   ;  @9 j/ \" O) |/ P( ]( U
  5688.   ; Called in liew of (ver_pt1) to translate block insertions which4 p8 x2 ?& D3 z, r; V3 G" v+ ~2 Y
  5689.   ; might have variable attributes attached to them.  If the distance/ l0 z+ l: f5 k6 X
  5690.   ; the block is to be moved is < 1e-6, the move is deferred.
    2 f/ t6 b7 S+ [- z

  5691. 8 C- |8 L! r$ z% u4 m
  5692.   (defun move_pt1 (ptype / basept hi)
    5 K! H8 \8 i3 {/ d9 m' g8 A
  5693.     (setq basept (trans (cdr (assoc 10 (entget ename))) ename 1))$ A% b6 F3 A6 P# A1 E8 Q& P
  5694.     (cond
    . e/ `) x0 J; l2 W  n/ h& s
  5695.        (  (not pt1): M" {1 S/ x0 `6 D5 T
  5696.           (setq pt1 (list x1 y1 z1)))
    ( l2 _' A, L4 M. p" n6 J
  5697. 9 v4 ]5 p0 M8 v) W; J: m
  5698.        (  (> 1e-6 (distance pt1 basept)))9 z; k) f/ h$ B6 O; P5 ?; O# a% P

  5699. + D0 e$ y. j1 X" ]. H$ `$ U
  5700.        (t (tempmod pt1 10 ptype)
    3 V0 d2 z# y, {: ~
  5701.           (setq hi (getvar "highlight"))
    4 z1 L: W$ D/ t  o9 V
  5702.           (setvar "highlight" 0)9 x! ^1 z+ U( R  H+ G, C0 Q1 \
  5703.           (command "._move" ename "" basept pt1)
    , m  f: j9 t. z: I7 {  V+ V
  5704.           (setvar "highlight" hi)). z; c% X  {$ k
  5705.     )
    - q  s, G% c' S( h) p) q) A
  5706.   )
    7 l: s: r1 d# I4 _. C" @2 d/ K8 v
  5707. 5 x# u6 R1 }& p. r1 p; n' T" T
  5708.   (defun ver_pt2 (ptype)
    6 W7 D1 ]% w! C/ |. I- ]0 c/ i9 }6 p
  5709.     (if pt2
      k9 X$ z6 k! a( G# h3 E
  5710.       (progn( w3 _. t/ n4 V4 a, Q3 w
  5711.         (tempmod pt2 11 ptype)
    % R& Y/ B! b& u5 P: U3 b; r
  5712.         (entmod elist)
    & c& _" w  s1 L* |
  5713.       )
    6 u/ |" _. B% v
  5714.       (setq pt2 (list x2 y2 z2))" c: Q/ `4 n0 K4 P+ \
  5715.     )/ o2 r4 h0 p8 ]/ y( s" A
  5716.   )- k7 V+ y2 Q2 I. e* p6 T8 r
  5717. 2 x# J" _% @6 Z& b& l
  5718.   (defun ver_pt3 (ptype)
    4 Y1 ?" K9 O9 u6 ?. \9 W+ i' F
  5719.     (if pt3- N* p3 {  X2 N; {
  5720.       (progn
      z& l5 _4 _$ T+ A' |) E* i" Q
  5721.         (tempmod pt3 12 ptype)( W0 C6 H/ {5 z! ]9 i4 B3 @- I8 \
  5722.         (entmod elist)# y) ?" m8 m' {/ n. O& r2 b
  5723.       )- x5 T9 e4 b) L( e, e& t% J% B/ f2 I
  5724.       (setq pt3 (list x3 y3 z3))- f5 f" _2 K( U1 s# b* e
  5725.     )* K6 O. P2 b: B( ?5 c% n
  5726.   )
    / O$ j" K& h6 F0 l
  5727.   F. O; _  S5 K! ?, V& x
  5728.   (defun ver_pt4 (ptype)
    ! N: K% N+ y4 s
  5729.     (if pt4
    ( Q3 \7 _0 P6 n( h. f: W$ r9 v) P
  5730.       (progn7 h) _- W( {( R5 B$ r
  5731.         (tempmod pt4 13 ptype), s. ?0 _' \% g
  5732.         (entmod elist)
    % O7 L, h- v1 j6 E4 r( B
  5733.       )
    % R. \, H" t1 X7 _3 ]
  5734.       (setq pt4 (list x4 y4 z4))9 [9 U' r" L% l  g$ t7 Y0 @9 y% g  d
  5735.     )+ O7 }/ U3 s; {" O
  5736.   )* s2 }# M  c; B  C/ g* U: y
  5737.   ;; Xline/Ray0 r  t8 l3 U+ A% S* q: J
  5738.   (defun ver_xline_pt1()
    6 f" t2 O) p7 Y# O0 P4 v6 }
  5739.     (if xline_pt13 x: l9 ^- p7 i# R% P; c6 L; c
  5740.       (progn
    : [- D6 @0 A) |* s2 ]6 K
  5741.         ;; convert to WCS.; \0 @. p1 q, x! P
  5742.         (setq value (trans xline_pt1 1 0))6 z3 m$ H9 n4 w/ J0 ]: n% K/ Q1 p
  5743.         (setq elist (subst (cons 10 value)0 Y3 x8 A9 r* @- K! L" z
  5744.                           (assoc 10 elist)
    % @( @, }  k" W  ?/ P
  5745.                            elist8 m8 n/ C4 F6 I  V
  5746.                     )% H! K, ~/ k! s& v4 ?4 t+ s
  5747.         )4 t) J. ?& [8 y( v
  5748.       )( B# [0 X' N* @+ u: h) {
  5749.       (setq xline_pt1 (list xline_x1 xline_y1 xline_z1))2 V3 Y) C' ]5 R3 Z4 x7 P' |8 E- K
  5750.     )$ |3 F. y' b0 I/ A3 F* d7 l
  5751.   ): n5 \+ S  O8 r4 p

  5752. 0 F8 _9 Z/ F/ _  E" N8 A2 ~
  5753.   (defun ver_xline_pt2()+ ~* m# z& B- ^7 q: j' @
  5754.     (if xline_pt2/ G0 s6 w" v9 g% X' l
  5755.       (progn0 \) B0 u4 p& D* `! A1 Q
  5756.     ;;
      s. u: a" u8 j
  5757.     ;; Calculate new Direction Vector WCS
    ( m3 f! g5 E% m# @% r
  5758.     ;; x / (sqrt ( (x**2) + (y**2) + (z**2)     ))) u& }& M' h# X+ H5 Q
  5759.     (setq temp_dir (trans xline_pt2 1 0))  }) z$ O' i) s
  5760.     (setq temp_dir_x (car temp_dir))
    ( r+ x; G, f2 B+ Q, L
  5761.     (setq temp_dir_y (cadr temp_dir))1 w# d! \$ ]$ k- E. B* Y8 U
  5762.     (setq temp_dir_z (caddr temp_dir))
    + i! b- L+ j- @9 Z2 D

  5763. 8 V6 m% J3 N2 m! O& A# C
  5764.     (setq temp_xline_pt1 (trans xline_pt1 1 0))0 r% a8 c8 U5 O$ ?3 I5 a
  5765.     (setq temp_xline_x1 (car temp_xline_pt1)): U0 p* J' j; [, G# z5 ]5 O# l
  5766.     (setq temp_xline_y1 (cadr temp_xline_pt1))
    & F1 J9 i) _% z# p& I% l7 U/ P( H
  5767.     (setq temp_xline_z1 (caddr temp_xline_pt1))
    3 G) |, j% @; H9 [/ ]% P4 p

  5768. 6 H9 R) |  s, G7 J4 N
  5769.     (setq denom (sqrt (+ (expt (- temp_dir_x temp_xline_x1) 2)
    ' [. \/ h7 m# O3 A8 `7 i! a# I
  5770.                          (expt (- temp_dir_y temp_xline_y1) 2)
    ( y2 m9 S1 G1 T# q
  5771.                          (expt (- temp_dir_z temp_xline_z1) 2)$ z3 R: i" ?0 J! h
  5772.     )))
    + ?% a, Y0 `8 ~& h$ Q
  5773.     (setq temp_dir_x (/ (- temp_dir_x temp_xline_x1) denom))& C9 q1 E8 o8 K5 c/ z' `
  5774.     (setq temp_dir_y (/ (- temp_dir_y temp_xline_y1) denom))2 F# C4 f" G8 c; O% i) b0 K* u  \# L0 N! x
  5775.     (setq temp_dir_z (/ (- temp_dir_z temp_xline_z1) denom))6 U' W7 r& u  c% {! y0 T) ]
  5776.     (setq elist (subst (cons 11 (list temp_dir_x temp_dir_y temp_dir_z))
    8 W  M% n8 w. x) i7 m+ c7 m
  5777.                        (assoc 11 elist)4 o0 c5 a& }! V# Y- u6 ]" w
  5778.                        elist
    0 Z8 H) G$ v8 p6 z; z
  5779.                 )
    : r" n/ o2 K3 |: Q* N
  5780.     )
    5 q7 T0 I# v6 ~6 \6 ~
  5781.     (entmod elist): H8 _3 O' F) `% h. p6 R' K$ }
  5782.         (setq xline_x2 (car xline_pt2))1 ^- @4 b/ M) M7 a$ z
  5783.         (setq xline_y2 (cadr xline_pt2))
    5 y5 J) [9 B8 d6 g$ a
  5784.         (setq xline_z2 (caddr xline_pt2))! r5 F5 a9 N- ]  P7 s3 {) }
  5785. + W. M+ h0 S5 y( [

  5786. 8 f: n* u0 t( z6 p% I9 T
  5787.       )3 ~3 U2 x8 S. q( Y
  5788.       (setq xline_pt2 (list xline_x2 xline_y2 xline_z2))+ U4 z: @: i0 O3 H$ H) ]
  5789.     )" d6 A3 A" n& l6 j* h
  5790.   )
    . J! S. M! x- Y) o5 \; w

  5791. & H8 _$ ?4 G: b( n7 P
  5792.   ;;
    2 \8 D( `" C1 q( L# j$ h
  5793.   ;; Common properties for all objects" s, H/ Z+ f3 A$ O1 d" `
  5794.   ;;! X" p" _, _) c2 T
  5795.   (defun set_tile_props ()7 z! J# _) F( g
  5796.     (set_tile "error" "")+ G$ \9 m) e/ D3 s9 Q7 g. y
  5797.     (setcolor)
    , Z1 q) W8 k7 Y) i
  5798.     (cond' m- p: a( k. c: t, d9 R
  5799.       ((= eltype "BYLAYER")
    8 Z5 Y4 l( ~: g# Z
  5800.          (set_tile "t_ltype" (bylayer_lt)))
    # g$ q( T) R( M% _0 a/ k5 v6 Y
  5801.       ((= eltype "BYBLOCK")
      Z8 R3 I1 ^% H5 |3 t
  5802.          (set_tile "t_ltype" "BYBLOCK"))+ O2 i0 j! y; x: `- X  \
  5803.       (T (set_tile "t_ltype" eltype))
    6 S  M- N* {9 J; h: W
  5804.     )
    * J6 U# a6 h" n% p/ ~
  5805.     (set_tile "t_layer" elayer)
    ; t7 c5 {( c6 ?) a9 _: `' m" |( U
  5806.     (set_tile "eb_thickness" (ai_rtos ethickness))
    : l# Y3 O% j2 d, P* O( J) d
  5807.     (set_tile "eb_ltscale" (ai_rtos eltscale))
    1 b5 C; Q9 B+ M
  5808.     (setq which_tiles (ai_common_state etype))
    / s6 o( V' L2 ~' x, F
  5809.     ;; Disable tiles if need be...  ], G$ A- b8 G# C* H
  5810. ; \$ o- H  |* W& P
  5811.     ;; Layer Button and Text Field
    0 F3 k( k" g' G  b( n5 G& I
  5812.     (if (/= 1 (logand 1 which_tiles))
      ^# Q; D/ [6 X5 h% y8 ]
  5813.       (progn
    8 s1 d! z& C* s' a
  5814.         (mode_tile "t_layer" 1); U2 k8 Y  E* i; o
  5815.         (mode_tile "b_name" 1)
    9 p9 D( i: B9 w5 Z3 t8 M
  5816.       )( t7 w/ n& u) \, J# {/ |% a
  5817.     ); t7 l8 v1 z/ V$ y- ]
  5818.     ;; Color Button and Text Field
    5 }; Y+ j) f, o9 {! r2 s
  5819.     (if (/= 2 (logand 2 which_tiles))- Q8 B. j8 F- e5 B) `; ?
  5820.       (progn
    ( K; v5 _1 D+ y$ R$ N1 ~
  5821.         (mode_tile "t_color" 1)
    4 F% N  [/ }5 y$ s" G0 L6 _1 @
  5822.         (mode_tile "b_color" 1), F6 f1 A5 m6 V6 j/ c) r( c4 u
  5823.         (mode_tile "show_image" 1)6 @( S# ?7 m5 d5 M' O' y7 ~0 j9 W
  5824.       )$ C' _8 Q4 u5 ^3 D4 `* Z% C
  5825.     ); s( j5 x; I- a- @+ {' W' O. O% s
  5826.     ;; Linetype Button and Text Field1 c" N5 T2 |1 N2 V
  5827.     (if (/= 4 (logand 4 which_tiles)). J4 C' I% X5 p5 e
  5828.       (progn) P, d, B4 N3 K  q1 {* b( f+ s# B
  5829.         (mode_tile "t_ltype" 1)
    / i- b) @2 |' m
  5830.         (mode_tile "b_line" 1)
    8 ?2 i2 C" {& d1 U- r
  5831.       )
    & L( l! P) t) I+ @$ F! R
  5832.     )
    : ?! I* t) y8 J2 O
  5833.     ;; Linetype Scale Edit Field
    , j0 ?- o& U, N# i
  5834.     (if (/= 8 (logand 8 which_tiles))5 j7 A* H; N5 D# ]$ Z! Q/ A
  5835.       (progn$ n1 M8 |; X. l, e
  5836.         (mode_tile "eb_ltscale" 1)  R8 X" R4 A# L$ K2 V/ p1 X" a4 f
  5837.       )
    / `( X$ X1 _% j
  5838.     ), g% ^/ T- ?9 n$ C& E4 T
  5839.     ;; Thickness Edit Field.! B$ ~% `! R" ~% @+ F# ?. s, k
  5840.     (if (/= 16 (logand 16 which_tiles))
    5 u/ o3 C$ D% P& L( Z1 m
  5841.       (progn
    ' J/ [! E3 ]: m* U$ N. i
  5842.         (mode_tile "eb_thickness" 1)# b1 A, G; ^  R" \! P! R! |
  5843.       )
    1 l& B, A8 z( B2 A
  5844.     )" s! J+ f5 e" X
  5845.   )6 i  d* e5 S$ x# [
  5846.   ;;
    : Q' m, `: {3 Y
  5847.   ;; XYZ Point values for all enitites
    6 P* f+ v- [% P+ P( ^
  5848.   ;;; `/ s2 D/ f8 j9 F$ A! ^/ t- L# \
  5849.   (defun set_tile_pt1 (ptype)0 y+ Y9 j+ Q% c; V8 }. }
  5850.     (if (= ptype 0)
    ) g" _/ K* A7 [8 G8 p+ J8 B& D# C' e
  5851.       (setq pt1 (trans (cdr (assoc 10 elist)) 0 1))$ N% {) `  U6 g4 T& B1 [& D7 }
  5852.       (setq pt1 (trans (cdr (assoc 10 elist)) ename 1))
    8 [# \: k5 Q' u6 o% V) |
  5853.     ); W7 L4 }0 G$ C/ R: _) |9 M
  5854.     (set_tile "x1_pt" (ai_rtos (setq x1 (car pt1))))
    " A" C4 \& m; P. V' B
  5855.     (set_tile "y1_pt" (ai_rtos (setq y1 (cadr pt1))))5 d7 I. T8 C6 _& \% [; V+ N
  5856.     (set_tile "z1_pt" (ai_rtos (setq z1 (caddr pt1))))$ q/ x$ i, S8 }" t
  5857.   )
    5 K' A, k5 W6 R  v! @% y% g! Z
  5858.   (defun set_tile_pt2 (ptype), d! a+ i# U* H5 t1 i
  5859.     (if (= ptype 0)
    & s) Q+ ?; W. c  B, y* i4 N* Q
  5860.       (setq pt2 (trans (cdr (assoc 11 elist)) 0 1))
    ' A3 w- K0 `, y
  5861.       (setq pt2 (trans (cdr (assoc 11 elist)) ename 1))
    ; l/ c5 B) k# X1 [- w
  5862.     )
    / Q4 r' p; @% H! q
  5863.     (set_tile "x2_pt" (ai_rtos (setq x2 (car pt2)))). q6 d9 I% w  f3 f  q
  5864.     (set_tile "y2_pt" (ai_rtos (setq y2 (cadr pt2))))
    6 O- T# R, Z. F* {5 [; T- {
  5865.     (set_tile "z2_pt" (ai_rtos (setq z2 (caddr pt2))))
    3 K* `* b# A0 i- \, Y
  5866.   )0 U( d% t( O4 |1 g0 U) M# E
  5867.   (defun set_tile_pt3 (ptype)
    $ r& C  ?" [: @/ |/ r* M4 w
  5868.     (if (= ptype 0)8 S% |* X4 i6 A6 E: Z' P, ?9 r9 z
  5869.       (setq pt3 (trans (cdr (assoc 12 elist)) 0 1))
    , ~; }' x/ s4 s0 n4 c
  5870.       (setq pt3 (trans (cdr (assoc 12 elist)) ename 1))4 }9 G5 F- X/ f# J7 j6 d% b9 a
  5871.     )6 E% A7 D) ?( b' h
  5872.     (set_tile "x3_pt" (ai_rtos (setq x3 (car pt3))))  Q, `$ x) _$ ^" r
  5873.     (set_tile "y3_pt" (ai_rtos (setq y3 (cadr pt3))))3 B& @! R1 w! Z0 n4 e5 T; l
  5874.     (set_tile "z3_pt" (ai_rtos (setq z3 (caddr pt3))))5 F) ]5 o9 ~2 y9 v- ]- n
  5875.   )
    9 Y' x+ A) m* F& S& T. o
  5876.   (defun set_tile_pt4 (ptype)
    + A  h/ K9 {# J6 o* a
  5877.     (if (= ptype 0)
    6 k# n* o4 |/ ?1 z
  5878.       (setq pt4 (trans (cdr (assoc 13 elist)) 0 1))5 e4 W( R6 G: {) Q
  5879.       (setq pt4 (trans (cdr (assoc 13 elist)) ename 1))
    , G4 [' k" w6 O9 g4 O
  5880.     )
    8 z% k6 f, ]# ^7 U* e% R* C
  5881.     (set_tile "x4_pt" (ai_rtos (setq x4 (car pt4))))% @5 e, D: }2 z  e  X
  5882.     (set_tile "y4_pt" (ai_rtos (setq y4 (cadr pt4))))- I* j+ S: f6 w" r( i" |' r6 Q
  5883.     (set_tile "z4_pt" (ai_rtos (setq z4 (caddr pt4))))2 }* I7 b6 S7 d
  5884.   )
    0 u8 a* S( z+ s) ~' C
  5885.   ;;0 a6 \% ^- {1 P+ U) }
  5886.   ;; Xline/Ray4 y$ L! w6 E0 u9 _+ ^
  5887.   ;;% U, ]% _3 n  S& C5 D& @
  5888.   (defun set_tile_xline_pt1 ()& h9 F) e+ a2 S4 E

  5889. % B* o  X8 m  z3 L
  5890.     (setq xline_pt1 (trans (cdr (assoc 10 elist)) 0 1))' p) D. Q4 Y& b3 z# t' E9 r
  5891.   H. k  X5 i6 ^& p
  5892.     (set_tile "xline_x1" (ai_rtos (setq xline_x1 (car xline_pt1))))
    + E! p' N+ K/ m! M& H2 D% _9 [2 w
  5893.     (set_tile "xline_y1" (ai_rtos (setq xline_y1 (cadr xline_pt1)))): r  ^/ T: X3 M8 v5 o
  5894.     (set_tile "xline_z1" (ai_rtos (setq xline_z1 (caddr xline_pt1))))
    4 f& C" J3 B- h
  5895.   )
    4 [4 L) b7 y9 S  ?
  5896.   (defun set_tile_dirv ()
    ' I* _5 G/ i/ ?) }9 Y8 a
  5897.         ;; Convert 11 group to local UCS (displacement)1 m" {$ ]" S: `% ?
  5898.     (setq dir_pt (trans (cdr (assoc 11 elist)) 0 1 1))
    2 x! r, t6 ]! G

  5899. ! G" ?; s( X" n& K+ Q% b2 T
  5900.     (set_tile "dir_x" (rtos (setq dir_ptx (car dir_pt))))
    3 r- |% Y; p5 s
  5901.     (set_tile "dir_y" (rtos (setq dir_pty (cadr dir_pt))))) ?- w" L$ O3 n- ?
  5902.     (set_tile "dir_z" (rtos (setq dir_ptz (caddr dir_pt))))' }8 |; p) I3 |0 }
  5903.   )# e# T1 N6 v1 P
  5904.   (defun set_tile_xline_pt2 ()# M7 `. V  W3 O2 k/ e
  5905.     (if (not xline_pt2)
    . Y- y4 e2 M' h1 V
  5906.       ;; Initial second point is Root Point + Direction Vector: U) K2 Z& z3 z% {% U2 f1 _
  5907.       (setq xline_pt2 (mapcar '+ xline_pt1 dir_pt))* T; B  F: T3 R" T! a
  5908.     )
    / f! g% a+ F3 g# ^( w5 n
  5909.     (set_tile "xline_x2" (ai_rtos (setq xline_x2 (car xline_pt2))))) R* k& W" P( t; ]' ]
  5910.     (set_tile "xline_y2" (ai_rtos (setq xline_y2 (cadr xline_pt2))))* g5 D+ r" i( G& k8 u- B' ^( K
  5911.     (set_tile "xline_z2" (ai_rtos (setq xline_z2 (caddr xline_pt2)))). |$ h* A, T$ c) G
  5912.   )! [( @3 G0 @% o5 X/ n$ B

  5913. 6 F9 M; t) Z% W# i1 G* z
  5914.   ;;
    3 U* i9 W# I8 Y
  5915.   ;; Handle for all objects- Q5 d* B: ?7 ~" z) C0 P
  5916.   ;;" E1 U- k. }  k( b
  5917.   (defun set_tile_handle (): H( X! l% V& E, @, n9 X
  5918.     (if (setq hand (cdr (assoc 5 elist)))
    6 y' r" j) v! S, }! N
  5919.       (set_tile "Handle" hand)
    5 i& b+ s! Q8 [6 a$ ^
  5920.       (set_tile "Handle" "None")
    : W4 O8 S$ x/ L' p: J  U
  5921.     )& v7 T5 |% X9 U
  5922.   )
    ) G1 Z2 l1 ]1 j6 v  G  ~
  5923.   ;;* y2 t! M/ g1 O  C9 ?  \7 J
  5924.   ;; Radius for ARC and CIRCLE
    7 V1 D* w/ f& h/ ]" V
  5925.   ;;
    # c9 E8 [6 Y. m& B; }$ K& s
  5926.   (defun set_tile_rad ()
    " x6 i: L1 G* y2 L8 y2 J
  5927.     (setq radius (cdr (assoc 40 elist)))9 R' q+ P! b# p8 S0 t6 J
  5928.     (set_tile "radius" (ai_rtos radius))7 T! R+ Y, N( z% S% s$ Q
  5929.   )
    3 J. m2 q) ^- l4 h& K8 d' F. j; a! P
  5930.   ;;; n, y! m1 K, G
  5931.   ;; Start angle for ARC
    / C! W; k3 B0 ?$ x- k! ~- d
  5932.   ;;% ?' w3 K7 J! {2 M
  5933.   (defun set_tile_stang ()
    9 A/ c' A* o  X3 G1 W' P& N
  5934.     (setq st_ang (cdr (assoc 50 elist)))' }  a/ \  k" g" ^2 l
  5935.     (set_tile "st_ang" (ai_angtos st_ang))8 z: Q! G0 F. l( j. f* K2 s/ d) s4 a
  5936.   )
      J! g/ ?& F7 W0 T
  5937.   ;;
    * G4 d7 j! ]7 k, g: `; k1 q& A
  5938.   ;; End angle for ARC( k) j$ F. n% K8 i
  5939.   ;;, X# h; X1 s" A$ }. w: {) E
  5940.   (defun set_tile_endang ()
    ) w8 r/ J+ h3 N  a
  5941.     (setq end_ang (cdr (assoc 51 elist)))
    - G: y( A( K, i- p
  5942.     (set_tile "end_ang" (ai_angtos end_ang))6 h2 O3 `; Q: b5 p4 t
  5943.   )
    ! Z: b! D( w+ @; N+ X) W
  5944.   ;;
    / G, R( C: q, a& F! Q  Z' t' A9 o2 C3 h
  5945.   ;; Rotation Angle - Text, Attributes, Block insertions and Shapes4 V8 m( ?; Z4 v
  5946.   ;;; v+ V' E: q; N6 K
  5947.   (defun set_tile_rot ()
    . d/ P8 u- }$ L6 e2 h6 e
  5948.     (setq rot (cdr (assoc 50 elist)))' c3 ~3 M+ `5 @8 t  Q+ r1 `
  5949.     (set_tile "rot" (ai_angtos rot))7 \; [: N8 H5 u3 l! a
  5950.   )$ L; Q, y+ f: A5 |  I
  5951.   ;;
    * H9 J9 l' c6 _% T: m( W# h
  5952.   ;; Height - Text, Attributes and Shapes* S" F7 G% h% ?1 H
  5953.   ;;! A9 s, _5 S4 s6 l( ]
  5954.   (defun set_tile_hght ()6 M; k4 w! ^6 e* i3 I" @
  5955.     (setq hght (cdr (assoc 40 elist)))7 ?; h! g$ l1 L' F- [
  5956.     (set_tile "hght" (ai_rtos hght))
    - [- Z; d4 o+ V6 z# i# K' @
  5957.   )
    5 }$ q5 G! U' y8 |
  5958.   ;;$ B4 @) o. E; ]# U2 `' {. ?" M
  5959.   ;; Width Factor - Text, Attributes and Shapes
    7 ~8 J: D4 o5 J
  5960.   ;;
    , H! K5 F2 n* ?' K8 K
  5961.   (defun set_tile_wid ()+ |/ L1 O) `. z- ]
  5962.     (setq wid (cdr (assoc 41 elist)))
    3 S$ z4 D7 g8 Y9 w1 [
  5963.     (set_tile "wid" (ai_rtos wid))* P8 C: g7 i& m
  5964.   )1 |! n* C! M& \
  5965.   ;;
    8 B; l% a% o2 J* p9 ^8 D
  5966.   ;; Obliquing Angle - Text, Attributes and Shapes! f8 h2 Y3 \% @4 c% w0 J; E
  5967.   ;;' Y2 j# D$ f6 @! [2 a
  5968.   (defun set_tile_obl ()
    * d# g/ U6 @6 q8 e. V2 g
  5969.     (setq obl (cdr (assoc 51 elist)))
    . {% Q% s# H+ V* S2 h9 E
  5970.     (set_tile "obl" (ai_angtos obl))9 U: e- I- n% q3 @( i0 i( N2 k
  5971.   )7 q2 S$ s! ^& H3 Y$ U, J
  5972.   ;;
    " V% u, S) \2 i& T1 I! M
  5973.   ;; Text string
    " w( L# H7 o: M$ M
  5974.   ;;+ Y& t7 C1 H, Z" r, `5 S5 ]
  5975.   (defun set_tile_text ()
    ; a$ i2 a7 g6 M" w2 u
  5976.     (setq text (cdr (assoc 1 elist)))
    . z( D! Q# o# f+ O5 W7 [4 N& q5 N* O
  5977.     (set_tile "t_string" text)5 f6 T6 i# I0 a
  5978.   )) E0 z( ?$ j  _
  5979.   ;;5 L2 F" o, y7 }7 w5 c% m
  5980.   ;; Attribute Tag% x; g5 w& B  N2 l7 O
  5981.   ;;$ `" V  P# V9 Z* l
  5982.   (defun set_tile_tag ()0 }% n/ O$ J; m
  5983.     (if (= etype "ATTDEF")" w0 g' R" e9 @: [! ?  ?
  5984.       (progn
    % e/ W$ f( r/ T( C  ]
  5985.         (setq attag (cdr (assoc 2 elist)))
    7 H/ P. r% Z9 s: F
  5986.         (set_tile "tag" attag)/ S' i1 x4 q; I
  5987.       )' f0 C$ h+ v6 }/ |0 k& @
  5988.     )
    2 L" p! Y4 P4 o" m$ Z. e6 _
  5989.   )1 M# l' U9 k. j7 a. l* P" ?9 K
  5990.   ;;/ v! b0 A9 B2 ^2 S" d5 G' `
  5991.   ;; Attribute Definition
    ; v: k6 T' x  I1 Q8 Q( ?! m* D
  5992.   ;;5 c( j1 q: s" I
  5993.   (defun set_tile_prompt ()
    ( O6 Z; _$ Z+ p1 W2 f' ?- {. L
  5994.     (if (= etype "ATTDEF")0 @% h( E- {* U- j1 w# H
  5995.       (progn
    7 A! q. {5 Z  ^' m1 ?
  5996.         (setq atprompt (cdr (assoc 3 elist)))% w: I" v$ _; |+ J* q6 R: I
  5997.         (set_tile "prompt" atprompt)
    0 x3 l& c- U, Y+ `6 g7 s3 C: D
  5998.       )* M: W0 L$ z4 `( l2 Q1 u7 W
  5999.     )
      m6 M2 l0 \0 g5 f& |* Q7 {7 D
  6000.   )
    8 W" g0 n3 x% m$ V: o! p
  6001.   ;;
    " t' s6 w9 ?0 @: s
  6002.   ;; Justification setting for Attributes and Text.  Initializes8 Y8 ?) O* L& \6 O6 c( W
  6003.   ;; popup list box
    + L+ @9 s, K( o* v
  6004.   ;;
    ' l' W5 u% z" f1 i  V
  6005.   (defun set_tile_just ()5 D6 ^$ S2 T1 {3 I% f" o; Z
  6006.     (setq ha (cdr (assoc 72 elist)))  ; horizontal alignment; ?- f2 {* s) M" g5 a
  6007.     (setq va (cdr (assoc 73 elist)))  ; vertical alignment
    2 N- i# S1 ^. Z9 W, e
  6008.     (setq ha-prev ha): v  R( c$ I: d
  6009.     (if (= etype "ATTDEF")! @4 C' L1 V5 Q' ?& L! z7 _
  6010.         (setq va (cdr (assoc 74 elist)))  ; vertical alignment$ n* {7 A1 _  h, \
  6011.     )
    ( o- _3 E& E3 X2 e9 _0 K4 N* [: U
  6012.     (setq jlist+ H- K) [1 H0 r! K+ c/ h4 a
  6013.           (list "Left"        "Center"        "Right"
    7 F1 q7 O: j6 u, n  Y0 [
  6014.                 "Aligned"     "Middle"        "Fit"
    8 n& k2 l0 i! R- p4 i0 }6 }
  6015.                 "Top left"    "Top center"    "Top right"
    , ~* T( R4 P, i% E! L9 M- ^5 p
  6016.                 "Middle left" "Middle center" "Middle right"
    ! _- x( [8 }7 V7 L
  6017.                 "Bottom left" "Bottom center" "Bottom right"
    ' E3 c4 e, B6 T5 F
  6018.           )
    ! k: Y% p: p9 f0 S6 Z5 s
  6019.     )4 z0 \: B' E8 [) Z$ c. H- }# ~
  6020.     (start_list "popup_just")& p5 B2 P5 a! I6 c
  6021.     (mapcar 'add_list jlist)
    1 @8 g* P3 Z) E) v8 v) U
  6022.     (end_list)- W0 W1 [  _) S3 O) K- v
  6023.     (set_just_idx)+ k8 K+ b* ]- C8 x% B3 q% |
  6024.     (set_tile "popup_just" (jlist_act just-idx))" m5 _) l- A* H0 x3 I  R! ~
  6025.   )
    " B7 ~3 P+ L  o5 t
  6026.   ;;- \& ?8 k: \2 o- P/ B) U
  6027.   ;; Style setting for Attributes and Text.  Reads symbol table for popup list. X  M0 f8 e) ~6 X  }5 o  c
  6028.   ;; box.
    ; T2 r6 y, c, M4 d
  6029.   ;;
    $ g; D9 ?. q" v# Q
  6030.   (defun set_tile_style (/ sname style-idx tlist)+ V- X: W# J. |+ `6 \/ m. L
  6031.     (setq tlist (tblnext "STYLE" T)
    6 j3 q& f: g$ f' S' Y; B0 c, Z: {$ S
  6032.           slist nil)" y4 [: S" ]( }" e
  6033.     (while tlist
    . Z# F" q+ s' P9 i
  6034.       (setq sname (cdr (assoc 2 tlist)))9 x$ f3 t: V, a9 c- B8 Z  j
  6035.       (if (and (/= sname "")' d4 a/ y8 h& a, M8 E/ \
  6036.                (/= (logand 16 (cdr (assoc 70 tlist))) 16))
    + h) j& }$ c- D, c2 Y+ V
  6037.           (setq slist (cons sname slist)))
    . G6 C, ^, U2 B" x2 `9 l
  6038.       (setq tlist (tblnext "STYLE")))
    0 t2 P/ b2 `* K5 K: c5 G
  6039.     (if (>= (getvar "maxsort") (length slist))/ j6 [9 B. G8 A! V7 V
  6040.         (setq slist (acad_strlsort slist)) ; alphabetize style list+ K6 Y+ L  {* H+ t9 Z; V5 v2 i
  6041.       (setq slist (reverse slist)))     ; or reverse it to put it in DB order
    8 L4 w- `& S1 l# k8 L1 L* B1 n/ w4 ^! F
  6042. 9 e7 q& L7 ]( I1 ^9 _; i+ ~
  6043.     (start_list "style")' @% }/ U0 |+ y' B6 L
  6044.     (mapcar 'add_list slist)
    9 P( s) W; T9 N3 b
  6045.     (end_list)
    * x% ^: J/ ~4 x% P5 H. r9 _
  6046.     (setq tstyle (cdr (assoc 7 elist)))
    : c4 V7 Z9 ^0 R+ a' _
  6047.     (setq style-idx (getindex tstyle slist))
    % }7 X9 i9 h3 `! g  y
  6048.     (set_tile "style" (itoa style-idx))6 A) _" V( h5 [1 f  S5 ^0 O
  6049.   )6 |7 S$ V- v' m. L3 R7 V
  6050.   ;;
    8 s/ b1 X8 s9 R8 b3 ]; ?
  6051.   ;; Text and Attribute setting - upside-down, backwards* z$ S. \/ [0 i8 |
  6052.   ;;
    & k# r, H! p0 O0 C
  6053.   (defun set_tile_bk-up ()% r1 ~; C% G, F6 N" q0 N% J
  6054.     (setq bk-up (cdr (assoc 71 elist)))1 X4 O& Z3 ?0 s3 e+ k, u
  6055.     (if (= (logand bk-up 2) 2)
    6 O5 Q2 }5 e4 w  X% F& C, ]
  6056.       (set_tile "bkwd" (itoa (setq bkwd 1)))
    9 v, M: {3 r) \
  6057.       (set_tile "bkwd" (itoa (setq bkwd 0)))) t) G0 ~. Q* L4 I
  6058.     )$ R8 z& e2 Z$ q- {+ ?" H
  6059.     (if (= (logand bk-up 4) 4)
    ) p5 t' T5 H7 f) {2 l: D0 ?- [
  6060.       (set_tile "upsd" (itoa (setq upsd 1)))
    / U$ u$ _7 M6 Y" a; s2 B
  6061.       (set_tile "upsd" (itoa (setq upsd 0)))
    7 c, S! K! w2 V2 K0 r
  6062.     )
    7 P. x& g! D% ?% U1 d- b4 Q
  6063.   )- [8 n) I% [6 ~% p; z* O" D: c9 P% U
  6064.   ;;
    ! b( ]  h) a: R
  6065.   ;; Attribute setting - invisible, constant, verify, preset
    . z  y" B3 k: i) Y+ D6 x
  6066.   ;;
    1 X! N8 v/ x& @$ a# T/ I  {* e! g
  6067.   (defun set_tile_icvp ()
    6 {/ i2 T0 g5 E( C' N
  6068.     (if (not (setq icvp (cdr (assoc 70 elist)))), g+ M3 _5 w& t( X. o
  6069.       (setq icvp 0)0 d3 Z) v7 t" G) ~
  6070.     )  T4 _6 T9 _) r5 ]- [
  6071.     (if (= (logand icvp 1) 1)
    . h$ x$ D7 A; U  Q
  6072.       (set_tile "inv" (itoa (setq inv 1)))* t6 i$ F# p% @+ ?: l, h$ s/ x4 f; |$ X; e
  6073.       (set_tile "inv" (itoa (setq inv 0)))6 Q. [1 X) s; y) Y+ P
  6074.     )
    8 R# m$ O) o5 |
  6075.     (if (= (logand icvp 2) 2)6 X5 {% `3 M* t4 I" B. D+ S) U- ?) C
  6076.       (set_tile "con" (itoa (setq con 1)))
    ; ?- X% N. V4 z9 E. R& t- w' c
  6077.       (set_tile "con" (itoa (setq con 0)))
    9 p3 ?5 W% z/ q4 l0 |0 A
  6078.     )) \! Z) Q7 y7 ~) g; |- Q
  6079.     (if (= (logand icvp 4) 4)
    $ D: D8 g5 R# ?
  6080.       (set_tile "ver" (itoa (setq vfy 1)))* ]8 v! ?1 c4 O) X
  6081.       (set_tile "ver" (itoa (setq vfy 0)))
    ) G) q! r/ l. o! F
  6082.     )1 v5 H; R( ~7 ]4 b4 Q  Q
  6083.     (if (= (logand icvp 8) 8): n0 J+ N" z4 s' d0 d" g
  6084.       (set_tile "pre" (itoa (setq pre 1)))+ l9 _( m2 w) V" @+ K0 u# {6 t. p
  6085.       (set_tile "pre" (itoa (setq pre 0)))
    : L  y$ S7 Y2 ^# f% j% D( J
  6086.     )& x* L5 E0 I) J+ W
  6087.   )
    5 N2 p7 V9 W% A0 J
  6088.   ;;
    2 W! j. i- H. ^" t" ~& j. j
  6089.   ;; Scale factors for block insertions
    - p; g. n# {6 w4 k7 W: T# L
  6090.   ;;2 U2 @9 O+ I* i& }( G
  6091.   (defun set_tile_scale (/ temp)' I1 P$ v0 Q* O. A7 P; J
  6092.     (setq temp (getvar "LUNITS"))4 A5 ~! Q$ n: X: q
  6093.     (setvar "LUNITS" 2)) p: z( d# Q% Y0 f
  6094.     (setq xscale (cdr (assoc 41 elist)))
    2 A3 ^) X$ s# y% M
  6095.     (set_tile "xscale" (ai_rtos xscale))
    ! ~9 ~. S$ g* H/ P$ Q/ L5 ^* o
  6096.     (setq yscale (cdr (assoc 42 elist)))
    # o2 k& ?) z* L6 W1 {' a$ {
  6097.     (set_tile "yscale" (ai_rtos yscale))
    / ^" C; O8 Z. J) w  M0 }7 j" X
  6098.     (setq zscale (cdr (assoc 43 elist)))+ Y2 b# x. |+ Y8 @8 r+ B
  6099.     (set_tile "zscale" (ai_rtos zscale))6 c6 z$ n% d' H( @) l5 Q5 ]
  6100.     (setvar "LUNITS" temp)
    % I( |1 s5 n- S
  6101.   )
    : D4 }9 p, h2 q9 k; H
  6102.   ;;' y' E9 A* F8 C( O
  6103.   ;; Rows and columns for block insertions' P& n+ p0 B$ `+ U& W
  6104.   ;;6 S, U; g4 n! V1 G
  6105.   (defun set_tile_rc ()
    . t$ j$ M2 d  W  @
  6106.     (setq columns (cdr (assoc 70 elist)))
    : y: I/ d: y% m- t, O
  6107.     (set_tile "columns" (itoa columns ))- B8 T4 n; b8 D0 o
  6108.     (setq rows (cdr (assoc 71 elist)))
    # A4 q( C9 ]$ j2 a
  6109.     (set_tile "rows" (itoa rows))- z' O. ?/ W8 T
  6110.     (setq col-sp (cdr (assoc 44 elist)))
    - z( z% H1 j1 v1 g: k' y
  6111.     (set_tile "col_sp" (ai_rtos col-sp))+ k6 s0 M5 O3 V9 S3 Y5 f; ]' I- e
  6112.     (setq row-sp (cdr (assoc 45 elist)))
    7 T8 A  s8 K) e  T( I
  6113.     (set_tile "row_sp" (ai_rtos row-sp))* h8 T+ D, E8 O
  6114.         (if (/= hasclip T)! {6 X8 ~, l/ a( F+ H8 @- C6 w
  6115.                 (mode_tile "xcliponoff" 1); t2 e# c2 i) L* c2 l
  6116.                 (set_tile "xcliponoff" (itoa xcliponoff))
    ( I) T2 `& D1 S
  6117.         )
    # H% d, g( l! R, l
  6118.   )* G- i/ {2 b- A7 G$ U2 @6 H
  6119.   ;;( s/ B5 {( y  `5 e: l  s) {
  6120.   ;; Invisible edges for 3DFACE
    0 ]2 r# l( [7 m( B/ F
  6121.   ;;* l! J3 @( V3 `, l( {
  6122.   (defun set_tile_edges ()9 ~. t0 |8 u0 c( k
  6123.     (setq f-vis (cdr (assoc 70 elist)))
    9 e1 D" c1 @% x& Q2 W
  6124.     (if (= (logand f-vis 1) 1). J  v) m% x  h# {* \- X
  6125.       (set_tile "edge_1" (setq edge1 "0"))
    7 ~! z) N( X3 U& t0 ~& N
  6126.       (set_tile "edge_1" (setq edge1 "1"))7 T6 R" Q# s, l- m3 p8 j
  6127.     )5 s8 L: d$ ?9 I. H$ {. Y
  6128.     (if (= (logand f-vis 2) 2)
    + M. q- s& e9 M! R
  6129.       (set_tile "edge_2" (setq edge2 "0"))
    % w5 d3 p. Z# j/ L6 e( e
  6130.       (set_tile "edge_2" (setq edge2 "1"))
    5 O" L7 J! g; z8 e9 Y% w
  6131.     )) `4 j- H: u6 K4 E( P
  6132.     (if (= (logand f-vis 4) 4)
    8 O+ g6 F& U# z7 q& H& N
  6133.       (set_tile "edge_3" (setq edge3 "0"))& @" n! H- [9 Q. s
  6134.       (set_tile "edge_3" (setq edge3 "1"))
    : U7 Y6 z$ C1 f, Q' q
  6135.     )
    / f0 a6 C  v! h" ~
  6136.     (if (= (logand f-vis 8) 8)! j. C& ]& P6 R6 ]; r- H, b" {6 A
  6137.       (set_tile "edge_4" (setq edge4 "0"))
    1 k3 B/ {- B+ M8 a% u
  6138.       (set_tile "edge_4" (setq edge4 "1"))/ w* l9 p  t( |
  6139.     )! q9 x% H; M- g# L( O1 Z% c
  6140.   )
    1 P. H6 n7 o! Q6 _( X2 n
  6141.   ;;3 T& }, S" d1 U! `* L( z
  6142.   ;; XYZ Point values for polyline vertex, P0 u, L( U6 n' N, p' s% H
  6143.   ;;
    ( B& Q* H1 W# H7 \+ X: y
  6144.   (defun set_tile_vpt (ptype)6 E6 Z! r7 c$ e" O
  6145.     (if (= (cdr (assoc 0 vlist)) "LWPOLYLINE")0 |; D; i( d- X% V3 E1 \
  6146.         (progn
      K( d1 O4 Z, y
  6147.             ;; ctr is 1 based, vertices are zero based.
      r  u/ T  I4 b1 f
  6148.             (setq vpt (cdr (getLwVert (- ctr 1))))
      _0 O: ?9 g9 D! n* n
  6149.             (set_tile "xtext" (rtos (setq x1 (car vpt))))
    9 W9 a/ P8 Z$ |
  6150.             (set_tile "ytext" (rtos (setq y1 (cadr vpt))))
    2 G+ d. X$ H( O4 y! F; P
  6151.             (set_tile "ztext" (rtos (setq z1 (caddr vpt))))
    4 {7 F( ?* t' c# T
  6152.         )
    2 R$ B8 ], u4 j# Z$ D
  6153.         (progn; d) Q9 m# N, J- [
  6154.             (if (= ptype 0)! l% y8 X$ A! K8 U
  6155.                 (setq vpt (trans (cdr (assoc 10 vlist)) 0 1)), J, Q( W/ R" C, H, O
  6156.                 (setq vpt (trans (cdr (assoc 10 vlist)) ename 1))6 G" r8 h8 b1 }$ [5 F. R5 H. X, q
  6157.             )
    ! e, u# u8 w7 f9 w

  6158. ; [: i. o3 |, g3 W
  6159.             (set_tile "xtext" (rtos (setq x1 (car vpt)))), Z" B5 G( T3 N
  6160.             (set_tile "ytext" (rtos (setq y1 (cadr vpt))))0 [7 E/ j% |5 O  l+ ]8 d$ J
  6161.             (set_tile "ztext" (rtos (setq z1 (caddr vpt))))& W! w4 {: J: g3 `1 i
  6162.         )- m$ Y; \" }+ n6 f
  6163.     )( v# A  q" ~2 l

  6164. 4 b2 H5 Y6 }7 E# Z
  6165.   )3 n+ a: Z# a6 F) o5 `% ^
  6166.   ;; This is the equivalent to doing an entnext on the heavy weight, M; J% X1 @; S- B
  6167.   ;; polylines. The hard coded '4' below allow stepping over the+ B& j1 c& Y4 y; Y; h5 E, G) I
  6168.   ;; 40 41 and 42 group code information. The while loop finds the$ {/ J7 ]- Z% R! F/ K
  6169.   ;; first vertex which will be used as the starting assoc in the
    ( W- h  o, A' O% ]% E
  6170.   ;; call to nth.
    . B1 q8 H0 M2 Z2 Q1 p
  6171.   ;;
    9 Q- V+ w% i8 G; k
  6172.   (defun getLwVert (tmpctr / count tmp); e6 c* q8 `4 a
  6173.     (setq count 0)  s1 _( y; q' H7 }) g
  6174.     (while (/= (car (nth count vlist)) 10)% D2 n" d8 f. O5 M4 ~0 q
  6175.         (setq count (+ count 1))  ^& n# |( S& H
  6176.     )
    ! B/ ^0 k; y/ M* d& v
  6177.     ;; If the counter reaches the number of vertices,
    5 [& @2 c9 ]5 l% K
  6178.     ;; reset ctr and tmpctr to zero again.5 P% K' l/ F9 g- a  ~% ~8 Y3 D5 P; [
  6179.     (if (= tmpctr (cdr (assoc 90 vlist)))
      o5 N& Q2 H5 m  x7 n0 U6 J
  6180.         (progn
    1 k+ }6 g2 j9 r1 [9 O: ?/ |
  6181.         (setq ctr 0)
    $ L3 H1 |) j& _
  6182.         (setq tmpctr 0)
      M$ J: ?: a! n8 y
  6183.         )3 B  {* D6 E+ L+ ^0 b! [" \" M
  6184.     )8 Q  R9 T5 i4 b
  6185.     (setq tmp (nth (+ count (* tmpctr 4)) vlist))
      h0 |; T# V- K6 ]% [
  6186.     (setq tmp (append tmp (list(cdr (assoc 38 vlist)))))7 O" Z2 R/ g) a4 G9 o
  6187.     (setq pt1 (trans (cdr tmp) (cdr (assoc -1 vlist)) 1))" U4 [2 s; O) H, S9 I0 V1 R3 m
  6188.     (setq tmp (cons 10 pt1))
    1 B: A5 |* ?  `' X& d5 R. y
  6189.     (setq tmp tmp). C6 ~9 I) t8 i/ Z/ x
  6190.   )
    + s& l- |& U  U, S3 G4 C
  6191.   ;;
    ( O" r& d0 k( @$ q, o& X! O5 J& v
  6192.   ;; Set tiles for Spline properties. If the spline is rational then we
    3 f) `6 N; S1 F5 C  O8 M" [* r
  6193.   ;; need to display the weight values of the control points, so set
    6 \- I* Z) s) V( N
  6194.   ;; flag to 1.
    & ]# k: b6 q" [) w6 R+ G
  6195.   ;; 1 = rational spline0 |  T) u- r8 \# x( j# S6 k% Y
  6196.   ;; 0 = non-rational spline* N. Y! l8 m" k/ X
  6197.   ;;
    0 A$ B3 M  `2 Q  m1 z/ C; h
  6198.   (defun set_tile_spline_props ()
    / |) ?8 Z" F. t9 ^. j. u
  6199.     (setq rational_spl_flag 0)      ;; initialize rational spline flag
    0 ]1 l; c' r* b% p7 ~: _6 h
  6200.     (set_tile "Degree" (itoa (cdr (assoc 71 elist))))
    " ~  C1 f8 T% ^
  6201.     (setq bit70 (cdr (assoc 70 elist)))
    ( T# M) A' s, G" ?
  6202.     (if (= (logand bit70 1) 1)
    7 h+ B1 n4 ~2 x. v- g7 H
  6203.         (set_tile "SpProp4" "Closed")( R9 d' |+ W4 D
  6204.         (set_tile "SpProp4" "      ")
    - F# M* }/ @7 D* V6 L
  6205.     )
    1 U2 [- o6 h7 C3 u' P: j5 w  h
  6206.     (if (= (logand bit70 2) 2)1 L, U! J7 c' n+ l
  6207.         (set_tile "SpProp3" "Periodic")
    ! l  |" G2 T5 T5 h% n' @' R& y7 y
  6208.         (set_tile "SpProp3" "Non-Periodic")( I3 v+ n" ]# m; V5 U
  6209.     )' [# u/ `: k# n& p: S' H  p( a' z9 p
  6210.     (if (= (logand bit70 4) 4)& O: r  z' F* z) E
  6211.       (progn
    3 q3 J+ N" A% t0 v
  6212.         (set_tile "SpProp2" "Rational")+ `* J# A2 \/ B  E
  6213.         (setq rational_spl_flag 1)      ;; this is a rational spline$ r3 X. r; `) R; Q/ m
  6214.       )
    / y5 o" u; U4 r& ~  ~
  6215.         (set_tile "SpProp2" "Non-Rational")
    + Z, N& C, s7 |( [% Q1 Y8 M. t
  6216.     )
    2 [- u+ A" J9 S1 {) k: h
  6217.     (if (= (logand bit70 8) 8), B5 D9 P  [3 T, _! [! Y
  6218.         (set_tile "SpProp1" "Planar"): G5 {) S  x- d" O2 t! ^
  6219.         (set_tile "SpProp1" "Non-Planar")3 I- y8 u% [+ b4 z- I4 }3 w
  6220.     )4 f3 H7 b' R0 m5 B
  6221.     (if (= (logand bit70 16) 16)( u" r0 u; E, y+ l$ C4 D9 ]
  6222.         (set_tile "SpProp5" "Linear")
      F! c' p& B! w) a5 v5 V0 _
  6223.         (set_tile "SpProp5" "      ")
    , @8 K- O% j  I% X: r$ ~
  6224.     )6 [1 e/ |9 U7 b9 ^9 t) J
  6225.   )
    * @. w1 n0 M' v4 ?( A
  6226.   ;;
    ! N3 K0 w$ s2 K3 W9 e; R
  6227.   ;; XYZ Point values for spline points- L" ?- t' W6 N3 K5 U7 K
  6228.   ;; Need to account for WCS/UCS
    . M: }; m, e* Z$ q3 U
  6229.   ;;- ~7 j& s* l) k1 k" ^2 s
  6230.   (defun set_tile_cntl_pt ()
      _+ p2 T, u9 n: m; [
  6231.     (setq cntl-pt (cdr (assoc 10  elist)))9 M8 m! `2 _1 p( Y+ b
  6232.     (set_tile "xtext" (rtos (setq x1 (car cntl-pt))))
    : H, @5 E" V& o7 d. b' O
  6233.     (set_tile "ytext" (rtos (setq y1 (cadr cntl-pt))))
    9 ^: r, a" z6 b9 @0 i
  6234.     (set_tile "ztext" (rtos (setq z1 (caddr cntl-pt))))
    + t* h) w: G& L% ^, _
  6235.     (if (= rational_spl_flag 1)      ;; if rational spline. k% `. _0 B3 G3 ~: L# j- l
  6236.       (progn                         ;; show weight0 u9 ^0 p( X6 w" a
  6237.         (setq weight (cdr (assoc 41 elist)))
    ! R8 V+ m$ O* K5 z9 G! K
  6238.         (set_tile "weight" (rtos weight))
    # E$ S: ~9 ^( H$ m' F( l2 P
  6239.       )                              ;; else
    0 @7 x& H1 {1 f
  6240.         (mode_tile "weight_text" 1)  ;; disable weight field$ r3 M# X; J2 E% l3 u0 Y
  6241.     )6 W5 c" P( l  }- y7 `- H
  6242.   )$ D. j+ h% x( @" g" U; F, I3 y3 p2 I
  6243.   ;;
    ! V. T3 r/ ~6 l6 ~5 O, }) Y
  6244.   ;; XYZ Point values for spline points' w/ a3 \/ P" k
  6245.   ;; Need to account for WCS/UCS
    7 d) {; h" v+ r+ W7 }: M
  6246.   ;;4 x6 D! S5 ^* e0 r, _# Y
  6247.   (defun set_tile_data_pt ()+ \) N" Y% u# C+ {5 H( Y! K5 k
  6248.     (if (not (assoc 11 elist)): S, N7 A9 T# H4 c% l/ h6 h; f
  6249.       (mode_tile "data_pts" 1)3 }' o7 E9 A$ Y5 o% O; i  _
  6250.       (progn
    $ }( @9 K; h& ^' y" I9 A
  6251.          (setq data-pt (cdr (assoc 11  elist)))
    $ ]% e; `) N0 Y* s2 r
  6252.          ;; display points with current precision.: _% a( i. Q9 d& t# t
  6253.          (set_tile "dxtext" (rtos (setq x1 (car data-pt))))
    0 }7 ^4 A$ e$ P* _5 F& U- i0 U+ r; r8 C' F
  6254.          (set_tile "dytext" (rtos (setq y1 (cadr data-pt))))
    ) C1 T2 p( B# _. Z7 v/ B
  6255.          (set_tile "dztext" (rtos (setq z1 (caddr data-pt))))$ K5 i0 ~+ D1 M1 p# m
  6256.       )+ ~! m6 H/ ]1 p: D8 m" z& p$ v
  6257.     )
    4 x4 r- k0 @  u# }
  6258.   ); u. Y! U8 u% w7 X* x# ~; y& Z
  6259.   ;;
    " b( K. `+ C- U. f8 X
  6260.   ;; Fit curve, fit spline, or smooth spline surface setting- p& e% Z: B, g2 g
  6261.   ;;$ r5 J1 V: S; H/ T4 g
  6262.   (defun set_tile_fitsmooth ()
      t  J( S  n6 K8 K/ p& z6 i' \
  6263.     (cond8 K/ {0 @5 B: p( C  x% k7 k
  6264.       ((= (cdr (assoc 0 elist)) "LWPOLYLINE")
    + U4 y& E$ \5 |+ Z+ C9 q5 Q; q
  6265.         (set_tile "none" "1")4 l6 d4 c9 y  L
  6266.       )
    5 T+ @/ q! j  e
  6267.       ((= (logand bit70 4) 4)4 E: L% X- h$ p( @6 I
  6268.        (cond
    & M* }' E' {" Q. Y$ `
  6269.          ((= bit75 0)0 l5 v) v( n& P9 P7 a& y$ @6 T
  6270.            (set_tile "none" "1")) S) E: i  G: u, \/ P
  6271.            (setq spltype 0)3 R  Z8 j% S% g* O* N; P1 O1 W
  6272.          ): N1 Y* V; |. \( q' h+ G0 V% t2 ^
  6273.          ((= bit75 5)
    4 d2 ^, ]5 L( B6 W% E  o
  6274.            (set_tile "quad" "1")
    . {9 G  L8 `- Z: Q, d
  6275.            (setq spltype 5)
    ) |) g3 d% T) J& k
  6276.          )! [: k% H8 @7 C
  6277.          ((= bit75 6)
    & q2 K) G* a9 D2 |- @; A) J
  6278.            (set_tile "cubic" "1")
    6 W9 n/ H! ]9 b
  6279.            (setq spltype 6)$ `; W& ^* l7 q7 p1 \3 T4 I
  6280.          )
    $ P1 @, m1 K* ~8 x; e" F& q
  6281.          ((= bit75 8)1 R+ V4 S+ Z( L" C/ e' k$ n
  6282.            (set_tile "bezier" "1"): ^. i- b2 q8 o6 ]
  6283.            (setq spltype 8)
    8 O' R) c! h% q6 f  I# @& w+ }; N. u
  6284.          )' a. g# d( k# [! A& |/ H
  6285.        )4 o, p/ A( R8 u& D+ Z: Y( X
  6286.       )- i# W9 h3 O' A0 T9 L: @
  6287.       ((= (logand bit70 2) 2)
    # w# _1 G. F- }5 B) t: J: V
  6288.         (set_tile "fit" "1")
    / g8 j. {+ L& J- y$ N) Y" h
  6289.         (setq spltype 1)
    5 Z; B! z( ^% |4 |
  6290.       )
    ' t6 [( }4 Z) k
  6291.       (T (set_tile "none" "1"))
    ! ]7 `' M% w# {7 d
  6292.     )6 e( H, z3 E0 E& i
  6293.   )/ F: d; U" j$ u
  6294.   ;;! Z: t( r# ^" B" h! x3 [7 S
  6295.   ;; Closed or Open mesh and polyline setting6 ?. S. A2 ~( _
  6296.   ;;
    ( a  t* T5 k+ J7 X, x
  6297.   (defun set_tile_closed ()
    * a# O5 r9 D) v- q) G
  6298.       (if (= pltype "3D mesh")
    - q. h7 _' w' y$ I9 m( {' t$ i" H
  6299.         (progn0 y2 J1 d; ~: E; n- }
  6300.           (if (= (logand bit70 32) 32)0 Q$ t2 C7 S2 W. T6 h0 M& B
  6301.             (set_tile "closedn" (setq closedn "1"))
    * ]0 g5 J7 x' |3 u/ r0 @  K
  6302.             (set_tile "closedn" (setq closedn "0"))
    6 R" Q9 u5 @7 F4 q* [( r
  6303.           )
    ( F% [8 ~0 v- N0 J
  6304.           (if (= (logand bit70 1) 1): E7 w3 [3 w( Z
  6305.             (set_tile "closedm" (setq closed "1"))
    $ f5 X. _8 ]# ~3 h* D5 u) K8 q/ X0 T
  6306.             (set_tile "closedm" (setq closed "0"))
    - |7 B! X8 m9 @5 T4 I" [
  6307.           )7 I4 n8 t3 I% W5 L
  6308.           (setq old-closedm closedm old-closedn closedn)0 d& Q5 J3 h/ B- A9 D; X
  6309.         )
    8 Y5 p9 T7 K+ J( g% c) l
  6310.       )
    1 d8 A' [4 A( \4 ~- [* s
  6311.       (if (or (= pltype "2D polyline")
    9 K1 @! Y& }, }
  6312.               (= pltype "3D polyline")* J7 Q/ p* R/ ~& i2 p: B
  6313.           )5 y7 W0 r0 B* W, ?3 O1 i. }; k
  6314.         (progn
    / q2 J1 l6 R' k" {- W
  6315.           (if (= (logand bit70 1) 1)
    0 N* D4 l! [8 u+ K8 m  u
  6316.             (set_tile "closed" (setq closed "1"))  w  r& ], }3 l
  6317.             (set_tile "closed" (setq closed "0"))
    $ S. ~9 w4 g- Y2 @
  6318.           ): P( s& ^% n0 j/ R. h& o
  6319.           (setq old-closed closed): D3 f, {! V& [" U, n7 r6 l
  6320.         )
    - @8 ~" ?0 G. n; A7 M2 S0 k4 U
  6321.       )1 I) r) S- ~8 A9 Y
  6322.   )$ O0 r. E0 P# M( h
  6323.   ;; Set common action tiles7 j4 a) V3 c# H% D# l
  6324.   ;;
    % Y) X* ?  H, I  p, W' r
  6325.   ;; Defines action to be taken when pressing various widgets.  It is called4 \! z% E: L4 D4 V" G( Z
  6326.   ;; for every object dialogue.  Not all widgets exist for each object dialogue,/ D9 W! t+ ~& d8 Q: q7 r' {7 U
  6327.   ;; but defining an action for a non-existent widget does no harm.
    $ F% |- b$ E( m+ p+ q
  6328.   (defun set_action_tiles ()
    % ?! `" R5 u9 o
  6329.     (action_tile "cancel"       "(dismiss_dialog 0)")
    + K, S+ {) H3 e6 j4 r
  6330.     (action_tile "accept"       "(dismiss_dialog 1)")
    * s3 `9 h: i  q( n% i3 U0 y4 |0 R# \
  6331.     (action_tile "help"         "(help \"\" help_entry)")/ F; W$ K! _1 P8 `( K
  6332.     (action_tile "b_color"      "(getcolor)")- F, c- W) {* W2 I5 `& @
  6333.     (action_tile "show_image"   "(getcolor)")' X3 q  M5 F1 n( b" }
  6334.     (action_tile "b_name"       "(setq elayer (getlayer))")& i# K# O% b% P5 E; v0 D% a5 {
  6335.     (action_tile "b_line"       "(setq eltype (getltype))"): D, h) V# z3 T: |' b$ D3 s6 P  h5 J1 K
  6336.     (action_tile "eb_thickness" "(getthickness $value)")- q$ A0 v& v1 J3 ~
  6337.     (action_tile "eb_ltscale"   "(getltscale $value)")" ]+ \  C4 E$ |) z1 t2 N0 T+ q

  6338. 5 m; I  G" |& v5 |% M
  6339.     (action_tile "pick_1"       "(dismiss_dialog 3)")
    ( J5 @$ T- X+ o4 V/ S0 w% y
  6340.     (action_tile "pick_2"       "(dismiss_dialog 4)")
    7 p: v( m' g; o8 g& E3 z8 x
  6341.     (action_tile "pick_3"       "(dismiss_dialog 5)")
    * q) S! t4 C5 f  f' {6 e" |
  6342.     (action_tile "pick_4"       "(dismiss_dialog 6)")0 c1 i6 W" M6 v* s5 D+ T
  6343.     (action_tile "x1_pt"        "(ver_x1 $value)")
    ! a; O0 \4 t2 ^" E5 T+ j8 l3 A/ A, U, R
  6344.     (action_tile "y1_pt"        "(ver_y1 $value)")
    & |# b0 }6 H& v& x; f7 z6 n& g
  6345.     (action_tile "z1_pt"        "(ver_z1 $value)")
    . X  q- Q+ V, N  |5 ^7 r0 `
  6346.     (action_tile "x2_pt"        "(ver_x2 $value)")$ h# m; E8 x; G$ ^5 ~2 h/ ~4 k
  6347.     (action_tile "y2_pt"        "(ver_y2 $value)")' M5 l, L" B( X6 ]- u
  6348.     (action_tile "z2_pt"        "(ver_z2 $value)")8 I& D, S. y  l. U( X# Z' }  t
  6349.     (action_tile "x3_pt"        "(ver_x3 $value)")! C$ d0 Q! h+ @
  6350.     (action_tile "y3_pt"        "(ver_y3 $value)")
    2 U# S3 J: C" y4 I2 U7 I/ C1 j# C
  6351.     (action_tile "z3_pt"        "(ver_z3 $value)")
    7 m" d  v: c1 e% B2 a1 A7 r% C
  6352.     (action_tile "x4_pt"        "(ver_x4 $value)")
    ' `- U1 z" a5 {4 ?  T
  6353.     (action_tile "y4_pt"        "(ver_y4 $value)")
    9 O4 T0 |2 Z3 D8 A3 [2 C! k' n& T6 u6 o
  6354.     (action_tile "z4_pt"        "(ver_4 $value)")
    8 F8 ~4 Y+ D- J7 U& G- r3 X+ m
  6355. 7 P" n( D: g; k7 t* T) F
  6356.     ;; Action tiles for Xline & Ray4 i3 q7 M; ^# ^. T8 _6 E2 L
  6357.     (action_tile "xline_x1" "(ver_xline_x1 $value)")
    9 v% [$ M; `8 U+ C2 g$ v$ y& E
  6358.     (action_tile "xline_y1" "(ver_xline_y1 $value)")
    % X6 V& Y: l" \! v! d% E- v
  6359.     (action_tile "xline_z1" "(ver_xline_z1 $value)")
    & ~# \3 v2 n) _% c/ Q
  6360.     (action_tile "xline_x2" "(ver_xline_x2 $value)")
    " _4 P7 f9 O5 u& p  n" e
  6361.     (action_tile "xline_y2" "(ver_xline_y2 $value)")3 E) @! v2 k. b& ?( I
  6362.     (action_tile "xline_z2" "(ver_xline_z2 $value)")0 n# R  D3 U6 N* A. Z- Z
  6363. 6 N) c% _5 V+ u
  6364.     (action_tile "edge_1"       "(setq edge1 $value)")& ~* S7 T) C" I  M; j8 I7 [$ k! y; v
  6365.     (action_tile "edge_2"       "(setq edge2 $value)")1 W# e8 s$ W7 C# N( ?, S
  6366.     (action_tile "edge_3"       "(setq edge3 $value)")
    $ }* ?( Y; _& G# T0 g  [2 O2 S
  6367.     (action_tile "edge_4"       "(setq edge4 $value)")
    0 U/ D; j& O( g$ O- `% F

  6368. ( c% h# h  A  {0 `/ I% C
  6369.     (action_tile "radius"       "(ver_rad $value)")
    3 W% B0 |  Y6 [  O  ~8 ?
  6370.     (action_tile "st_ang"       "(ver_ang1 $value)")
    8 |6 q9 c% l7 v$ R- A# {* R/ _
  6371.     (action_tile "end_ang"      "(ver_ang2 $value)")( P2 t9 f" v3 }
  6372.     (action_tile "end_eang"     "(ver_eang $value)"). f5 l) g- G2 g4 Q2 `: b
  6373.     (action_tile "minrad"       "(ver_minrad $value)")& q1 X- K5 O5 @' ]
  6374.     (action_tile "majrad"       "(ver_majrad $value)")
    " o8 e9 D3 o# B2 T; A

  6375. + v& F7 f3 J/ T! h. I
  6376.     (action_tile "xscale"       "(ver_xscl $value)")
    2 j9 R2 B7 {. i& Q. {
  6377.     (action_tile "yscale"       "(ver_yscl $value)")
    ( y5 \) @) e  l+ n
  6378.     (action_tile "zscale"       "(ver_zscl $value)")) @2 C2 f7 ~! X  p
  6379.     (action_tile "rot"          "(ver_rot $value)")- F  I3 [8 i6 W0 I- g1 v1 Q
  6380.     (action_tile "columns"      "(ver_col $value)")
    * P+ E  v6 C- f
  6381.     (action_tile "rows"         "(ver_row $value)")- T$ g% M7 }/ Y/ w( S; k# J, v
  6382.     (action_tile "col_sp"       "(ver_colsp $value)")1 O! y) ^: d5 [( J3 {0 Q
  6383.     (action_tile "row_sp"       "(ver_rowsp $value)")0 w/ T+ p1 W# l8 O
  6384. 9 i- m; R4 p* Y, X9 Y5 z
  6385.     (action_tile "hght"         "(ver_hght $value)"). N7 ^7 R, D2 `
  6386.     (action_tile "wid"          "(ver_wid $value)")4 h: h+ e  _; A/ D8 K$ t
  6387.     (action_tile "obl"          "(ver_obl $value)")& F* W8 d' n3 g, ?0 e6 Q6 t# d
  6388.     (action_tile "style"        "(style_act $value)")
    ; T$ M+ ~" x5 z

  6389. ) p6 n7 I. G; t/ s* X! I
  6390.     (action_tile "t_string"     "(ddgettext)")
    $ K; h& C" I# o9 c4 ~* w* t" z
  6391.     (action_tile "tag"          "(ver_tag)")% Z: H& V9 D( W1 W5 Z/ e# O: w
  6392.     (action_tile "prompt"       "(ddgetprompt)")" l: o% Z1 c! V: G/ v* N
  6393.     (action_tile "bkwd"         "(setq bkwd (atoi $value))")( l2 V" n. a; Q& l/ E2 F
  6394.     (action_tile "upsd"         "(setq upsd (atoi $value))")  s! l. F! c( d" G
  6395.     (action_tile "inv"          "(setq inv (atoi $value))")5 e. Q3 Z+ R7 x9 p4 p0 A8 R
  6396.     (action_tile "con"          "(setq con (atoi $value))")
    ! T. `* M- G; d- `
  6397.     (action_tile "ver"          "(setq vfy (atoi $value))")
    8 j/ i) z4 C+ _' }4 c" Q
  6398.     (action_tile "pre"          "(setq pre (atoi $value))")+ _: x& r! y: I2 H( r" b
  6399.     (action_tile "popup_just"   "(jlist_act $value)")+ a! O7 P( n# x0 x# B
  6400. / s3 G. W$ s9 f5 W( L
  6401.     (action_tile "closed"       "(setq closed $value)")
    - Q( E4 k5 x) ~5 ~, F% ]8 z
  6402.     (action_tile "ltgen"        "(setq ltgen $value)"). N4 _0 D# M  Y
  6403.     (action_tile "closedm"      "(setq closedm $value)")% |" v8 g$ d$ J# m8 h& |
  6404.     (action_tile "closedn"      "(setq closedn $value)")5 y5 k. X8 \3 e& A4 w
  6405.     (action_tile "next_v"       "(next_vertex)")6 v" T, J- U0 b6 {4 b  |- c6 w
  6406.     (action_tile "xcliponoff"   "(setq xcliponoff $value)")3 A- ~" `$ R7 L8 P2 _! S: s
  6407. , i, s/ H3 w- {5 H
  6408.     (action_tile "next_cntlpt"  "(next_cntl_pt)")! ^9 M/ y5 b) L
  6409.     (action_tile "next_datapt"  "(next_data_pt)")
    - K, U* O1 K; C) e( n( X. w

  6410. $ B1 k* g  e+ a3 W
  6411.     (action_tile "none"         "(if (radio_gaga \"none\")(set_uv 0))")# S; H  ?- t; c" ^9 s' V! p
  6412.     (action_tile "fit"          "(if (radio_gaga \"fit\")(set_uv 1))")
    9 \6 T2 k; W& P) r+ o5 A8 M
  6413.     (action_tile "quad"         "(if (radio_gaga \"quad\")(set_uv 5))")
    8 q' S2 H/ h$ t/ `8 n8 v
  6414.     (action_tile "cubic"        "(if (radio_gaga \"cubic\")(set_uv 6))")/ \$ n8 ]* R2 w( O& y) A7 [# b
  6415.     (action_tile "bezier"       "(if (radio_gaga \"bezier\")(set_uv 8))"): C6 z9 w; p9 d% ^7 ?

  6416. * W2 ?3 x% U8 Q# D  m7 W0 U# }1 e
  6417.     (action_tile "u"            "(ver_u $value)")
    # r- x+ l! |6 o; s& S9 N* o" U
  6418.     (action_tile "v"            "(ver_v $value)")
    ; J7 B7 N' g9 A" `) V( J
  6419.   )
    + d1 Q1 q( O" R) C# l% I! Z

  6420. 9 S& n1 \- f  J( r6 X
  6421.   (defun ddgettext()
    5 K3 h  w/ o( \: C& b
  6422.     (setq text (get_tile "t_string"))1 C2 v$ e) x2 V0 @
  6423.   )0 ^. P; n5 |! Y9 p  ]4 t3 Y+ G

  6424. / q- H1 S; `8 n# {* c
  6425.   (defun ddgetprompt()
    0 p" K! K- {- j( L" m/ |
  6426.     (setq atprompt (get_tile "prompt"))/ R7 i, e6 i! Y+ A3 M0 C! h: I
  6427.   )( X2 s* l$ e; u5 n- {1 f7 X0 ^
  6428. ) ?; x0 N+ `& Y/ X
  6429.   ;; As OW doesn't support disabling of individual radio buttons within6 o. \- [+ ^- X: U0 n: m
  6430.   ;; clusters, a check must be performed as to the legitimacy of the
    / C6 O5 O+ Z$ ^+ A
  6431.   ;; button pushed and reset if necessary.
    ! f4 C9 L. [7 p8 g2 S1 I$ O
  6432.   (defun radio_gaga (pushed)6 G" H' |; C$ n, D1 J8 E' b
  6433.     (cond
    2 a& c$ D- d; }
  6434.       ((and (= pltype "3D polyline")
    ' Q, h" K; |7 s, o
  6435.             (or (= pushed "fit"): b, @# Z5 m0 Z2 R% W* h6 `* E
  6436.                 (= pushed "bezier")8 c) S- M6 P9 G+ b1 O
  6437.             )
    ! @6 S1 n* T+ h# B$ j* x
  6438.        ); V' G8 A( l3 j
  6439.         (set_tile "none" "1")
    9 p. Q8 A( X+ M  D  K
  6440.         nil
    ) K! z% s3 E: L0 Q- d
  6441.       )
    6 i/ o( Z2 b- R' W$ J3 b
  6442.       ((and (= pltype "3D mesh")
    $ s$ I; W6 ]- F$ O- I
  6443.             (= "fit" pushed)& e2 M" M9 I7 c; G1 H* w& J# y
  6444.        )
    ) y; t/ _; i; r% }0 l
  6445.         (set_tile "none" "1"); P% j9 C: h4 A1 O  l
  6446.         nil% D1 n) n+ t0 y/ v) U! ?7 p) K
  6447.       )5 b+ C# Q  ^2 e/ {
  6448.       ((= pltype "Polyface mesh")' T- ^$ Y# t9 }  E
  6449.         (set_tile "none" "1"). N( M7 A. [* v* w% I
  6450.         nil7 R% l8 S! ~3 ^5 K) h% {
  6451.       )
    4 z0 j, E, Y9 e
  6452.       ((and (= pltype "2D polyline")7 z, |7 Y! {7 I1 L. m5 i
  6453.             (= "bezier" pushed)7 r  C5 C$ m0 S6 S
  6454.        )2 N# R$ Y- x9 F4 s# O
  6455.         (set_tile "none" "1")
    8 a, `( R. p: T
  6456.         nil3 r. m! W1 f4 h1 ~3 y' x4 _/ ^8 G
  6457.       ); _3 ~# J- t- P7 R, E; R
  6458.       (T)/ _  j. P: `/ e4 T
  6459.     )
      t- T; t2 v+ P2 F! D' d
  6460.   )
    # z, j  i  a' g  z
  6461.   ;;" i5 ?4 S2 L+ J9 E) }" [& E
  6462.   (defun set_uv (type_n)
    ) _- i! W2 g2 J1 @/ K
  6463.     (setq spltype type_n)
    $ ^6 z% q* w  ^6 S! Z! u9 ?! h7 ?
  6464.     (if (= pltype "3D mesh")
    / x9 S' F: F0 T; B7 g
  6465.       (if (= spltype 0)# g, X4 k' @: |! \+ a; q
  6466.         (progn9 C! ^# z; t# K( X8 u% ^
  6467.           (set_tile "u" (itoa (setq u 0)))
    5 L5 `& Y) V! U+ z' W
  6468.           (set_tile "v" (itoa (setq v 0)))
      D7 I+ ^3 i  p
  6469.         )4 \5 k, Y9 t2 f7 ^  S; @
  6470.         (progn. N6 X( y3 ~5 r
  6471.           (if (= u 0)
    9 G: g! Q& e& l! g
  6472.             (set_tile "u" (itoa (setq u (getvar "surfu"))))
    ) _# A# F5 ?" r. J; j
  6473.           )
    " n4 T1 a" t9 t$ B1 y0 K
  6474.           (if (= v 0)% z& R* {5 x  w3 t
  6475.             (set_tile "v" (itoa (setq v (getvar "surfv"))))  g7 B3 n6 O( T4 I# R' v3 c9 d
  6476.           )% |- Z6 r7 t' K# @5 _
  6477.         ). {2 z' P/ N$ W' w& F/ P5 M$ d
  6478.       )
    # D& V4 n% t+ C5 p: T9 @5 D! J
  6479.     ); p( x6 T$ ^$ k3 }
  6480.   )
    + A/ e! O5 C3 _$ X4 Z7 o

  6481. 4 z1 Y) w6 D& b) T5 U7 d

  6482.   M) [- \, m0 m) I" h. u3 E# Z
  6483.   ;;
    ) [. z, @/ g7 w# L
  6484.   ;; Verification functions
    9 m) g& k5 b! r" W  ]1 u# R
  6485.   ;;: y2 o1 k" m3 P$ Q) R  }" b% s+ S
  6486.   ;; Verify distance function.  This takes a new X, Y, or Z coordinate or
    : W/ E! O5 u1 @0 ^; C  _/ u- w/ M
  6487.   ;; distance value, the tile name, and the previous value as arguments.
    % ~% ?/ `. [3 v' E' b, B% N& v5 c' y
  6488.   ;; If the distance is valid, it returns the distance and resets the tile.' u  E6 ]& ~! `; J1 a8 E4 G
  6489.   ;; Otherwise, it returns the previous value, sets the error tile and keeps# P6 G" y. O) s7 |
  6490.   ;; focus on the tile.  Shifting focus to the tile with invalid value can( _  C6 \9 O+ j( f2 \! Z* p
  6491.   ;; trigger a callback from another tile whose value is valid.  In order
    0 _8 V9 J0 b- V# J
  6492.   ;; to keep the error message from being cleared by this secondary callback,
    5 d* l- I* U5 z/ b% Y/ _" T
  6493.   ;; the variable errchk is set and checked.  The last-tile variable is set
    3 d5 v& {  d  D% u0 L
  6494.   ;; and checked to ensure the error message is properly cleared when the5 z& Z# v  A& r# b& ^$ r+ v
  6495.   ;; user corrects the value and hits return.
    4 r4 U5 a5 Z7 U( h6 D9 d4 a
  6496.   ;;3 u# E4 d7 }/ p; s) ^% X2 z
  6497.   (defun verify_d (tile value old-value / coord valid errmsg)
    ) t$ X" a7 m; [4 Y6 n1 u
  6498.     (setq valid nil errmsg "Invalid input value.")
    . y( {4 @( M/ g7 W+ x- ^
  6499.     (if (setq coord (distof value))
    * v/ i/ o/ w- j! D/ o1 N. j
  6500.       (progn
    3 O# @! e3 Q# J% L
  6501.         (cond7 {1 \% v4 g/ t+ a
  6502.           ((or (= tile "radius")  v* c* j6 H5 q$ m% ]
  6503.                (= tile "hght")% o) j* y: m3 K: s& Z
  6504.                (= tile "wid")
    + y7 S( q5 H- z6 n: m9 Y
  6505.                (= tile "majrad")
    " x. [1 y" T( y6 z
  6506.                (= tile "minrad"); I1 [4 K: u1 K9 q2 W2 O0 v6 Q
  6507.                (= tile "eb_ltscale")# O3 |1 }# V7 [% N# r
  6508.            )
    - O. ?! c8 D* m$ c& ]1 z
  6509.            (if (> coord 0)
    # Y# ^9 X4 m& K& R& ?( Z! R
  6510.              (setq valid T)
    % y$ q8 S: I/ \8 `  P9 i* s5 n  i
  6511.              (setq errmsg "Value must be positive and nonzero.")
    # n1 X$ r% @6 [, H$ P! Q4 r
  6512.            )
    ' B- z. b' K& t9 C
  6513.           )
    2 k2 a! n) M/ C, m8 o6 c- M
  6514.           ((or (= tile "xscale")  H( M% L: r! q' l# o5 o! ?
  6515.                (= tile "yscale")
    8 [* B5 h' w! H- q
  6516.                (= tile "zscale")! \) _0 u4 q: V! g8 y+ E* [! t
  6517.            )
    6 n" Y' c, J" C  n
  6518.            (if (/= coord 0)
    8 s, |: K- J4 J8 q/ L# H. H
  6519.              (setq valid T)
    8 v/ L6 O: n  C& l9 a
  6520.              (setq errmsg "Value must be nonzero.")
    3 m1 U4 j, t$ q" |+ y
  6521.            )
    / M; J, @4 p6 `& d  D
  6522.           )7 X7 B, ~/ M8 ~. I. ^- o. C4 M$ d
  6523.           (T (setq valid T)), j9 r( O3 _" z2 l: o2 F  v
  6524.         )
    7 e1 _0 P3 x0 a' C" V1 W' K
  6525.       )
    # N6 Y: n. _- {1 ?
  6526.       (setq valid nil); |5 U6 c- b6 i5 @/ _
  6527.     )
    9 B; S: z  X: A- g! V% K
  6528.     (if valid
    ( t7 c4 A* w& c( A- c" _$ _4 f4 c
  6529.       (progn
    & |0 P9 y5 b( T6 |1 B
  6530.         (if (or (= errchk 0) (= tile last-tile))( ]' B4 a2 g5 V" v& i! n, q1 b
  6531.           (set_tile "error" ""): {# _5 A# e0 J
  6532.         )3 I: A4 `7 x& ]: R
  6533.         (set_tile tile (ai_rtos coord))
    " W; }' m1 T, ?9 t, ^; b
  6534.         (setq errchk 0)
    ( X' W' H, g- O: {3 l/ W8 B1 N: ]
  6535.         (setq last-tile tile)1 v/ h% @# H3 d0 e7 K2 d1 V- Q: y
  6536.         coord+ z: r' _; M$ r/ Q0 {6 J( C
  6537.       )
    * x' B) ]4 @; e& f! v* X: V
  6538.       (progn
    ; G0 D; @& e& D: y; P" f
  6539.         (mode_tile tile 2)            ; Move focus to offending field
    ) m0 _. h6 k- k% G/ p# L
  6540.         (mode_tile tile 3)            ; Select offending text. F6 e- A" q( l2 J- E. W/ f# l1 y
  6541.         (set_tile "error" errmsg)
    1 y7 C  E# g  U6 b+ [5 Q5 W0 D3 H+ U
  6542.         (setq errchk 1)
    4 S/ o' D0 G0 L3 v' b: }+ F
  6543.         (setq last-tile tile)5 y; \% Q+ I5 @/ Y
  6544.         old-value
    / V+ o, @. [7 [' i8 n" f* A' l/ L
  6545.       )" s: [+ L) }$ u5 P3 D4 ]
  6546.     )
    ( Y9 [3 ?/ V; N
  6547.   )
    - {) p) E- }4 q, N
  6548.   ;; Function for Xline coord edit box checking.! D: f/ k; ?: l3 @, p
  6549.   (defun verify_xline (tile value old-value / coord valid errmsg)
    . Y+ O' F& B% L" F1 A2 J3 s
  6550.     (setq valid nil errmsg "Invalid input value.")
    ) }7 t2 w; @- Q
  6551.     (if (setq coord (distof value))
    0 \$ R1 i# |/ |  `" L3 ]
  6552.       (setq valid T)
    3 U0 `- |2 b% \
  6553.       (setq valid nil)
    . ?! I" ~, A! I
  6554.     )
    . l' @# D4 _& G/ C" E8 \2 i
  6555.     (if (and coord( _9 E5 u8 p2 E% |
  6556.           (and (= (atof (get_tile "xline_x1")) (atof (get_tile "xline_x2")) ). J: q2 b$ J6 y6 c' `3 S
  6557.                (= (atof (get_tile "xline_y1")) (atof (get_tile "xline_y2")) )
    6 {8 @+ R2 t  L+ \
  6558.                (= (atof (get_tile "xline_z1")) (atof (get_tile "xline_z2")) )
    2 `& R$ `/ d% q
  6559.           )
    : W# y) P  R- B
  6560.         )
    7 _- e/ m1 y. e/ H- ]
  6561.        (progn
    5 ]* _/ I- g5 r* M0 j) \' X7 w1 Z
  6562.          (setq errmsg
    1 k8 P" G! X! S" y) [0 r
  6563.                   "The Root point and the Second point cannot be equal.")" G) Q2 g+ J5 y: T
  6564.          (setq valid nil)
    1 t4 V3 _1 _9 i
  6565.        )
    $ d3 O# e$ c& K! z
  6566.     )
    7 B/ W$ G2 o9 v( N4 i0 R2 e
  6567.     (if valid% G# C% b$ F( f$ {* ?. ~8 i
  6568.       (progn
    . T  e& L- K# j9 R# v3 J. }
  6569.         (if (or (= errchk 0) (= tile last-tile))
    " e9 o$ ~- e6 t& Z: ^8 C
  6570.           (set_tile "error" "")
    8 P) e4 F+ j. l# @
  6571.         )" R7 P# g0 O( y6 r! L8 o
  6572.         (set_tile tile (ai_rtos coord))
    , A' S% u# t6 t5 G
  6573.         (setq errchk 0)
    4 u, X; L: L) C; b$ o; h+ y, ?
  6574.         (setq last-tile tile)
    7 Z7 g) o; m4 C% ~, R" T8 u& b/ R
  6575.         coord: K( t, `4 e, n5 d/ }6 ]9 w, k
  6576.       )
    3 e1 M9 j) e1 Y
  6577.       (progn
    # S0 x8 d, ^1 l
  6578.         (mode_tile tile 2)            ; Move focus to offending field. G6 h' W% z" i7 v
  6579.         (mode_tile tile 3)            ; Select offending text
    & ~+ c4 w$ ]: r' T/ B% M) X2 d$ y
  6580.         (set_tile "error" errmsg)1 N( h$ p1 `8 |# [+ y2 l
  6581.         (setq errchk 1)! P6 k" V& N7 F8 ^
  6582.         (setq last-tile tile)% ?( v7 o. `  @+ @4 _: G
  6583.         old-value
    9 f. D1 A9 _" w+ C
  6584.       )
    6 c* g( l  b4 h
  6585.     )
    , \% R8 l& X, E# z2 {& n$ V" m
  6586.   )$ |- K( s! g% m: I

  6587. ) S$ [. e. h) D1 X& Q2 Q* c
  6588.   ;;
    & h  a, B2 I8 [3 c7 |
  6589.   ;; Verify angle function.  This takes an angle and a tile name as arguments.
    / w) m( r: {$ C0 |& T/ v* O7 J! t( ~+ g
  6590.   ;; If the angle is valid, it returns the angle and resets the tile.* D! D, E( H' @8 r' o
  6591.   ;; Otherwise, it sets the error tile and keeps focus on the tile.
    ; ]7 _4 T: v! g
  6592.   ;;, k3 z) @4 O; G4 a* l/ D
  6593.   (defun verify_a (tile value old-value / ang valid errmsg oblqmax)) ^" Q1 k8 J: `9 E' Q8 A) B
  6594.     (setq valid  nil
    ( d3 M; j. V% O9 h/ h5 }
  6595.           errmsg "Illegal input value."
    8 m( y  c3 a: \* o  |
  6596.     )
    % O2 w! m+ K4 A+ `% b: |) g
  6597.     (if (setq ang (angtof value))
    4 ?1 A0 J' c/ q) m( H
  6598.       (cond
    3 d) c& j8 k+ t4 b0 d
  6599.         ((= tile "obl")               ; Restrict obliquing angle5 X: q2 w# w: ~) H% a- z3 C7 @
  6600.          (setq oblqmax (+ (* (/ PI 2.0) (/ 85.0 90.0)) 0.000001)); Z2 O3 A5 l3 j* j1 D
  6601.          (if (or (<= ang oblqmax)
    " c# n, s! w- w
  6602.                  (>= ang (- (* 2.0 PI) oblqmax))% q, a% x) ^# H+ q2 X
  6603.              )
    - a- h2 X" O, Z  N5 k9 U
  6604.            (setq valid T)
    2 }/ q& |8 Y4 E7 ~, A
  6605.            (setq errmsg
    8 D3 @& o/ V$ R" H
  6606.                  "Value must be between -85 and +85 degrees."), j9 x; Y3 d0 `% R1 q8 r
  6607.          )
    / `) O  a4 J- n4 o
  6608.         )
    # s9 j, }8 p' {& y: d, \
  6609.         (T (setq valid T))            ; Other angles not restricted
    - u9 t1 {+ Z$ w$ U1 d( Z
  6610.       )
    : Z$ y/ u, N) s5 \
  6611.       (setq valid nil)                ; Invalid angle input
    - Q- s0 L( R' {/ Q3 V: S# v% ^; w5 {
  6612.     )7 m9 t- n) G7 w" Y+ o% F
  6613.     (if valid0 u7 J& q( i5 Y' T' H8 v
  6614.       (progn
    3 M2 x5 {0 j2 u3 v
  6615.         (if (or (= errchk 0) (= tile last-tile))( c) H' j) c7 N8 D+ p
  6616.           (set_tile "error" "")  u$ u( a5 M" X, M: Q
  6617.         )' U& I* b2 o- J4 }$ H
  6618.         (set_tile tile (ai_angtos ang))
    0 b  S. R4 T$ u; v7 R
  6619.         (setq errchk 0)& o8 n2 q1 {! W& J
  6620.         (setq last-tile tile)
    3 _! J2 D  g, ^8 J
  6621.         ang0 t. N2 Y2 o' R$ Q3 @* q" K- F
  6622.       )1 v/ L% Y2 H' V: Q/ H& V: J
  6623.       (progn
    $ g( t4 X- U1 O) P/ V7 O- Q
  6624.         (mode_tile tile 2)            ; Move focus to offending field6 O# N/ n; n' Z5 m$ o" P9 [
  6625.         (mode_tile tile 3)            ; Select offending text- M  [# n) ^) _4 f
  6626.         (setq last-tile tile)7 r% }( D0 x1 t* K" Q
  6627.         (setq errchk 1). x- k* E) P$ q, u2 c) n5 \8 g1 ]
  6628.         (set_tile "error" errmsg)
    0 H5 O8 V7 Y. ], z
  6629.         old-value
    . i1 W9 z0 B: s6 X
  6630.       )
    8 W* r6 m1 K! P! g- P# k* t% E$ u
  6631.     ). x4 h' s) |+ ^# U. t
  6632.   )
    " i1 }3 p: A0 |
  6633.   ;;
    / O+ g- [# q0 V2 E; R( x
  6634.   ;; Verify angle function.  This takes an angle and a tile name as arguments.9 C6 s% ]  f  l/ t( R  f
  6635.   ;; If the angle is valid, it returns the angle and resets the tile.* H( L) j. e# m5 C  O* E0 R9 {+ L
  6636.   ;; Otherwise, it sets the error tile and keeps focus on the tile.
    & t. P/ J1 H! `1 }. R4 A
  6637.   ;; This function is specifically for the end angle of the ellipse object. If) o" ^+ `; A8 v  [& j
  6638.   ;; the end angle resolves to zero then we want to display it as 360.: c7 l2 \5 M% t! L( X$ R/ U6 P
  6639.   ;;
    1 T* A1 ]' [6 U" q4 n  y$ I
  6640.   (defun verify_ae (tile value old-value / ang tempend)
    & A7 I" W+ Z6 u  C
  6641.     (if (setq ang (angtof value))4 _- }" v8 a' u7 D; H
  6642.       (progn
    , r* b* \' H  n# ~6 X7 ~
  6643.         (if (or (= errchk 0) (= tile last-tile))6 Z" g/ P9 y, T7 N+ `% q+ w1 F5 P
  6644.           (set_tile "error" "")
      z- S6 r4 k& M
  6645.         )
    0 b1 Y& U6 Y8 y! M* T8 R
  6646.         (setq tempend (ai_angtos ang))
    6 H+ }+ o  [& _" h1 c' l. ^, R4 b: ^
  6647.         (if (= tempend "0")& w$ g& i: G5 e& ]5 B/ z7 O. o6 U
  6648.            (set_tile tile "360")/ Q7 C& K) W; |5 \; I, u- v( t4 D
  6649.            (set_tile tile tempend)' X) g" X' j3 F. F  a: L
  6650.         )
    , d  [" [6 V: F7 O; r
  6651.         (setq errchk 0). _6 X: y5 \; X3 s, A0 b( f) w/ Z8 E8 g
  6652.         (setq last-tile tile)
    ; y& J* X$ {- D
  6653.         ang
    + R8 i; E- b4 M* `/ A# e  o
  6654.       )/ n" @$ t: ?# z0 W
  6655.       (progn
    1 L( x) d7 `9 Q
  6656.         (mode_tile tile 2)            ; Move focus to offending field/ {9 X: @) \/ l+ n% L: B
  6657.         (mode_tile tile 3)            ; Select offending text
    & T6 B) Q% e9 R+ g( p
  6658.         (setq last-tile tile)6 C- D( j  I) _; G9 Z0 O
  6659.         (setq errchk 1)% v; {$ G+ z' A& p. w/ K1 t. w$ z) C0 f
  6660.         (set_tile "error" "Illegal input value.")
    ; a  [! x% l" d% [
  6661.         old-value
    . d& i3 ]/ x" B+ q1 g
  6662.       ), L; }6 E. @9 O4 E
  6663.     ): b1 x- l4 H2 _& [; U6 W
  6664.   )
    9 @' J/ Z# h- m2 q% t' n
  6665.   ;;
    / s1 V5 e. e1 `1 c4 U
  6666.   ;; Verify integer function.  This takes an integer and a tile name as5 f# @4 Y0 h8 W1 B. c* w
  6667.   ;; arguments.  If the integer is valid, it returns the integer and resets the1 A/ y! H4 x2 ]/ Q* ^
  6668.   ;; tile.  Otherwise, it sets the error tile and keeps focus on the tile.; p. B* d1 s3 q' ?0 s/ Z
  6669.   ;;: @/ ^7 T: I' W; S9 Z
  6670.   (defun verify_i (tile value old-value / int valid errmsg)
    % J# A5 B! r1 y! n2 L
  6671.     (setq valid nil)4 I* S3 K6 L* |0 P  k& ~6 |# h
  6672.     (setq errmsg "Value must be an integer.")" H- n. j& ~& [) ?4 ^: D: U
  6673.     (setq int (atoi value))
    2 j" j- V+ J' P+ R
  6674.     (if (setq intchk (distof value))
    6 z0 {! w7 B  M$ B
  6675.       (cond
    3 A; [. w, E8 g( i( P2 u; I
  6676.         ((or (= tile "columns") (= tile "rows"))
    & L5 T8 p4 x5 c6 a
  6677.          (if (and (= int intchk)8 e3 T! ^  y* }8 L$ l
  6678.                   (>= int 0)
    5 _: e! r" E8 ^
  6679.                   (<= int 32767)
    $ n: P/ i' o' \5 g  L- g
  6680.              )
    # A* X: ?4 A( S3 g* x1 y8 j9 s
  6681.            (setq valid T)2 A5 Z9 o: t9 X- a! ^; ^/ V  J
  6682.            (setq errmsg "Value must be an integer between 0 and 32767.")* F/ z' v5 X) S
  6683.          )
    ) l) }: I, o  H9 K
  6684.         )
    * e& Y6 O/ l% \& Z
  6685.         ((and (or (= tile "u") (= tile "v")))
    & d0 I( \3 D# P7 }; n7 x5 a+ e
  6686.          (if (and (= int intchk)
    $ M. Q0 L3 ?1 i' Y6 ?. g' _
  6687.                   (>= int 0)
    7 ?6 d4 H$ g/ U7 m9 r. L6 v
  6688.                   (< int 201)! w  ?, z: j# c# t' O+ J
  6689.              )
    9 e" K4 a9 \0 O
  6690.            (setq valid T)
    ( F( B! u. r0 d: s
  6691.            (setq errmsg "Value must be an integer between 0 and 200.")
      Y+ e4 a: H: v8 f8 e% c
  6692.          )
    0 X' P0 P& t9 k( ~
  6693.         )1 q* m! e3 E# ]1 s7 s0 A
  6694.       )2 u+ R9 E1 \+ G, b- r) e% z$ o1 p
  6695.     )
      p1 R8 t, J5 l8 U6 V* V
  6696.     (if valid
    & ^1 D) l' V0 Z# M
  6697.       (progn" @* y4 O6 X! v  ^
  6698.         (if (or (= errchk 0) (= tile last-tile))$ f- H" D3 ~2 g9 o" I. S) x3 f
  6699.             (set_tile "error" "")
    " a5 ?; N9 l6 a/ U+ f5 G/ J( x' k( u
  6700.         )
    & p/ l* K1 [. A; X4 p
  6701.         (set_tile tile (itoa int))% n" |* |* r9 T+ Y0 M& A$ F: E9 N
  6702.         (setq errchk 0)+ k$ P4 n, z; t6 P; u4 I
  6703.         (setq last-tile tile)
    ; t% d; K2 P4 y7 _( J* q
  6704.         int
    7 l# L& o% v/ V6 J6 `
  6705.       )) y& A, P# j8 G, n" m( f7 K
  6706.       (progn
    ( [( F- \2 n# [
  6707.         (mode_tile tile 2)            ; Move focus to offending field
    : R5 |- H/ n8 h, Z
  6708.         (mode_tile tile 3)            ; Select offending text
    : X4 m% b# p( J
  6709.         (set_tile "error" errmsg)
    7 p; h1 A) Q4 ^. r) X
  6710.         (setq errchk 1)
    / ~2 b/ Y0 h7 n: o
  6711.         (setq last-tile tile)
    / \/ n9 l2 ^3 M8 p7 w) r* B9 N
  6712.         old-value  p1 F) V/ v- l. l7 G; H% C7 G
  6713.       ); T1 O! e" o% p, M( I
  6714.     )
      ~9 f/ K! |! I7 \
  6715.   )  d& U/ G. J  J4 t% n4 ]
  6716.   ;;
    ) k& g$ X$ O; c/ Q: f6 ~6 s. H3 s- X
  6717.   ;; Functions that verify tile values for integers8 G5 @6 |3 G8 @2 p: I& w1 d
  6718.   ;;
    # v& a/ O: W% ?, l! n
  6719.   (defun ver_col (value)  F# {3 a+ H1 R: b' p" |7 |/ @, L- h
  6720.     (setq columns (verify_i "columns" value columns))) o4 z* w; T' k) {1 }0 k( r
  6721.   )
    * g, y8 j' O) z0 s9 m$ Z
  6722.   (defun ver_row (value)
    8 q" g' d, x, e3 W* [5 X) N! M
  6723.     (setq rows (verify_i "rows" value rows))" S) i/ O% Y. {- g) K/ [
  6724.   )
    : Y3 S# X& G3 Q' Q5 s
  6725.   (defun ver_u (value)
    % P5 x+ c7 O+ [1 G! |) h4 f
  6726.     (setq u (verify_i "u" value u))1 w* }5 r$ E0 n4 U: t
  6727.   ). U4 t3 [6 q7 V, \* G
  6728.   (defun ver_v (value)
    ! y0 c- h% U2 _# t8 `
  6729.     (setq v (verify_i "v" value v))
    7 K0 Y1 o% A  z: U% c; `
  6730.   )4 h6 q, ^" B/ x
  6731.   ;;
    6 ~+ w' Q3 y+ W7 c$ X- q7 C2 L4 M
  6732.   ;; Functions that verify tile values for reals
    : Y! U2 M  r5 C0 D
  6733.   ;;  V  M% a& E- {0 O5 p4 A
  6734.   (defun ver_x1 (value)
    2 x% [, z: Y! \. D
  6735.     (if (setq x1 (verify_d "x1_pt" value x1)) (calc))
    * ~6 Z% G. f: C0 E
  6736.   )
    " m/ ~/ z+ z" A
  6737.   (defun ver_y1 (value)$ e7 \% ^9 r$ _2 c
  6738.     (if (setq y1 (verify_d "y1_pt" value y1)) (calc))
    1 y% V7 ~  S& g/ Q0 t) ?" L2 @3 k8 V& V
  6739.   )' W1 h1 F  l1 O6 t
  6740.   (defun ver_z1 (value)* m( }* n6 m, o1 P
  6741.     (if (setq z1 (verify_d "z1_pt" value z1)) (calc))
    - q' e9 N1 K+ K4 r! n* w
  6742.   )! _( K' t. H$ s. X+ O
  6743.   (defun ver_x2 (value)! Z7 O7 |6 b& ~/ G4 D
  6744.     (if (setq x2 (verify_d "x2_pt" value x2)) (calc))
    # G' Y- R* A1 A7 U2 F8 j
  6745.   )0 C& Q$ P' [$ `- W2 r6 {" n; F/ L
  6746.   (defun ver_y2 (value)7 h2 z1 ^2 H0 }5 Q' l: E
  6747.     (if (setq y2 (verify_d "y2_pt" value y2)) (calc)): V% g9 p- j% Q1 }
  6748.   )8 Y) M: K4 U8 K* P" A5 t5 f
  6749.   (defun ver_z2 (value)$ S( ]; z% }3 @. K" b
  6750.     (if (setq z2 (verify_d "z2_pt" value z2)) (calc))" ?% o$ s3 F4 m
  6751.   )
    ( L+ t6 i3 l6 F; [, t/ i0 g
  6752.   (defun ver_x3 (value)
    * O$ {* [# L2 N' C
  6753.     (setq x3 (verify_d "x3_pt" value x3))
    : A0 W! M1 k7 x: @* [
  6754.   )* d& N, a! R) S6 Y4 p
  6755.   (defun ver_y3 (value)
    4 O) s& }+ u' J. M9 s
  6756.     (setq y3 (verify_d "y3_pt" value y3))/ E$ T; a/ x$ V
  6757.   )
    3 C" W) I7 F& H7 W3 j% Y
  6758.   (defun ver_z3 (value)+ ^! z5 |/ \$ g) m* G
  6759.     (setq z3 (verify_d "z3_pt" value z3))* C. N0 E" x, W0 N% u
  6760.   )
    9 x: _6 U/ e$ l0 \
  6761.   (defun ver_x4 (value)  N4 a! M! Z2 q/ {
  6762.     (setq x4 (verify_d "x4_pt" value x4))  D9 N$ `& W$ h' Y, l
  6763.   )
    2 n; K3 q) d, o: S1 r8 D4 |
  6764.   (defun ver_y4 (value)
    0 c1 U: |4 o9 E% h" Y3 \. E
  6765.     (setq y4 (verify_d "y4_pt" value y4))8 A/ A7 i  J# t* i4 k$ s* y( P
  6766.   )
    " h5 x, @! t1 c8 {% D$ ], d" G$ v7 f
  6767.   (defun ver_4 (value)' J2 ?1 H: j: O- M' j
  6768.     (setq z4 (verify_d "z4_pt" value z4))& T8 m- ^7 U: s7 |+ B2 D' L
  6769.   )
    5 h0 I2 O' X) E8 B" m. ?1 E
  6770.   (defun ver_xscl (value)
    + n4 k5 n. Z$ _+ N4 T. ~' l
  6771.     (setq xscale (verify_d "xscale" value xscale))
    + A; L* k: g) k
  6772.   )! Y) w6 p# m, A8 ]/ U  V9 [7 v, u
  6773.   (defun ver_yscl (value)
    6 ?8 e6 n! r( ?2 t' S! N
  6774.     (setq yscale (verify_d "yscale" value yscale))
    ; M1 f/ e7 W. z1 X0 C6 a
  6775.   )5 W( r# k0 `( q2 l# ?( u
  6776.   (defun ver_zscl (value)
    0 t7 V3 @5 {; T% |; S# U
  6777.     (setq zscale (verify_d "zscale" value zscale))
    % ]7 y$ L& O. _: V& d# r% R) C
  6778.   )
    " d( y: M$ C# K" Y6 d$ ?
  6779.   (defun ver_colsp (value)
    8 }0 h( B8 ?( N- N& K/ z  T; G
  6780.     (setq col-sp (verify_d "col_sp" value col-sp))) M7 H( {. E0 `5 I
  6781.   )
    - R6 d( l* K# S. G8 ?
  6782.   (defun ver_rowsp (value)" f, r6 S. W# c
  6783.     (setq row-sp (verify_d "row_sp" value row-sp))0 R) {. S: E; @0 N
  6784.   )$ g- U; Q) k+ E- i. F+ C8 _
  6785.   (defun xclip ()
    3 }1 i: w; o/ q
  6786.     (setq xclipmode t)5 o/ k% z) I$ R( e
  6787.     (if (= xcliponoff "1")
    & I0 B$ \# y* u' b  o8 |* ~, @
  6788.       (command "_.xclip" (cdr(assoc -1 elist)) "" "_on")
    , G$ p3 U' w) H  _; j1 S, [: O
  6789.       (command "_.xclip" (cdr(assoc -1 elist)) "" "_off")
      Y: I; N. Y. m3 Y2 f
  6790.     )2 Q3 }( d3 Y9 Q+ x" ?
  6791.   )
    - h& ~  v8 e( l# l5 n
  6792.   (defun ver_rad (value)
    7 g( k; k4 t% U: T2 g1 A; A" z
  6793.     (if (setq radius (verify_d "radius" value radius))+ f. ~+ O4 R, b
  6794.       (calc)0 N0 J( l, v0 i1 n
  6795.     )
    ; L5 d1 K; {2 E# D1 _  s! T7 @
  6796.   )
    6 |+ x# X3 u/ m* }
  6797.   (defun ver_majrad (value)8 Q) s! b  L5 G' J
  6798.     (if (setq majrad (verify_d "majrad" value majrad)): U% s2 Q: p& ?% A: [
  6799.       (ell_calc_newval "majrad")
    4 w# s. v( \) @$ f& Q% P9 F# B3 Z
  6800.     )
    9 Q3 r8 ?7 ~+ I7 g5 E" G
  6801.   )
    7 o3 v8 w# S3 V7 \% A3 Z
  6802.   (defun ver_minrad (value)  R9 z- ]' ?- d. z) }- C1 f; u* g
  6803.     (if (setq minrad (verify_d "minrad" value minrad))
      |  `6 {9 b3 L; `( r% q
  6804.       (ell_calc_newval "minrad")
    4 c% G  [& m% Q
  6805.     )
    ) C. a/ X- x; p) A4 l- _6 ^
  6806.   ), E! b" J4 N6 h
  6807.   (defun ver_hght (value)0 r$ }5 k% B( h
  6808.     (setq hght (verify_d "hght" value hght))9 a! D! _  L$ G( ~3 t
  6809.   )
    5 F4 ]7 {% Q# t, S
  6810.   (defun ver_wid (value)3 i. W0 {$ ?$ I9 f( f1 k, N5 U7 C  v
  6811.     (setq wid (verify_d "wid" value wid))
      I6 B' R1 J* g6 {0 g
  6812.   )
    " h# _' D' R0 C0 B3 y
  6813.   (defun ver_xline_x1 (value / temp)
    5 q  l6 I% v5 w9 o9 ?2 g2 u7 P
  6814.     (setq temp xline_x1), n- l" b4 F; _  M, J# m5 p2 R
  6815.     (setq xline_x1 (verify_xline "xline_x1" value xline_x1))1 P$ t; J0 }$ d* J" i
  6816.     (if (/= temp xline_x1)
    1 @7 ^$ s7 o: P9 N2 @7 ?
  6817.       (progn (modify_xline 0) (set_tile_dirv) )  Z. Y  i: P  `0 b# c
  6818.     )& U1 [  M! G: t) E( c2 ^# t
  6819.   ); D7 q. h9 Y" @& n+ K* J6 |/ q. x/ K
  6820.   (defun ver_xline_y1 (value / temp)" j- o5 X3 b8 Q8 A& w) x0 |" a
  6821.     (setq temp xline_y1)$ N% p/ Y$ [5 u" r* {) x5 x" F
  6822.     (setq xline_y1 (verify_xline "xline_y1" value xline_y1))5 H7 {- `5 U' J% g9 S
  6823.     (if (/= temp xline_y1)4 ?5 H( N1 H: V1 ^. v
  6824.       (progn (modify_xline 0) (set_tile_dirv) )
    ; Y+ i/ s  l6 Y7 F* |$ P+ d
  6825.     )
    # v  U! m7 w9 n  d/ F5 q
  6826.   )
    0 V- k# y9 C' q
  6827.   (defun ver_xline_z1 (value / temp), \% d1 o  D7 o
  6828.     (setq temp xline_z1)
    # v' _: |% Z! |6 {! ]
  6829.     (setq xline_z1 (verify_xline "xline_z1" value xline_z1))" r2 [- {$ f/ o5 h4 d: A
  6830.     (if (/= temp xline_z1)
      C% {8 L0 M' O
  6831.       (progn (modify_xline 0) (set_tile_dirv) )
    - j% v# g4 n  d0 n9 L
  6832.     )9 n4 G+ m$ x! h
  6833.   )
    " ~5 [0 [. N' [9 a
  6834.   (defun ver_xline_x2 (value / temp)- t. ~$ O! g9 R3 Y
  6835.     (setq temp xline_x2)9 o. b4 o9 ^4 z& g
  6836.     (setq xline_x2 (verify_xline "xline_x2" value xline_x2))9 T/ d. [! k+ y: L# U& z
  6837.     (if (/= temp xline_x2)
    ' i% T& z( s- s+ e2 Z
  6838.       (progn (modify_xline 0) (set_tile_dirv))* O/ W! w* u: i
  6839.     )  l2 S% ]' x% h9 r; x9 p/ x, v
  6840.   )2 \# ~8 I3 M- {- S8 \& C& t7 L7 E# }& q! Y
  6841.   (defun ver_xline_y2 (value / temp)0 u/ _/ o. i; ]" N5 w0 O$ `, l; L
  6842.     (setq temp xline_y2)3 A% _. h, Y' I
  6843.     (setq xline_y2 (verify_xline "xline_y2" value xline_y2))# j* y. s  a% M; a7 `% l  Y
  6844.     (if (/= temp xline_y2)
    0 e* G3 i8 K( m
  6845.       (progn (modify_xline 0) (set_tile_dirv) )
    8 v+ ^% e8 A. x, x( J
  6846.     )7 S& J+ G% B+ A' V1 ]; }5 M
  6847.   ). `  V. ~7 K- p& V0 p
  6848.   (defun ver_xline_z2 (value / temp)- M' c- A* `9 R  N$ H
  6849.     (setq temp xline_z2)
    0 Z  w' q* t; e% `# W: H
  6850.     (setq xline_z2 (verify_xline "xline_z2" value xline_z2))0 ~8 t# Q# t& k! `4 }6 V: t1 F
  6851.     (if (/= temp xline_z2)# u9 z+ Q- F" ~2 Y% l
  6852.       (progn (modify_xline 0) (set_tile_dirv) ): W# l1 P6 i+ D
  6853.     )
    ! p  I' l. V' a. ^
  6854.   ), @6 {6 Z) O5 O/ U( y
  6855.   ;;% t9 s2 c" A2 k& S3 v  O* m) J
  6856.   ;; Functions that verify tile values for angles
    , f6 f% b( }+ @" z5 x
  6857.   ;;
    ) n) R2 T' ^; ]
  6858.   (defun ver_ang1 (value)
    8 Q- Q( F; j# D1 ~- v: g
  6859.     (if (setq st_ang (verify_a "st_ang" value st_ang))# {/ F3 ~3 W$ a* x
  6860.       (calc), [" C  ~% b9 H
  6861.     )  r6 Z& W! O' G: P. o
  6862.   )2 {. [$ N6 r' K5 K
  6863.   (defun ver_ang2 (value)
    : _- T1 [; g  p  S2 _3 Q0 j# n
  6864.     (if (setq end_ang (verify_a "end_ang" value end_ang)); e0 L' O9 ?% _5 W0 e
  6865.       (calc)3 }( E  ?% D; B( Y
  6866.     )
    & g( K) A. z4 l. i0 r  j6 e7 `2 N
  6867.   )
    7 Q0 Y! B) v8 l& M; K7 j  J. u" O
  6868.   ;;7 n0 c3 \$ L4 R
  6869.   ;; Verify tile value for ellipse end angle. Handled slightly
    ( H* o. C5 ^  e2 t( i
  6870.   ;; differently than the other angles.
    5 _1 K1 R! _' ^; u
  6871.   ;;
    3 p' s9 }: e2 z
  6872.   (defun ver_eang (value), U1 ^8 V+ ]1 S; e" s" m; j+ t
  6873.     (setq end_eang (verify_ae "end_eang" value end_eang))
    % Z8 }8 A' M  }% |3 Q6 P" u; G
  6874.   )2 @5 g) `* N* i: y5 \
  6875.   (defun ver_rot (value)* M* A' b1 u0 l: G4 g1 h
  6876.     (setq rot (verify_a "rot" value rot))
    , R, o0 `: S6 [9 H' n4 w( B
  6877.   )
    . {3 M. }) D6 C; S2 F7 w  b( |
  6878.   (defun ver_obl (value)
    3 R" P# M! `4 ^- S) i6 h5 P) h- T
  6879.     (setq obl (verify_a "obl" value obl))
    . \8 g) V' x# p  K1 R: u8 D
  6880.   ), v4 Y+ G& ]4 j) O( w/ H- T
  6881.   ;;# k, h6 v8 [7 m- K/ v' v
  6882.   ;; Function that verifies attribute tag field for null string,
    : l& K; j6 E8 X% s  [7 y
  6883.   ;; or a string that contains one or more spaces.  Tile value
    " E9 h9 ?) Q! F9 m. q4 V8 s2 C
  6884.   ;; is also converted to upper-case as well.$ W, g0 `; M+ b3 X
  6885.   ;;
    / q4 E# @" s* s# p1 @* R" u4 M3 d) R
  6886.   ;;
    # `; j8 [( v3 L3 S0 i- _
  6887.   (defun ver_tag ( / tval)8 {2 d% K) n2 \1 \; T9 y* G
  6888.      (setq tagval (get_tile "tag"))  q' t5 y# N6 R) d3 H* m+ ^
  6889.      (set_tile "error" "")
    ( O0 S% g3 X% B) V
  6890.      (cond' g1 B( \' h! R, p
  6891.         (  (or (eq "" (setq tval (strcase (ai_strtrim tagval))))7 m, w2 n+ A! `8 z0 y6 d
  6892.                (wcmatch tval "* *"))
    ) ~: V& [& ]3 D  G- d" `9 \' C
  6893.            (set_tile "error" "Invalid attribute tag.")
    % O" q/ j  |' h8 Q" o
  6894.            (mode_tile "tag" 2)
    ( E. P0 y9 F( i) j( n1 Z
  6895.            (mode_tile "tag" 3))
    ) y& F% C9 `; e- d) p
  6896.         (t (set_tile "error" ""), S& a7 k; R9 b7 X% P6 v
  6897.            (set_tile "tag" tval)4 G' N* r: s: }2 h0 _$ l
  6898.            (setq attag tval)))
    1 i4 g$ i; o% a# f3 m
  6899.   )
    5 E# ?% B& k# J- N4 B+ g
  6900.   ;;
    ; ]/ m8 i  E2 v/ U, U% O( ?. W
  6901.   ;; Calculation functions
    5 J3 q3 A4 y' i5 t3 j
  6902.   ;;9 d; N, \: H3 i5 L8 j3 A; d: `/ Q
  6903.   (defun calc ()
    : {- e- B5 D& h4 T2 q- p
  6904.     (if (= etype "LINE") (line_calc))! p1 P; ]# y+ Q4 \7 A4 [2 \% U
  6905.     (if (= etype "ARC") (arc_calc))2 k- K& s1 V1 \$ F
  6906.     (if (= etype "CIRCLE") (cir_calc))
    # C0 m: }- m' Y' ?0 k
  6907.   )0 h2 D# J9 C0 P3 V+ K
  6908.   ;;
    7 C+ n* D: J* a5 o, `- l3 I
  6909.   ;; Calculation functions for lines, arcs, and circles
    & b! ~/ B: Q+ Y+ Q: F! Q; G$ `
  6910.   ;;
    - B! X8 u' ]& ]: Y8 P, R7 Q  x8 {
  6911.   (defun line_calc ()8 z# n! N( ^# h! w( r' A) d
  6912.     (setq stpt  (list x1 y1 z1)): ?* f; x- \! u; y& @: o: G
  6913.     (setq endpt (list x2 y2 z2))" A1 _5 f% c2 t; C
  6914.     (set_tile "delta_x" (rtos (- x2 x1)))1 h# B) X/ `7 @$ J
  6915.     (set_tile "delta_y" (rtos (- y2 y1)))0 Y( S1 W9 ?/ B* l  X5 R
  6916.     (set_tile "delta_z" (rtos (- z2 z1)))
    , X7 |5 Z4 g$ {# G* d
  6917.     (set_tile "l_length" (rtos (distance stpt endpt))), x6 w3 ^* j' u& l' C
  6918.     (set_tile "l_angle" (angtos (angle stpt endpt)))1 s& A3 K% y$ a! _% Y% A/ |
  6919.   ): n# Y6 k/ m0 r. d" I# f9 v

  6920. " W& @6 t* e  u6 ^4 t
  6921.   (defun cir_calc ( / area units)% N; `$ ]% d6 O6 f: c" u0 ~
  6922.         (setq radtest radius)3 b9 R. x2 v. _) `
  6923.         (set_tile "Dia" (rtos (* 2 radius)))
    ) K2 [9 }5 d, e) A+ O+ [
  6924.         (set_tile "Circum" (rtos (* 2 pi radius)))! X( d  [+ H; n
  6925.         (setq area  (* pi (* radius radius)))
      z, V/ s1 ]) V- P3 m
  6926.         (setq units (getvar "LUNITS"))' I" T, z1 R6 {5 X* e7 F& B$ W
  6927.         (if (or (= units 3) (= units 4))
    ; m) b$ c6 k0 p0 X) A; E
  6928.             (progn
      F1 ?; J+ e* l1 A% d
  6929.                (setq area (/ area 144.0))
    / U( ^* H) z, m
  6930.                (set_tile "Area" (strcat (rtos area 2) " square ft"))
      `, A1 T& y# [# `- E: z
  6931.             )3 H' B1 ~9 _. ~; [" g3 r
  6932.             (set_tile "Area" (rtos area))
    % K( ~4 N. \# {( E: n
  6933.         )( V) j( V4 z4 D" M2 ?" k. }2 Z
  6934.   )
    9 D+ t2 u$ M4 ^9 l$ Q& W* }7 k5 X$ j' N
  6935. : Y$ l8 U5 T7 E. G* Y2 \+ m
  6936.   (defun arc_calc ()9 I4 k* G! e  |; j3 \
  6937.     (setq totang (- end_ang st_ang))
    / f' d2 B, ^! H  J
  6938.     (while (< totang 0)" |/ D0 G" o; g  V6 m- |
  6939.       (setq totang (+ totang (* 2 pi)))
    1 [$ w  J; e& P+ V: u' S
  6940.     )
    9 l) D$ [1 v7 E5 A7 J- M
  6941.     (while (> totang (* 2 pi))
    5 h: F9 W* T7 Y+ M
  6942.       (setq totang (- totang (* 2 pi)))
    7 o, F6 Q7 z% j$ L2 `
  6943.     )" i5 C, x) ~' J4 Q$ i
  6944.     (set_tile "tot_angle" (angtos totang))
    0 q. X8 [( F1 ]& O  _
  6945.     (setq arclen (* (* 2 pi radius) (/ totang (* 2 pi))))
    - O3 _( f2 q2 K
  6946.     (set_tile "arclen" (rtos arclen))
    7 i* m( J; M' [+ ~- ^9 n9 {$ V
  6947.   )0 J  }# X2 V/ f0 G* P7 n  ?
  6948.   ;;4 O; Y4 {$ e8 ?! r9 M/ z
  6949.   ;; Calculate the major radius, minor radius, major axis direction.
    # e( a8 a9 Y% [
  6950.   ;; Get radius ratio. Convert Start, end parameters to start and end, [& U$ F5 a  j- C
  6951.   ;; angles. Save Major Radius value in "old_majrad" in case the user; g6 @2 P+ H2 `
  6952.   ;; chooses to input a new Major Radius value later. It's needed to+ O# h& ]; j# t4 \
  6953.   ;; calculate a new Major Axis Vector value.
    : D, q9 f5 {9 f& @& z
  6954.   ;;3 j( i9 @8 Q- k1 i
  6955.   (defun ell_calc ()
    # |" i7 j) C5 q) Z
  6956.         ;; Get major radius from the major axis vector.
    3 X7 w0 ~" r! n1 k7 F
  6957.         (setq majaxis (cdr (assoc 11 elist)))' j" L" o; B) [' {* o" h
  6958.         (setq xx (car majaxis))
    1 h; D. V3 x: Q" d5 ]
  6959.         (setq yy (cadr majaxis))1 q' n+ V" T9 r5 {9 T' t, @- R
  6960.         (setq zz (caddr majaxis))
    / o# Z4 p1 s: _$ |) o( S
  6961.         (setq majrad (sqrt (+ (* xx xx) (* yy yy) (* zz zz) )))
    . g8 O; J% H+ e/ Z
  6962.         (set_tile "majrad" (ai_rtos majrad))4 @/ y& s2 S' f7 V" Z) G
  6963.         (setq old_majrad majrad)5 k) ~8 u' v  _
  6964.         ;; Get radius ratio4 l3 Q0 W. v, ?0 R! N+ o
  6965.         (setq rrat (cdr (assoc 40 elist)))
    ( L1 L  Y+ T3 b3 t6 w  @
  6966.         (set_tile "rratio" (rtos rrat))- }  @3 |4 g# a, T, {5 M4 S
  6967.         ;; Calculate minor radius" w  r8 f" o" ~7 j
  6968.         (setq minrad (* majrad rrat))
    4 B. L- E$ ~+ u# e6 O& f
  6969.         (set_tile "minrad" (ai_rtos minrad))
    * G- ^3 l2 |7 b9 m: A# S
  6970.         ;; display major axis vector
    + |. l2 D  @3 }* m" w0 T# z
  6971.         (set_tile "Majraddirx" (rtos xx))" L' e: i) p3 P" S: q) `
  6972.         (set_tile "Majraddiry" (rtos yy))4 _8 o" w" p$ B& c/ o0 Y
  6973.         (set_tile "Majraddirz" (rtos zz)); t; `7 B5 `6 g$ s8 }( T
  6974. , g0 c4 I, m, J, t7 j9 S& p# P
  6975.         ;; Convert start parm to start angle) p3 m! m6 [( x4 U  o) Z; Q- Q
  6976.         (setq stparm (cdr (assoc 41 elist)))1 d4 a; G/ s7 t+ o7 M5 Y1 g
  6977.         (setq vecx (cos stparm))
    8 p; h& \" X5 d2 n( a8 h
  6978.         (setq vecy (sin stparm))
    ! n* L6 Y8 w1 i) t' }  T: \/ n
  6979.         (setq st_ang (atan (* rrat vecy) vecx))2 m  Y- f; @  C: N
  6980.         (setq tempst_ang (ai_angtos st_ang))
    " i8 i( c; z- S* A% u. R
  6981.         (set_tile "st_ang" tempst_ang)2 \7 I. d$ g2 v4 i, j( r, _5 u: ?4 h
  6982.         ;; Convert end parm to end angle. If end angle evaluates to 02 I0 z5 D! n! n7 k) |0 x  S+ p
  6983.         ;; degrees then display it as 360 degrees.
    * ]& O9 U" R& ^+ b+ r. R/ }
  6984.         (setq endparm (cdr (assoc 42 elist)))6 Z* H( x+ V2 C6 g9 B  \( g1 n
  6985.         (setq evecx (cos endparm))% w+ `0 w9 W) |' H8 u( }0 d5 E
  6986.         (setq evecy (sin endparm))- F) G* I! T  m0 ]) q: o
  6987.         (setq end_eang (atan (* rrat evecy) evecx))- }3 A3 h7 [& K8 I+ J
  6988.         (setq tempend_eang (ai_angtos end_eang)), Z/ q3 D  E- o4 w6 o
  6989.         (if (= tempend_eang "0")- ^1 x" q+ R( z' c2 x7 z
  6990.             (set_tile "end_eang" "360")
    $ b3 Q7 N4 A0 S: W1 O+ A0 Y+ Y  e& y
  6991.             (set_tile "end_eang" tempend_eang): V$ _$ |& k. H6 k% y6 _
  6992.         )
    % C8 H3 M: O* C# i* t4 h
  6993.         ;; Get area of the ellipse.+ r) ]+ E  S2 F$ ^' q! u" G
  6994.         (ell_calc_area)! Y4 b# y' j$ F" O: G7 _4 u6 {
  6995.   )
    0 C0 [  [5 v# r+ ^* s
  6996.   ;; Calculate area of ellipse. If it is an arc then
    % ^' f  N* a1 u4 |# w# Y
  6997.   ;; grey out area display.
    . G- |6 y" _# z1 H( [) t
  6998.   ;;
    6 e! {( |. v$ y$ P* k
  6999.   (defun ell_calc_area ( / area units)
    . K) @  v) Q# ]; r. Q( W
  7000.      (if (and (= tempst_ang "0") (= tempend_eang "0"))
    ( C3 P( w* ^" P
  7001.          (progn
    $ e, J. g: y+ j: _& i
  7002.              (setq area  (* pi majrad minrad))2 L" x, R* N& n) Q8 j- q4 d4 z
  7003.              (setq units (getvar "LUNITS"))
    9 {$ C0 J: a4 D. m9 Y0 S! O3 {4 `, A
  7004.              (if (or (= units 3) (= units 4))+ Y9 o: ?9 D4 g
  7005.                  (progn
    , y% E3 s% |3 e6 x8 d
  7006.                      (setq area (/ area 144.0))
    . {- u$ ^& _2 F& i( L
  7007.                      (set_tile "Area" (strcat (rtos area 2)" square ft"))
    9 p7 _# ]) |; ^3 D( C6 W# [
  7008.                  )7 t' c3 a& ~4 O6 [. a8 }  ^4 ^5 {
  7009.                  (set_tile "Area" (rtos area))
    . C6 O; s# B# r3 ^2 ?1 b2 O+ R
  7010.              )
    8 t! o$ }" g3 w4 ~- \9 Y7 c$ J6 ?: c
  7011.          )
      R" Z- `% D$ Z: w0 Q
  7012.         (mode_tile "Area_text" 1)9 P$ [& a, p& |5 F" {1 ]* K
  7013.      )0 r. x9 f: W( Y( x6 Y) m& u( _
  7014.   ): }7 t+ q6 {+ ?- B( \
  7015.   ;;: ]% R' X! b1 g' O
  7016.   ;; Calculate new values for ELLIPSE, x9 ^- V+ {; Z; C4 ~5 o
  7017.   ;; Minor Radius, Area
    ( a3 D0 ^/ Z$ P: Y
  7018.   ;;
    ! }# @$ C  ?& j
  7019.   (defun ell_calc_newval (ell_tile); O6 Q# E3 S2 g- O  u: V+ T2 K
  7020.     (if (= ell_tile "majrad")
    . w( i& ]9 y( }* Z) ~
  7021.       (progn- T) O  K9 [0 W
  7022.          (setq rrat (/ minrad majrad))
    ) ^6 H' K" H6 i2 J. L8 F) e
  7023.          (set_tile "rratio" (rtos rrat))
    - N! E3 ?5 i0 `5 D" l7 c! @
  7024.          (ell_calc_area)
    3 p  C& i- Z3 Z' W
  7025.       )5 h' Z8 I: h% ~6 h! t; ?+ v; s( Z
  7026.     ); t0 p1 N, e! O4 k
  7027.     (if (= ell_tile "minrad")" {8 ?) R0 N* J9 [( W
  7028.       (progn4 P9 _& k6 k8 Y% b' H- f% X4 [
  7029.          (setq rrat (/ minrad majrad))
    # O5 G5 D! R0 r' S+ _8 P0 Y
  7030.          (set_tile "rratio" (rtos rrat))1 I& o" R2 w" D( `( ^3 b: \
  7031.          (ell_calc_area)& A3 @) }/ O7 c
  7032.       )
    7 p' C: D* p, z5 ]3 J' a. C
  7033.     )
    ; V+ T# e* V* b' ?: ]4 A) V8 a
  7034.   )# H+ {4 o0 P9 z( ~6 w8 i7 T
  7035. * B# ^! R2 l! k  y
  7036.   (defun set_dimen_props (/ loop a stl txstyname)
    7 w! I$ [* J' @0 \  [/ l
  7037. - G  y5 c3 a0 N$ `  @# E
  7038.     (setq stname (cdr (assoc 3 elist)) ; get style name; j& o0 {: M/ K# a, B/ m- ?0 r
  7039.           stl (tblnext "DIMSTYLE" T)7 E5 j* {2 d6 L3 |+ h
  7040.           stlist nil)
    ' n3 o; a9 W  k
  7041.     ;; Get all style names and list them in alphabetical order
      U7 M1 H) @- ^% N; L6 D' k. G
  7042.     (while stl
    ! ^* R0 M- ^& p9 U3 t, y5 d
  7043.       (setq sname (cdr (assoc 2 stl)))
    9 w8 Q) r: u. b" {1 |9 n* j! N
  7044.       (if (/= (logand 16 (cdr (assoc 70 stl))) 16)+ F- X( E* l3 G2 P2 w
  7045.            (setq stlist (cons sname stlist)))
    - [$ Y9 C$ \! L) h# i/ {: e
  7046.       (setq stl (tblnext "DIMSTYLE"))). G; i  n; j% V8 Y: z5 T

  7047. - O6 i6 D4 N- J* \
  7048.     (setq len    (length stlist)( \/ D: {/ _7 s1 G+ I! D
  7049.           loop   0
    $ C% @8 }! M, f" u+ l$ X, N  e
  7050.           dimsty stname
    . ?! a' {3 e$ K0 d
  7051.     )
    2 H' R6 e: a* x6 T1 ^" p/ ~
  7052. 3 {6 e) n, }+ @) ^9 w2 }5 b
  7053.     ;; alphabetize style list, depending on maxsort2 t# Y( I9 |9 @
  7054.     (if (>= (getvar "maxsort") len)
    ) m! c0 l) i% G' o& m* Q
  7055.         (setq stlist (acad_strlsort stlist))
    " k" e& f; w+ U/ }8 M
  7056.       (setq stlist (reverse stlist)))
    2 _1 ^( t" D4 N: R6 T
  7057. ) U( `8 e* ]7 I" R  e1 ?; r: b
  7058.     ; *UNNAMED style (dimsty = nil at this point) is replaced with9 Q5 v7 D, b- r; a
  7059.     ; the current style.  After R13, we require dimensiosn to have a
    5 c4 ~9 s: F' m& z
  7060.     ; dimstyle, so we plug any holes where we find them.
    / r, [! O/ e$ p* T
  7061.     (if (null dimsty)
    ! W; Y* X$ m! r, ?7 J1 U
  7062.       (setq dimsty (getvar "dimstyle"))' v/ m1 V  x! e8 ^) L" C! B. p3 k, Q
  7063.     )
    $ K7 z( p0 r9 G( Q. q7 W: V, {. ?
  7064.     ; Show the styles in combo box3 {4 X; F$ ]! R( F* J6 T( u! ^0 K
  7065.     (start_list "mod_style" 2)0 p6 d; Z6 y* z, E# M" X7 z
  7066.     (while (< loop len)
      u9 t8 X7 @  F; o9 R: r0 F! ]
  7067.       (add_list (nth loop stlist))
    ; l$ a  ?; }, E7 B0 x# C
  7068.       (setq loop (1+ loop))
    0 q% [! g+ v7 v7 t% y0 Z
  7069.     )
    3 ^! z" G  X1 l4 f# n) F5 \
  7070. % N2 k$ i$ T  B# j
  7071.     (end_list)2 w6 T) U: G$ i; ]* y
  7072. 5 K* D+ h8 i  v( K, O
  7073.     ; Hilight the style name of the selected entity
    5 g2 [  U% `$ v+ c: ?
  7074.     (while (and (< 0 loop) (/= dimsty (nth loop stlist)))
    " B& I1 b( M: n0 R  b5 o8 W7 A; M
  7075.       (setq loop (1- loop))& W. d& m& b9 Z. B% e! u1 A. S! x6 h/ Z. h
  7076.     )1 B2 q0 ^; H) \& T: }9 }* k6 i
  7077.     (set_tile "mod_style" (itoa loop))
    " b# z% Q6 r! k5 @8 @
  7078. ) A2 N) m9 x" C; ~, L4 O
  7079.     ; The following is the list dimvars. It must be sorted in the same6 y" i3 \% u7 n% t, Z. s  y
  7080.     ; order as the resfub returned from DDIM (ADS module).# ]3 K4 F+ p' K% b( e2 N
  7081. 8 G5 t( c; d* A
  7082.     (setq dimtbl (list "DIMSTYLE"  "Style name"  "Standard flag values"0 L3 K) ]4 p6 W% U
  7083.         "dimpost"   "dimapost"    "dimblk"    "dimblk1"    "dimblk2"( }) M( t. p6 m  W: _! O
  7084.         "dimscale"  "dimasz"      "dimexo"    "dimdli"     "dimexe"
    / V: E( U( {8 A3 \( }2 c
  7085.         "dimrnd"    "dimdle"      "dimtp"     "dimtm"      "dimtxt"
    $ D8 b' k* S( J  _! h
  7086.         "dimcen"    "dimtsz"      "dimaltf"   "dimlfac"    "dimtvp") ~0 n, F' g: I, f6 t
  7087.         "dimtfac"   "dimgap"      "dimtol"    "dimlim"     "dimtih"+ E: ?. L, ?2 i
  7088.         "dimtoh"    "dimse1"      "dimse2"    "dimtad"     "dimzin"% ^; o' d3 \: ?5 S* O$ s( X0 m
  7089.         "dimalt"    "dimaltd"     "dimtofl"   "dimsah"     "dimtix"
      [4 j: F( g( E. }! p. w
  7090.         "dimsoxd"   "dimclrd"     "dimclre"   "dimclrt"    "dimunit"2 j5 x% o4 B0 f5 Y5 A
  7091.         "dimdec"    "dimtdec"     "dimaltu"   "dimalttd"
    + L0 B9 k1 R1 r! X! O
  7092.         "dimaunit"  "dimjust"     "dimsd1"    "dimsd2"     "dimtolj"
    7 h5 U0 A/ [% k' X7 P3 v0 k
  7093.         "dimtzin"   "dimaltz"     "dimalttz"  "dimfit"     "dimupt"5 {8 T- a6 Z5 ?: p
  7094.         "dimtxsty"( Q+ c; i% \( t& [) B7 O
  7095.     ))
      ^- I2 f3 J" l7 r
  7096.     (progn
    9 F* J1 D+ j* q
  7097.         (setq sv_dvlist (ddimen_getostate dimsty)
    5 Y' ^; g, m9 ]& l% v
  7098.               txstyname (assoc 340 sv_dvlist)
    4 ?; ]: p2 k* @* K0 M9 i
  7099.               sv_dvlist (subst (cons 340 (tblobjname "STYLE" (cdr txstyname)))( o1 J6 m1 `) v( @& l
  7100.                                 txstyname sv_dvlist)
    9 R5 r* x3 T2 \+ ~# h
  7101.               dimlist sv_dvlist
    1 Q+ h5 W- F6 d; e7 Y, A
  7102.         )
    7 ^. z# }" |' p7 x
  7103.     )( v4 w  m$ U& q, E, j1 r1 ~2 }8 e
  7104.     (if (= dimtype "DDLEADER")
    " c1 a$ T' x# {# I) n
  7105.       (mode_tile "mod_format" 1)" W" r  K( W1 w% K* E0 `. C4 x
  7106.     )
    # N9 E+ J7 r/ W' e' q
  7107.     (action_tile "mod_style" "(setq dimsty (ddimen_style))")4 `+ {( g$ a+ h* a' }
  7108.     (action_tile "mod_text"  "(done_dialog 4)")1 @1 s: q5 e/ K# k9 ~# @/ s& b
  7109.     (action_tile "mod_geom" "(setq dimlist (ddimen_dlg dimtype 11 dimsty dimlist))")
    / O3 u6 n$ t: s0 C8 Y5 a$ z# W
  7110.     (action_tile "mod_format" "(setq dimlist (ddimen_dlg dimtype 12 dimsty dimlist))")
    ; a: X( H0 L  |$ {% x8 w' u
  7111.     (action_tile "mod_annot" "(setq dimlist (ddimen_dlg dimtype 13 dimsty dimlist))")
    , L. a* R# ~% Z3 ^4 S- i
  7112.     (action_tile "accept" "(done_dialog 1)")
    " p  N9 G/ C% o% B% q4 C# Z6 @
  7113.   )4 L: G2 p* E- m7 v" j+ F0 @
  7114.   ;;  |5 e" F5 B8 U% N; V( f6 N
  7115.   ;; Get dimvars that have been restored." O2 d6 o% v& d+ K4 Q) t( C) N9 e
  7116.   ;;
    + ^' z  {7 H: N+ F" H% K+ q" b
  7117.   (defun ddimen_getvars (/ elm dvlist dv i)" @7 }# D9 @- u9 ~
  7118.     (setq i 38 i- v; ^" E( d
  7119.           dvlist (list (cons 0 "DIMSTYLE")
    + {4 G+ }4 \+ r# v, l0 k
  7120.                   (cons 2 (getvar "dimstyle")) (cons 70 0))1 @  E% ~4 w7 ]5 \& ~2 K8 l" `
  7121.     )# c# _5 V2 @/ Z3 {; j3 g( j
  7122.     (while (setq dv (nth i dimtbl))) P( n5 c6 s& _8 I6 C( `% u
  7123.       (setq elm (getvar dv)- W0 S; s" w" K% Z" a6 T" I
  7124.             dvlist (append dvlist (list (cons dv elm)))
    " Z$ y1 V. p0 C! W' L4 J
  7125.             i (1+ i)! w% V% Y; C# g% H. d2 ]
  7126.       )
    : j+ V$ ^; n2 F" @3 O
  7127.     )2 U" p* d2 q9 I8 \, B# M) g4 q
  7128.     dvlist9 K( Z" ?* z) ^( m  ]
  7129.   )
    2 D% M5 ^  b! w4 F
  7130. ; V9 I  D& I& w4 G; v
  7131.   ;;" L/ q' N" @2 _) ^; ?6 ~' C
  7132.   ;; Get the original states of dimvars. This is for DIMENSION entities.- a  b6 `% e4 D3 C+ y+ Q" @* [
  7133.   ;;, q/ r8 b9 a! Q) G
  7134.   (defun ddimen_getostate (dimsty / dvlist elm i dvvars)8 G. Q. ~2 e9 i; t! `
  7135.     (setq dvlist (tblnext "dimstyle" T) ; Get a skelton list
    / p/ s9 o- A8 m6 U( N
  7136.           dvvars (ddimen_getvars)       ; Get dimvars for that entity
    ( l9 P  J/ c/ m1 Y, V$ {- E
  7137.           i 1. B$ v2 m3 ]7 n( G7 C( h( G' L& q9 r
  7138.     )
    & Q/ O: b& Z- x4 U5 }5 B! e

  7139. 2 e3 n2 s6 u; h5 Q# z
  7140.     ; Create a list that contains values of the selected entity.8 I- I" m7 S6 \  f4 F. Q5 c$ R2 D
  7141. 2 r$ s$ _' |! r$ B) V7 W5 f
  7142.     (while (setq elm (nth i dvlist))
    / C- d- M1 J. N) f0 J9 Z4 r2 e
  7143.       (setq dvlist (subst (cons (car elm) (cdr (nth i dvvars))) elm dvlist)
      V$ t5 X: x8 C  @: a
  7144.             i (1+ i)0 W" x3 ~$ m" I
  7145.       )
    3 U' }2 B- @( V
  7146.     )
    3 i& c' q( K* a/ u0 J0 b6 `8 e
  7147.     dvlist0 n* J/ G4 A, o6 K  T7 m+ h7 J
  7148.   )
    8 J, g2 c7 |: ?" N3 n; G) }
  7149. " _$ f& N8 c& \, r6 s
  7150.   ;;
    & R! P% l/ @$ g7 c- I$ X; m2 b! u4 `, F
  7151.   ;; Restores dimvars of the selected enity.! R1 d* s3 L0 t' i6 ]
  7152.   ;;
    ) @# B/ B! x3 v. z' ^$ r& ]1 O
  7153.   (defun ddimen_dimsty_restore(/ dimtbl dimsvcurset en)
    0 L8 M" o3 y* V6 {$ K7 T
  7154.     (setq dimtbl (list "DIMSTYLE"  "Style name"  "Standard flag values"  w5 |- a7 ~% [1 V1 i' D0 J. u
  7155.         "dimpost"   "dimapost"    "dimblk"    "dimblk1"    "dimblk2"5 O1 u9 j- O2 r; V. ]
  7156.         "dimscale"  "dimasz"      "dimexo"    "dimdli"     "dimexe"
    / P2 p* t) z! {; b
  7157.         "dimrnd"    "dimdle"      "dimtp"     "dimtm"      "dimtxt"+ n/ d7 Z( V  _8 E% b
  7158.         "dimcen"    "dimtsz"      "dimaltf"   "dimlfac"    "dimtvp"
    1 B& ?5 ^# K! e. v
  7159.         "dimtfac"   "dimgap"      "dimtol"    "dimlim"     "dimtih"
    1 [+ z5 I$ Z7 |+ A
  7160.         "dimtoh"    "dimse1"      "dimse2"    "dimtad"     "dimzin"
    ! u6 q0 E5 Z# u" n
  7161.         "dimalt"    "dimaltd"     "dimtofl"   "dimsah"     "dimtix"0 C, J: K7 |5 e& ^3 A! n6 \" M3 m
  7162.         "dimsoxd"   "dimclrd"     "dimclre"   "dimclrt"    "dimunit"
    ( W' l: Z' e- }
  7163.         "dimdec"    "dimtdec"     "dimaltu"   "dimalttd"& {% K7 d+ x3 ~" R3 ~% C
  7164.         "dimaunit"  "dimjust"     "dimsd1"    "dimsd2"     "dimtolj"8 j" ]0 l  P1 t2 H. c3 p, u
  7165.         "dimtzin"   "dimaltz"     "dimalttz"  "dimfit"     "dimupt"
    ) [2 \% Z* a: }$ O
  7166.         "dimtxsty"
    0 c4 I. Y0 Q' m& v. K8 u
  7167.     ))
    " a6 i5 c2 c5 V  H- s9 v- m( d
  7168.     (setq dimsvcurset (ddimen_getvars))  ; Save current variable settings$ U& E! R: ~4 `7 \3 P. k
  7169.     (progn
    . q: G6 l! ]5 N1 s; _( g, p6 w
  7170.         (setq en (cdr (assoc -1 elist)))) d$ A' x6 x+ A7 j
  7171.         (command "_.dimstyle" "" "" en)* I' @; S. R* P0 S) ?% L5 o4 N
  7172.     ): u- T* Y* G4 D1 a% ]
  7173.     dimsvcurset
    - n8 ]) Z' c1 {% o: K% K
  7174.   )2 u6 B6 U7 t: ]& o- R* k/ [4 {
  7175.   ;;2 f5 S: e, u  [5 T- c& Y) N4 K$ f
  7176.   ;; Modify Leader+ f) W: k+ H0 X; f& p: w2 d/ E0 ^
  7177.   ;;
    / ^2 I% l- d4 d0 c9 g
  7178.   (defun ddleader (/ dtypebit blkname bename sublist a  stname n dimtbl+ l5 v/ V+ P2 l1 d5 A- a
  7179.                    dimsty dimlist dimtext svtext dimovr sv_dvlist stlist
    2 ^! ?; p/ L8 w4 K& A. `  e+ U
  7180.                    dimtype dimsvcurset)5 p( }" A+ C7 b1 V5 N1 G
  7181.     (setq dimtype "DDLEADER"
    ' d. q; E5 `+ v; k
  7182.           dimsvcurset (ddimen_dimsty_restore)
    % n; k7 M  k* i) P
  7183.     ). C, x" R5 L3 e! k4 {0 ~; l& d3 g+ p
  7184.     (if (not (new_dialog "ddleader" dcl_id)) (exit))
    , M: O$ @/ z3 O% b1 e* Y( W: X
  7185.     ;; Set initial tile values& u/ [3 |9 H/ z2 k
  7186.     (set_tile_props)  [+ o) [* a2 W& A
  7187.     (set_dimen_props)7 K6 c2 T/ o' B6 i4 t
  7188.     (set_tile_handle)- L, S0 o6 [$ c- ]: e
  7189.     ;; Define action for tiles
    9 @( o( ?$ i. i
  7190.     (set_action_tiles)' I! O: b% B8 J! U9 F: C9 w; W3 a
  7191.     (mode_tile "mod_text" 1)
    / A% S/ k! g$ G' g! x% U
  7192. - C2 ]% j8 o7 ^, y: j' ?/ Y) z1 j
  7193.     (action_tile "mod_style" "(setq dimsty (ddimen_style))")
    0 ]( \9 ^) q' ]. ?: Y& o
  7194.     (action_tile "accept" "(setq leadtype (get_tile \"s-s\"))(setq arrow (get_tile \"arrow\"))(done_dialog 1)")3 W" X: Q4 J7 [# k/ n/ [7 [" U
  7195.     ;; Get ARROW and TYPE.* A6 z/ d7 a3 B- e! `
  7196.     (if (= 1 (logand (cdr (assoc '71 elist)))) (set_tile "arrow" "1")); j8 d" [7 ^3 P' I1 m0 z
  7197.     (if (= 1 (logand (cdr (assoc '72 elist))))
    * x% U; W9 k( W1 P+ Y% E  ~$ x
  7198.       (set_tile "s-s" "spline")  o: _) x' n' o4 g7 ~2 `5 U
  7199.       (set_tile "s-s" "straight")
    : M1 B+ p, M/ h$ V
  7200.     )
    , k& _, [( M. E- ?- ^. r
  7201.     ;; Start the dialogue.' ~1 ^" G2 k1 Y4 a7 T
  7202.     (setq dialog-state (start_dialog))
    : A5 e; Y1 J5 ~8 D; J9 G. ^
  7203.     (if (= dialog-state 1). p9 u! Z0 M' t7 C  w
  7204.       (progn
    # [/ @/ v$ Z3 ]' ~% a6 ]$ q: R
  7205.         ;; update the style
    3 X, s  j; B8 r5 w2 Z
  7206.         (if (/= dimsty stname). r9 ^, `3 z2 z- v4 J) C. v
  7207.           (progn
    % N$ F/ R: L. F/ f/ S' m5 h
  7208.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    + p- E7 C* K5 v6 U3 a1 n2 |+ E$ `
  7209.             ; doesn't have it." @. h; r- y  O$ `1 p; S* U
  7210.             (if (null (assoc 3 elist))' f. \6 Y+ B1 b; s
  7211.               (setq elist (append elist (list (cons 3 dimsty))))
    ) g. d. O+ V) \* ^* Y: [1 t* j
  7212.               ; else just replace it.
    5 x8 r; @/ S2 m0 y1 a3 Q
  7213.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))5 r: y* R( M1 X. _  [7 [
  7214.             )6 F( }8 @4 T! m( d
  7215.             ; refresh sv_dvlist with new dimstyle.
    $ M) h7 |" z: v9 Y# |
  7216.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))( S% n4 y6 P2 G' e) o5 L2 H/ _
  7217.           )9 ]* c$ r' s& s. M; P; v2 L# w
  7218.         )/ T; L' Y4 z4 v' V: l- ]
  7219.         (if (not (null dimlist))   ; attempted to change dimvars
    4 q& G; N6 K# D; ^5 F9 o+ m8 R
  7220.           (ddimen_complist sv_dvlist dimlist dimtbl)8 M. V4 P! v. p, I3 r/ E
  7221.         )
    2 R; h+ j/ ?. d
  7222.         ;; update for ARROW.1 G8 c8 y+ c  P' B5 y0 }
  7223.         (if (= "1" arrow)$ r3 r8 Y  q( W) L" D5 A# D8 X4 T
  7224.           (setq elist (subst (cons 71 (logior 1 (cdr (assoc 71 elist)))) (assoc 71 elist) elist))  g/ ^8 t/ `5 e( y
  7225.           (setq elist (subst (cons 71 (logand (~ 1) (cdr (assoc 71 elist)))) (assoc 71 elist) elist))
    7 X5 f7 a2 u; D- \( k9 |
  7226.         )6 B2 Y% Y1 d: j) O  E& O$ o$ s! P
  7227.         ;; update the TYPE.  g( a- c3 I4 _- Q& x, ~6 V0 N! E
  7228.         (if (= "spline" leadtype)
    & M& V0 T+ X0 `+ H4 c  Z
  7229.           (setq elist (subst (cons 72 (logior 1 (cdr (assoc 72 elist)))) (assoc 72 elist) elist))
    0 g" X: j# [6 i) e' c. G! F; m2 g" e
  7230.           (setq elist (subst (cons 72 (logand (~ 1) (cdr (assoc 72 elist)))) (assoc 72 elist) elist))8 @1 g, B  m/ Q  Q6 _
  7231.         )
    / Z! F3 ~) x+ o" D: N' X8 Q* U
  7232.         (modify_prop_geom)
    / [7 t8 w$ t. N! ?( O
  7233.         ;; update the Color  H  O; \0 I0 j# ^' s
  7234.         (setq elist (subst (cons 77 ecolor) (assoc 77 elist) elist))
    % e. v0 W  b5 l) ]/ b; e0 M
  7235.         (entmod elist)
    2 R7 Q) ]9 K% |0 b% A/ ^
  7236.       ), J, G9 L+ Q8 b; V/ q+ H4 ?/ k
  7237.     )
    * h* T; m1 \2 I8 }! S: l* \7 }6 A
  7238.     (ddimen_setvars dimsvcurset)      ; Prepare to exit; [1 J/ N! t8 s4 X7 e7 F
  7239.   )+ ?4 x- s) T( e" x6 a
  7240. 2 ^5 p6 g+ \/ ~9 ^7 b; i) `
  7241.   ;;
    / N- w9 }+ v1 \
  7242.   ;; Get dimvars of a dimstyle with overrides.6 ~6 M$ f3 s1 F! S) ~3 Y2 u
  7243.   ;;7 A& }$ X- R8 y" D4 n7 G

  7244. 1 ?0 m! D; J% L9 a" C
  7245.   (defun ddimen_getdimvars (dimsty / dimovr dvlist elm i)! [: n* M! y7 r. |& @$ b

  7246. 4 ]7 G8 J' e" `, `; v* X6 Z
  7247.     ;; Get override information for the specified entity.$ Y6 N/ @$ Y5 R! `
  7248.     ;; Leader/Tolerance cannot be restored by DIMSTYLE command, so we
    5 b# F" @& b9 [  h8 P3 ?
  7249.     ;; must obtain override information through this tedious operation.$ u: t; g5 Y( a  P# D/ j( K/ R. B5 u
  7250.     (setq dimovr (car (cdr (assoc -3 (entget (cdr (assoc -1 elist)) (list "*")))))  o) v- S4 |! ]) a/ R" D
  7251.           dvlist (tblsearch "dimstyle" dimsty)4 ^# _! g2 Z6 L1 e5 `
  7252.           i 2
    ' B9 {& Q# E! a4 l8 Q- _+ R, c
  7253.     )' A! C5 ^2 m6 U, O! H& q) f9 X

  7254. 1 ?1 ~' @7 L- ?7 Y3 B
  7255.     ; Update the list with overrides if overrides exist.- k- _. o: ?8 B8 p( ^

  7256. ' f1 y0 n7 B, i2 o6 e. Z
  7257.     (if (and dimovr (= "DSTYLE" (cdr (nth 1 dimovr))))
    & `3 B9 E" M$ a+ T# z
  7258.       (progn: j, J+ C& p5 _: Z2 A; V4 h3 B
  7259.         (while (setq elm (cdr (nth i dimovr))), ~2 s5 [: _; D2 Y
  7260.           (progn4 t; `: j; n1 [. S- X
  7261.             (if (or (= elm "{") (= elm "}")), w- a9 G) k+ u' S1 v7 v+ A$ Y
  7262.               (setq i (1+ i))
    & q: X1 J3 a1 [
  7263.               (progn* e0 N$ }+ g6 A+ o* b6 `
  7264.                 (if (or (and (< 180 elm)# y) a. K) [% q
  7265.                              (< elm 190)/ l+ V, |9 D5 ]; k' S
  7266.                         )
    * L: v* ^5 u* q5 ~# s2 c/ }. Z  D/ x
  7267.                         (and (< 80 elm)
    ) j+ P, |3 T" v5 b* e4 J: Z
  7268.                              (< elm 90)
    1 `; Y/ D' k' d) ?5 b8 W: Y# O
  7269.                         )' |, }1 q9 o+ h6 k- ~
  7270.                     )7 s7 v6 }3 e+ a9 k9 u/ |
  7271.                   (setq elm (- elm 10))! F* G' {+ h: @( ^3 w
  7272.                 )
    " Y: t* w- T0 ~! \  k( I- n
  7273.                 (setq i (1+ i)  i  H" Q. ^7 Z1 L4 Q
  7274.                       elm (cons elm (cdr (nth i dimovr)))
    " J0 a! I* N' ]. x
  7275.                       dvlist (subst elm (assoc (car elm) dvlist) dvlist)
    ) ^. Y; ^. L# @8 y7 ]4 [6 ?
  7276.                       i (1+ i)7 S3 N% i  D! _) s, [3 z3 \
  7277.                 )
    & H; A1 \, L1 h5 M7 J. h
  7278.               )3 Q; i/ I- @& H9 S7 N( r6 N2 L
  7279.             )
    ( @5 t% }) Y& Q  v% `
  7280.           )
    ' {0 p; Q# J# ^$ a
  7281.         )
    " C7 p9 `0 T3 j2 Y9 o# j
  7282.       )' P- ^6 _1 D0 k8 c
  7283.     )
      V) Z3 A' g7 B/ S) n6 l+ Z
  7284.     dvlist+ l7 S/ k' g) w! O2 u
  7285.   )
    0 r( N: b6 }/ ?0 X

  7286. & t/ b" G; J, ]& z
  7287.   ;;
    , C; x4 k3 p* h) q; R  N3 I
  7288.   ;; Modify POINT+ x- l, \% o+ _4 n9 Q  w& y, I
  7289.   ;;4 n1 \- `  H: \: U/ E+ Y
  7290.   (defun modify_point ()
    4 ^2 I, Z+ T8 U! x
  7291.     (modify_properties)
    5 r8 X4 i& S9 [
  7292.     (setq pt1 (list x1 y1 z1))  @. Z% ^6 \3 t0 I7 L! j
  7293.     (tempmod pt1 10 0)) |% S! B/ `9 B  q
  7294.     (entmod elist): i3 F: c& q% b. J) C( G
  7295.   )! a* C1 T; x. \: \2 W. ~
  7296. ) ]/ v) j, ]$ y; c% a
  7297.   (defun ddpoint ()
    5 P7 F) z7 F5 U' v: c9 L
  7298.     (if (not (new_dialog "ddpoint" dcl_id)) (exit))
    * N2 q9 Q7 K, C' Y! _% U
  7299.     ;; Set initial tile values
    0 A. L% j8 B; o# i+ F
  7300.     (set_tile_props)
    * U, ^) O8 f7 O) ?  P
  7301.     (set_tile_handle)3 R/ g8 h# S  u1 o- X
  7302.     (set_tile_pt1 0)
    4 c2 R" F! v, r
  7303.     ;; Define action for tiles% \! l4 b; V( F9 }5 O  e
  7304.     (set_action_tiles)$ v. D  \# V. z; a8 t9 E
  7305.     (setq dialog-state (start_dialog))& J( {) d& J  r* j
  7306.     (if (= dialog-state 0)2 o. c* i2 z) d& Q4 o2 M; A: |2 ^; w+ k
  7307.       (reset)0 D9 W/ T7 V5 l- q7 V( h1 C
  7308.     )
    . l3 f# E& Y9 H) e) i$ j6 n
  7309.     (if (= dialog-state 3)/ T" [0 |1 K# K+ S3 C
  7310.       (progn. P' H& Q: k7 e: P# r
  7311.         (modify_point)! H' w/ d. ^+ w# b$ Z4 u
  7312.         (setq pt1 (getpoint (list x1 y1 z1)  "\nPoint: "))" U; K; w- {, k, X
  7313.         (ver_pt1 0)3 l2 M9 f1 s& i2 \8 L/ Y7 u
  7314.         (ddpoint)
    * J6 z+ B% x# ^  S
  7315.       )
    : i2 o0 X" Z/ h1 G* S' h
  7316.     )
      I" |1 w( |. K8 r: N# t/ G* c
  7317.     (if (= dialog-state 1)$ a+ N  D& F' X: p
  7318.       (modify_point)) ~. }0 m1 R! T; [) K, Z& A
  7319.     )
    1 {' Z  p% d) c' b6 j
  7320.   ), Q! y9 q9 e/ t6 {8 M: X. _
  7321.   ;;, p. S9 P8 j8 w8 w, m
  7322.   ;; Modify LINE7 F" r: N1 X7 B, Q
  7323.   ;;
    , f+ X7 n1 X& O+ y6 j2 U% L! r
  7324.   (defun modify_line ()
    # c" c2 B; m8 H9 v" d. L
  7325.     (modify_properties)/ E8 B& s4 ~# H. i2 g! U
  7326.     (setq pt1 (list x1 y1 z1))
    0 V- H, u1 c& f+ @7 E$ w4 l. L; r- L
  7327.     (setq pt2 (list x2 y2 z2))( a  M: H. [! @9 c
  7328.     (tempmod pt1 10 0)+ Y$ S0 r1 R1 y  t6 z
  7329.     (tempmod pt2 11 0)5 r, O; E8 H, Q- F& \
  7330.     (entmod elist)8 R: t5 n9 i7 _% z; _( I1 Y3 A
  7331.   )
    8 p5 ^9 h$ S: W- S- I
  7332.   (defun ddline ()
    ' w  i0 j  ^- ~1 s- ~; X
  7333.     (if (not (new_dialog "ddline" dcl_id)) (exit))( ^' p+ b# g8 f% t# B
  7334.     ;; Set initial tile values
    6 N5 w9 k+ j, t  O  L0 x
  7335.     (set_tile_props)
    ; q& n' d* O% p! _( h; I7 L6 ^6 z) l
  7336.     (set_tile_handle)
    9 j+ b5 {# f2 q* b% Y7 N
  7337.     (set_tile_pt1 0)8 F9 v# a+ N9 z
  7338.     (set_tile_pt2 0)
    1 |& S) x  m- |1 G! t, \
  7339.     (line_calc)( b# v2 [9 M0 S
  7340.     ;; Define action for tiles
    0 e- Q2 q7 d; ~0 [
  7341.     (set_action_tiles)% b: j+ _( w8 E0 d$ h
  7342.     (setq dialog-state (start_dialog)): W, H1 l& ^: y4 y1 L
  7343.     (if (= dialog-state 0)
    " U+ i: }' }# N  H' Q
  7344.       (reset)
      h  o: K6 @5 W. A# [3 p! A" i( b
  7345.     )
    ; @8 t7 t% A3 L. A% ]
  7346.     (if (= dialog-state 3)
    " \. W: `) E7 G) T) Q
  7347.       (progn* i' J) Q& K9 {
  7348.         (modify_line)
    % A: e( W9 a8 u; U0 V$ M$ O9 O
  7349.         (setq pt1 (getpoint (list x2 y2 z2)  "\nFrom point: "))
    - d9 y, v5 X4 [: @5 g$ |
  7350.         (ver_pt1 0)
    ) C. _% y  x) p7 ^, a3 l
  7351.         (ddline)0 Y6 A/ H  |# n' L
  7352.       )
    2 F) c2 D7 v. w+ n9 k" j5 A
  7353.     )
    1 s7 _( ^2 B& \" q8 A) R
  7354.     (if (= dialog-state 4)0 `" d5 }3 E$ x4 z: t2 o
  7355.       (progn
    # `/ y) U3 v; w2 ^
  7356.         (modify_line)
    ( K9 \0 s1 n$ A5 s& }, i, c
  7357.         (setq pt2 (getpoint (list x1 y1 z1) "\nTo point: "))
    ; e# p6 p. C9 s* [1 {: w7 b' }
  7358.         (ver_pt2 0)
    ' u/ n5 U% h- v0 j
  7359.         (ddline)
    6 M, d6 N  B5 H% D- }
  7360.       )! w5 K$ ?  s& a+ B3 s! f
  7361.     )
    1 @9 f1 n* V" v/ H2 d
  7362.     (if (= dialog-state 1)0 [! f# m' v. {
  7363.       (modify_line)3 Z& n) ~+ x/ ^; r
  7364.     )
    1 N! {: H7 T! I
  7365.   )2 Q: Z1 }6 ?3 {0 j
  7366.   ;;3 w' {! D6 a8 O( @0 J
  7367.   ;; Modify MLine; a% A$ n, I! u8 M: P
  7368.   ;;
    # k! E  C. k- e% W# A# F
  7369.   (defun modify_mline ()
    ' d2 u# o9 m" f  X4 k( Q! R; m( J
  7370.     (modify_properties)
    ; |! h$ Z2 e2 r- L8 H
  7371.     (entmod elist)8 ?2 g0 m4 X) b2 i
  7372.   )0 L6 U, j( O2 K2 x
  7373.   (defun ddmline ()6 w2 T! u% T& w8 C
  7374.     (if (not (new_dialog "ddmline" dcl_id)) (exit))
    ( ?+ u# {) F  n5 F; t: \, p5 ?- F
  7375.     ;; Set initial tile values8 `. U# W. T1 U) A' ~; o
  7376.     (set_tile_props)
    3 p7 ]' a, C5 P2 z8 V- l
  7377.     (set_tile_handle)
    8 X7 y/ I' m* a. ^, P
  7378.     ;; Set mline style text field., |4 ?2 o. @. e% N. d" b) n) M
  7379.     (set_tile "ml_style" (cdr (assoc '2 elist)))$ s- [7 a# r; c/ _6 @; a" z0 T+ X  H
  7380. 5 j: b, B. r5 z/ y7 `. J, n
  7381.     ;; Define action for tiles
    $ H6 F$ _) k3 p' e/ N7 x( O1 f+ k
  7382.     (set_action_tiles)2 [8 D: V" s" q$ J
  7383.     (action_tile "ml_edit" "(done_dialog 3)")
    : p4 D% q% Q  U$ G9 f, o3 n0 j
  7384.     (setq dialog-state (start_dialog))# @( h- ^4 Y1 y# o. L* E" C2 \
  7385.     ;; Dialog cancelled, reset to original values.
    2 \: G2 x( t5 v7 y; I2 b$ U
  7386.     (if (= dialog-state 0)
    1 q: o7 U1 L) i7 g+ _
  7387.       (reset)
    . }9 `8 F+ A6 O
  7388.     )6 g( o' z; r& a( m9 A! s# s
  7389.     ;; Dialog OKed, update the mline.
    . Z, C' \" _0 ?
  7390.     (if (= dialog-state 1)7 K  G0 _9 ~0 d
  7391.       (modify_mline)
    4 L4 Z9 j8 C- @
  7392.     )$ p& ~" ^2 ?) W, _1 R8 m
  7393.     ;; Edit Mline, call MLEDIT.
    ! O. V' ^2 |" k$ v; C& n: d; X3 Y
  7394.     (if (= dialog-state 3)' L) _) ]  q  k) n. _
  7395.       (progn
    7 Q9 |' Z& E- g6 E
  7396.         (modify_mline)
    $ g0 T! [2 T% G( ]2 K. q
  7397.         (command "_mledit")
    ) @: u3 K- p3 V( _+ D7 T
  7398.         (ddmline)+ m" i$ B/ B& u# n
  7399.       )
    ' t: f% n  b6 b: e
  7400.     ): a, s0 D; k/ q; e
  7401.   )
    , W4 B5 C! Z+ @- j! _4 H
  7402.   ;;
    ) F8 [* {8 A  m, S
  7403.   ;; Modify Xline+ o6 c8 w. |3 j  g
  7404.   ;;5 _; z% I4 j0 F! s" ]4 I0 \
  7405.   (defun modify_xline (flag). ~2 H0 o: K. W
  7406.     (modify_prop_geom)2 h. H: ]1 i/ d
  7407.     (setq xline_pt1 (list xline_x1 xline_y1 xline_z1))1 b! l9 c: \) R7 n0 y* T# c
  7408.     (setq xline_pt2 (list xline_x2 xline_y2 xline_z2))
    1 H# z$ e# v1 T3 c* Z
  7409.     ;; Update the Root point.
    ; I) v& X5 {0 u3 O) {
  7410.     (setq elist (subst (cons 10 (trans xline_pt1 1 0))
    ) e! I) A) {4 ?" Y! V+ k8 S
  7411.                        (assoc 10 elist)
    + p" ]) K5 V. u1 r0 ~
  7412.                        elist+ M6 _/ o8 V* _1 \
  7413.                 )& b) h1 C7 O. E" n, e
  7414.     )5 a  c7 E# ]0 s+ v+ i; X+ S6 w
  7415.     ;;
    8 T# n  Q% ]) \' M9 I! s4 R
  7416.     ;; Calculate new Direction Vector WCS5 Z- C: _; R+ D" C2 M9 q# b, K  i0 G
  7417.     ;; x / (sqrt ( (x**2) + (y**2) + (z**2)     ))1 [% n; [# C) l7 y: n2 z" t
  7418. 1 B- g+ o1 E& n: }& V4 }( Z
  7419.     (setq temp_dir (trans xline_pt2 1 0))
      c1 L9 s0 ]0 d/ ?8 G% d0 e9 W7 K
  7420.     (setq temp_dir_x (car temp_dir))
    / v% x+ m2 j( c% e' x6 \
  7421.     (setq temp_dir_y (cadr temp_dir))
    ) L4 M  M7 U# j2 b$ I. {% ]
  7422.     (setq temp_dir_z (caddr temp_dir))" H0 Q6 H" P/ x' `) w% d6 s- O1 O4 [
  7423. * [5 ^2 M1 U) a
  7424.     (setq temp_xline_pt1 (trans xline_pt1 1 0)). ~, f* o  J1 u0 Z9 R' L9 H
  7425.     (setq temp_xline_x1 (car temp_xline_pt1))
    4 P, v; a4 B3 C0 d. @4 i! V. R
  7426.     (setq temp_xline_y1 (cadr temp_xline_pt1))- }# C/ U% h7 v) x" u- ?
  7427.     (setq temp_xline_z1 (caddr temp_xline_pt1))- x7 V3 B' u  Z  `6 l# Y0 Z: u' x) F
  7428. . [5 r' c+ g% V* x5 x; v0 I' H: a
  7429.     (setq denom (sqrt (+ (expt (- temp_dir_x temp_xline_x1) 2)
    5 q, G2 e, U! g7 D" c8 n4 O5 x
  7430.                          (expt (- temp_dir_y temp_xline_y1) 2)
    2 n" Z# G' i7 [9 o4 e5 ]5 B
  7431.                          (expt (- temp_dir_z temp_xline_z1) 2)
    ( \5 S) ?5 T6 S/ B2 z' \
  7432.     )))5 e  u6 Q4 y3 u6 }; r$ ?
  7433.     (setq temp_dir_x (/ (- temp_dir_x temp_xline_x1) denom))
    * ?: U1 J; z: p0 f4 t4 q) O
  7434.     (setq temp_dir_y (/ (- temp_dir_y temp_xline_y1) denom))
    + {* j  X- |  j" z3 A( K" N
  7435.     (setq temp_dir_z (/ (- temp_dir_z temp_xline_z1) denom))
    . S* n( o  I1 [+ X- d, Y1 R/ z
  7436.     (setq elist (subst (cons 11 (list temp_dir_x temp_dir_y temp_dir_z))  f& P& w) Q1 Q% C- {* u' f$ |
  7437.                        (assoc 11 elist)
    0 Q% j9 v8 L, y* l' K; S! L  G) C- Y
  7438.                        elist
    0 b5 r% C$ t) B5 N1 I
  7439.                 ), M) ^9 \2 ?' P# I/ ^6 p! K
  7440.     )
    6 Z8 J( V8 h- C* R7 K
  7441.     (if (= 1 flag)
    " R* T$ W+ M! q" }, P# c! |3 ~
  7442.       (entmod elist)
    " w. h& d! t# V# W  S$ L
  7443.     )/ z! Q. L! o5 [; Z& @5 @
  7444.   )
    + u2 v( s; W; h& _$ N; M

  7445. 5 M6 {* F3 U* c5 D% u% U
  7446.   (defun ddxline ()( e! a% O# U/ f% d3 Z$ f% [
  7447.     (if (= etype "XLINE")! U% \% ^& K) J' e# Z! _
  7448.       (if (not (new_dialog "ddxline" dcl_id)) (exit))' l8 O9 K3 f$ u0 L% P4 M
  7449.       (if (not (new_dialog "ddray" dcl_id)) (exit))9 t' N* s8 b9 J8 F
  7450.     )
      \& l8 j9 J. v. c& D% L1 X
  7451.     ;; Set initial tile values; o! }; ^8 l% m8 e" r
  7452.     (set_tile_props): L" U0 ]" p/ t# u
  7453.     (set_tile_handle)& @, U& v. k% E8 B
  7454.     (set_tile_xline_pt1)6 b3 J1 I8 |$ v; x6 e
  7455.     ;; Convert to UCS and post Direction vector." r$ j  t. r+ V- g" e( P
  7456.     (set_tile_dirv)' f* n/ W7 f7 y% V6 }8 I. R/ C
  7457.     ;; Calculate second point by adding Root Point + Direction Vector.
    / K- q! j9 c# B3 o
  7458.     (set_tile_xline_pt2)
    - X; F( S4 G+ V. m
  7459.     ;; Define action for tiles
    , O* a( B5 w( ]. Z
  7460.     (set_action_tiles)" G# Z" Y, I: {# |
  7461.     (setq dialog-state (start_dialog))9 J( \- W- Z  L# r/ ^
  7462.     (if (= dialog-state 0)
    , g4 X: L% o- E1 c5 s* N9 t
  7463.       (reset)' H, k- h% |4 }4 X
  7464.     )9 \; n+ E5 |* C1 O3 A' v- ^+ ]
  7465.     (if (= dialog-state 3)
    5 L/ ^, u" h3 p
  7466.       (progn
    + }$ M# t' h$ i
  7467.         (modify_xline 1)
    2 f+ Q8 N; [/ z( t
  7468.         (while (equal xline_pt2- w6 \# x1 W, V
  7469.           (setq xline_pt1 (getpoint xline_pt2 "\nRoot point: ")) 0.000001)$ E# d8 i/ f' O6 q
  7470.           (princ "The Root point cannot equal the Second point.")" o% \9 o! u# e; I) Y& i
  7471.         )
    ) t7 ?8 ?: y! T8 i! ^+ ^
  7472.         (ver_xline_pt1), v5 ^5 U" M* u
  7473.         (ver_xline_pt2)3 X6 O7 a  [$ D6 I6 R0 s( L2 n1 l
  7474. (princ)
    ' B$ F6 ^6 x$ ?" y7 H
  7475.         (ddxline)5 \& k( f; S% e+ c* r% r. E
  7476.       )
    , _- ~7 q- _5 F
  7477.     )
    , [/ m+ o) {, S& ^$ V: @
  7478.     (if (= dialog-state 4)
    1 b0 f/ g$ v( u% C
  7479.       (progn- X* [* \6 `( B8 j9 q( o
  7480.         (modify_xline 1)
    3 t1 U" d) B; z# U# O3 H) s1 ~4 V
  7481.         (while (equal xline_pt1
    $ _% E0 r, G3 D! t$ L4 s6 z
  7482.           (setq xline_pt2 (getpoint xline_pt1 "\nSecond point: ")) 0.000001)
    & _$ {4 y) f2 H5 E5 j
  7483.           (princ "The Second point cannot equal the Root point.")- m& }8 T- g* f7 m+ H0 d
  7484.         )
    1 p* v- |8 g- p
  7485.         (ver_xline_pt2)
    ) Z- u; A' @, d2 c! x. S* P; v( S$ c
  7486. (princ)
    - V, ~; B" a0 C& D* t, p  p8 t
  7487.         (ddxline)* g7 B- d8 {7 Q* w5 a
  7488.       )2 `  f" U; w$ R& C5 P8 z! [4 u
  7489.     )
    2 T9 F8 T0 O' l$ i9 _
  7490.     (if (= dialog-state 1)
    * }+ r+ [2 P8 b1 Q2 `
  7491.       (modify_xline 1)
    5 ?# A7 O) _& z( _- b9 s
  7492.     )
    9 n' y( y( D) R, t5 F
  7493.   )+ U, X% j- U0 H1 D4 E9 b  K
  7494.   ;;6 J% N" o, N5 e# M$ l) o9 r6 t0 G- }
  7495.   ;; Modify ELLIPSE
    ! l) f0 y! D6 n  G- k
  7496.   ;;
    & Y' W  D3 f3 p" G0 k2 y9 I9 @1 o
  7497.   (defun modify_ellipse ()
    3 d' b9 h& O' |5 i
  7498.     (modify_prop_geom)6 |4 a8 W' ]+ w$ J) R& C3 d1 p; @- x
  7499.     ;; Update Ellipse Center Point value.
    6 b- U8 K- r# v/ ^' y2 ~5 C' R
  7500.     (setq pt1 (list x1 y1 z1))& I3 B' {0 o6 ^; ?2 u
  7501.     (tempmod pt1 10 1), e% }# K- f+ Y1 w( U& K
  7502.     ;; Update Start Parameter value.
    : E6 a- }+ J6 s3 q7 u- a) m2 l
  7503.     (setq y_val (sin st_ang))0 I6 l8 c$ V( {, ^9 q$ H; z
  7504.     (setq x_val (* rrat (cos st_ang)))
    2 j" v+ d' N" V" z# o5 k2 x
  7505.     (setq stparm (atan y_val x_val))
    % v& i% X0 X$ [3 x: R
  7506.     (setq elist (subst (cons 41 stparm) (assoc 41 elist) elist )): l# `6 l9 G4 {' {/ A- w
  7507.     ;; Update End Parameter value. Normalize it, if it's less than# y' G; J' O: G% o  ]
  7508.     ;; the start parameter.2 a/ f) [9 T& h! c- ]8 _  m8 Z7 l
  7509.     (setq y_eval (sin end_eang))
    ' h9 Y# c. W' l
  7510.     (setq x_eval (* rrat (cos end_eang)))
    ) C5 N. z; I  R1 z
  7511.     (setq endparm (atan y_eval x_eval))
    " H7 f$ ?6 q% I+ p
  7512.     (setq diffparm (- endparm stparm))% z# {# L) [- U$ G
  7513.     ;; Epsilon of 1.0e-6 radians for checking a zero length arc., r. U& P4 Z/ ]% w
  7514.     ;; Since zero length arcs are not allowed - construct the full: Z! R) I( i) I9 d1 x
  7515.     ;; ellipse in this case.# f0 ?! p5 r, a, n) z0 {) d5 r
  7516.     (if (<= (* diffparm diffparm) 1.0e-12)' z% l" p& w" ^' s4 H
  7517.         (setq endparm (+ stparm (* 2 pi)))6 V$ a- `9 X8 H* G7 I+ `! C/ U
  7518.     ); g% d" {5 W1 W$ {. \$ d" M
  7519.     (if (<= endparm stparm)8 q6 L2 Y3 v2 u, U* t3 j
  7520.         (setq endparm (+ endparm (* 2 pi)))
    + T0 h7 j: K$ ~: s
  7521.     )( S- g$ ?# z' i) _5 J. E
  7522.     (setq elist (subst (cons 42 endparm) (assoc 42 elist) elist ))) ~2 }# ?& t; G1 r! V/ N/ A
  7523.     ;; Calculate the Major Axis Vector by first calculating
    8 v) U( }, ?; r" Q1 ]
  7524.     ;; a unit vector using the old Major Radius value. Then
    6 [" w7 n" ^! X5 h0 _, D4 d- W
  7525.     ;; Multiplying that by the (possibly) new Major Radius0 F' h+ n8 s  R$ M0 L$ Z2 Q
  7526.     ;; value to get the new Major Axis Vector value.
    : n5 Z: z/ P5 a" G8 s# C
  7527.     (setq unitxx (/ xx old_majrad))7 [) \2 @5 N9 @6 E8 s' g4 Z% T
  7528.     (setq unityy (/ yy old_majrad))7 _  M2 i8 n  x9 V
  7529.     (setq unitzz (/ zz old_majrad))! `. C+ j" A# {6 }& r9 Z0 P
  7530.     (setq newvecxx (* unitxx majrad))
    3 N2 ]5 _7 ?" V9 F+ ~
  7531.     (setq newvecyy (* unityy majrad)), ]  M' n- w4 J. B6 h# A
  7532.     (setq newveczz (* unitzz majrad))3 t3 I3 ^: o7 K! U% K# p1 q3 B' A1 Q
  7533.     (setq newmajaxis (list newvecxx newvecyy newveczz))( S, b5 r! C6 L, ], f/ s! b# K1 E
  7534.     ;; Update Major Axis Vector value
    & Z3 D! E5 u6 N  a7 W2 z
  7535.     (setq elist (subst (cons 11 newmajaxis) (assoc 11 elist) elist ))9 H1 [( z  P6 J! ~4 n' u& U
  7536.     ;; Update Radius Ratio value# a# _1 M/ H0 @1 C" ~1 z
  7537.     (setq elist (subst (cons 40 rrat) (assoc 40 elist) elist ))% q: T5 ?! h! q. {% M4 J
  7538.     (entmod elist)  `4 v- _4 e( }' f1 n. h+ n3 N
  7539.   )
    / q7 m0 I6 b3 C& I7 ^: z+ f) K* O
  7540.   J3 {; r" _1 `. N2 D5 ~+ z
  7541.   (defun ddellipse ()
    1 G9 O5 s: l7 y" ]! @6 A
  7542.     (if (not (new_dialog "ddellipse" dcl_id)) (exit))
    : t& a1 _  k: J0 Y  G1 M
  7543.     ;; Set initial tile values0 t: C8 l- h. J" ]+ H) d" _
  7544.     (set_tile_props)
    1 `5 [, D2 T# u1 c( P3 c
  7545.     (set_tile_handle)) ?7 b3 B# H& C) S+ o0 p& R
  7546.     (set_tile_pt1 1)
    $ ^  v# C4 y# m5 p$ L) J$ j
  7547.     (ell_calc), u" h/ R! z2 K( M$ ^4 Q
  7548.     ;; Define action for tiles& G# a# {" T1 ?. w, C8 f4 G9 y
  7549.     (set_action_tiles)
    ! U  m& x  @3 b
  7550.     (setq dialog-state (start_dialog))
    2 i  W. v  z* w& Q* n
  7551.     (if (= dialog-state 0)8 ~$ D- Q4 l4 ^5 _3 w; }% G
  7552.       (reset)
    1 S1 V/ J& E- C: I
  7553.     )
    . Z( p8 x, I/ P! h( I# V6 |
  7554.     (if (= dialog-state 1)
    $ s2 D' q9 d' Y, n$ a
  7555.       (modify_ellipse)
    8 D& M$ l1 t+ H4 b# ^, w4 J
  7556.     )
    ' w% U' n9 ^* R# `
  7557.     (if (= dialog-state 3)+ T  P8 ?2 d8 o0 a8 Y, J) Y# X& e
  7558.       (progn/ L# ]8 ~+ P* B: M/ ]
  7559.         (modify_ellipse)
    # O% E" K' k8 h; l
  7560.         (setq pt1 (getpoint (list x1 y1 z1)  "\nCenter point: "))
    5 g6 Y6 [; K3 J/ L! T8 c
  7561.         (ver_pt1 1)# u- |6 e( S( y$ R2 Z1 L- Z7 z
  7562.         (ddellipse)4 `7 w- V, f( M7 N2 v; @
  7563.       )
    . L) S! x5 r/ V
  7564.     )
    $ b" y) i) m. D/ r" t% q6 L* W3 t
  7565.   )7 z- q3 P3 X5 O
  7566.   ;;: E, B: j) V( P# ?  Z; M1 l
  7567.   ;; Modify REGION" L% Q: Z+ T8 F4 B) r) z
  7568.   ;;& G8 X+ W0 x* A3 e' v2 D& A
  7569.   (defun modify_region ()- u0 i. {3 w  {. P
  7570.     (modify_prop_geom)
    0 Z! v3 G0 p/ p* p
  7571.     (entmod elist)
    9 K; `& D7 n5 ?$ n
  7572.   )
    8 E  m2 L" J: k) H
  7573. # T! b( P/ G; G( u) }+ U, f# N; {
  7574.   (defun ddregion ()
    $ E0 `& Y7 q  p( l7 @+ J
  7575.     (if (not (new_dialog "ddregion" dcl_id)) (exit))7 G) p# q$ {) b  x0 ]2 j% r3 D
  7576.     ;; Set initial tile values
    * m7 y4 d8 V3 G3 Y
  7577.     (set_tile_props). u  H4 u& r8 H# t
  7578.     (set_tile_handle)$ a! P4 I2 j. O7 W  F2 j1 L: T
  7579.     ;; Define action for tiles( I: n' x6 u; [9 `9 Z2 Z
  7580.     (set_action_tiles)+ [+ c: B/ f! i1 {
  7581.     (setq dialog-state (start_dialog))
    ' Q0 Y9 b' ?& P0 ]. i; S0 n; V& o0 }
  7582.     (if (= dialog-state 0)
    5 r5 G4 A+ F6 W9 W7 f
  7583.       (reset)
    8 f! p6 U' R. e4 u
  7584.     )
    1 b: A; m8 V6 X  F& d
  7585.     (if (= dialog-state 1)2 T$ h! i/ v! Z( _
  7586.       (modify_region)! \* [+ g, T7 Y$ U* g
  7587.     )* i$ g  M; I: R1 g# x
  7588.   )+ H) k# ?3 v9 n  p; G
  7589.   ;;8 K4 ^! C% _8 f9 `
  7590.   ;; Modify 3DSOLID# O9 U7 n: z* u1 v# s
  7591.   ;;
    7 j2 D$ T0 o" d$ ~, i
  7592.   (defun modify_3dsolid ()2 s% T8 f9 e% U/ J; W% T& R
  7593.     (modify_prop_geom)
    4 N/ s! w( s. ~2 o' ^' P
  7594.     (entmod elist)
    ! r/ W* L/ L' |6 M. n) f
  7595.   )
    . P. D" m! q$ E4 m/ ?; A- \/ W

  7596. ( y! B& L$ {+ @( J8 S
  7597.   (defun dd3dsolid ()3 j' ?4 A) ]  `+ t5 t
  7598.     (if (not (new_dialog "dd3dsolid" dcl_id)) (exit))8 b8 g- o# Y1 i) A: q# j' M
  7599.     ;; Set initial tile values1 |. B3 }" w+ v, F1 }, k
  7600.     (set_tile_props)
    - g3 }8 M; S3 P
  7601.     (set_tile_handle)2 o5 _1 P2 l; P( }
  7602.     ;; Define action for tiles9 d( W0 A6 m4 k0 E/ ]
  7603.     (set_action_tiles). U$ V# |: ^& m, ~; l* x/ F
  7604.     (setq dialog-state (start_dialog))
    & v! r/ J; M* M6 ?1 p
  7605.     (if (= dialog-state 0)
      n  y! H5 ?+ Y3 e  x
  7606.       (reset)& }9 l3 ^8 u+ Z) D2 p
  7607.     ), m8 a* H1 `2 z( a
  7608.     (if (= dialog-state 1)7 d" K! A+ B" D& B, @% P& p/ s
  7609.       (modify_3dsolid)
    4 L9 ]4 D, m8 s+ {
  7610.     )
    * v, w# e9 f5 F+ M# I: I: Y* J
  7611.   )) J* }: F$ m& D+ H% v6 Q5 d" o
  7612.   ;;, J" M' S. |' I8 d! \. M
  7613.   ;; Modify AcDbHatch0 J5 D# h, T; m
  7614.   ;;
    3 W5 [( m2 m- ^9 H- ~  X
  7615.   (defun modify_hatch ()% V2 o9 r4 N5 k. f# i5 E! h0 W
  7616.     (modify_prop_geom)9 m; m8 P# Y1 c# N, S
  7617.     (entmod elist)
    1 Q# e) E1 p9 F
  7618.   )7 M$ m( a/ N& O7 k( `
  7619. % s( N. s8 d9 i) d. i0 y
  7620.   (defun ddnewhatch ()
    7 q8 X. v: z% u) \! L) n6 \3 u
  7621.     (if (equal hatch-elist nil)
    ! e0 T9 `1 [4 a
  7622.          (setq hatch-elist old-elist)1 ^  ~6 G& S/ H8 A  P
  7623.     )6 E: |% h6 C& y- |
  7624. 3 ^4 d/ k0 A. a- y& R3 I
  7625.     (if (not (new_dialog "ddnewhatch" dcl_id)) (exit))& B: M, \; I6 [1 u  w4 g

  7626. # D, e& s' H  [0 e
  7627.     ;; disable the thickness tile
    ; Q9 n% ^: L0 P7 f
  7628.     (mode_tile "eb_thickness" 1)
    2 _( N# U4 Z+ @0 Q
  7629.     (mode_tile "e_thickness" 1)8 _5 T; v8 z9 ]6 }9 [

  7630. , A# I& a- Y+ ]& g$ m
  7631.     (setq help_entry "modify_associative_hatch_dialog")6 T# A- s: k1 {) w
  7632.     (set_tile_props)
    % V/ L; t) h5 E- y* s3 m- K7 P4 @
  7633.     (set_tile_handle)$ k0 m, ~$ O" K% c6 m* m2 C6 \) [

  7634. " Z5 C& }6 m5 S1 N
  7635.     ;; Define action for tiles
    % X/ r3 d! i4 j/ Y: p% O
  7636.     (set_action_tiles)
    ( Z2 z% {+ b, P6 E# B
  7637.     (action_tile "b_hatch" "(done_dialog 2)")
    / {8 z, x/ Y( O+ A; g% V0 J
  7638.     (setq dialog-state (start_dialog))
    $ U( G2 Q& ]% i$ `* j' K
  7639.     (cond" X% P, x/ e7 N6 J+ c$ @
  7640.        (  (eq dialog-state 0)) d' G) @/ _0 a
  7641.           (setq old-elist hatch-elist)
    7 O& I7 T+ |! N2 b
  7642.           (setq hatch-elist nil)" G7 c9 w, ]. T: h1 X
  7643.           (if (= (checkforlockedlayer ename) nil)9 u( p5 y0 Q# W; ?  J/ X* x# g) U4 Y
  7644.              (reset)5 _, {: H2 ?1 N# J7 J8 {
  7645.              (progn         ;;; special handling for locked layer reset
    ( S# M. T3 C2 l* n6 M0 l
  7646.                 ;; unlock the layer9 x+ x- i& f% m! h- U% R+ T( y
  7647.                 (setq layername (cdr (assoc 8 (cdr (entget ename)))))
    7 i2 t1 a; ?% |7 Q7 q& D! ^5 m0 [7 d
  7648.                 (command "_.-LAYER" "_Unlock" layername "")
    4 `/ D% J+ v7 N( J, r, e+ x/ G) Y
  7649.                 ;; reset modifiction+ d( O: _, \0 z2 x
  7650.                 (reset)- p( Z( j! c2 T0 F# ~
  7651.                 ;; lock the layer again# p. w' u( z# m3 E4 V+ d
  7652.                 (command "_.-LAYER" "_Lock" layername "")
    % K% W* a0 c; I" m( ]9 M$ g1 Y' T. k
  7653.             )
    & y6 W+ x6 d3 `, p6 `( r$ K
  7654.           )$ \- [- h' l8 p& P8 g6 I& [
  7655.           nil       ;;; makes (ddnewhatch) return nil for Cancel% b( \" r% Y5 G
  7656.        )
    ' W7 F$ V( U7 Z& D
  7657.        (  (eq dialog-state 1)
    ( ~# y. U% l5 Q. y# i4 H
  7658.           (setq hatch-elist nil)& m0 j1 v, R( o5 U
  7659.           (modify_hatch)
    ; Q, W6 A& S4 N
  7660.           T         ;;; makes (ddnewhatch) return T for Ok' h1 s7 C! i+ }5 W8 |' s
  7661.        )6 I; H# H( Z. Q+ ^7 d
  7662.        (  (eq dialog-state 2)
    4 Z! \2 a; [$ d$ ]7 i
  7663. 6 V* J# C4 Y/ I. x' v
  7664.           (if (= (cdr (assoc 70 (tblsearch "LAYER" elayer)))! V) ^& y/ |! Y2 Y* j& c2 s: f
  7665.                  42 T; f+ ^9 Y0 K4 p7 r5 g! h
  7666.               )            
    0 [- W: m8 y, g! a) B! W
  7667.               ;;; new selected layer is on a locked layer+ |! z' O% n1 K. S
  7668.               ;;; we can simply modify the hatch properties
    , A( z+ g0 U1 {  V# `9 e) e; [9 h- m
  7669.               (modify_hatch)
    + C. s, ?1 N2 l* }/ z% i: W
  7670.               (progn) M9 e* i2 N( U8 i4 c# f
  7671.                     (if (= (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 (cdr elist))))))
    $ l# ~+ R% T9 B
  7672.                             4: f3 r$ \( z# c( @" r" d
  7673.                         )           
    % Q% F; p. E0 @- Z9 I9 c5 X; }) ^
  7674.                         ;;; We changed the layer previously and now the hatch lies on a locked layer.
    8 G7 {) [; e, H" j. F: ]
  7675.                         ;;; We have to unlock the layer forethat we can update the hatch properties.( C& p& Z! m+ `( U. b
  7676.                         ;;; If we don't do that (entmod) fails to update to the new layer.$ X& W$ f( l. q4 h1 w3 X: @/ B- V
  7677.                         (progn1 G& H4 S, Y2 P) n" g
  7678.                             (setq layername (cdr (assoc 8 (cdr elist))))6 \# ]! J& E% v
  7679.                             (command "_.-LAYER" "_Unlock" layername "")     ;;; unlock the layer
    & b; Z% J% N9 k& W9 H3 a
  7680.                             (modify_hatch)                                  ;;; update the properties
    ; t1 s$ r! b: ^+ Z+ q
  7681.                             (command "_.-LAYER" "_Lock" layername "")       ;;; lock the layer again! F6 s6 R8 k7 y' x; W9 g. W9 B
  7682.                         ). H8 O7 g! n$ h+ @7 e3 ~3 I9 X
  7683.                         ;;;  All other cases we simply update the properties
    : P. B$ P/ E* V* e
  7684.                         (modify_hatch)% }& P/ k# K6 g* V+ Z4 S' M6 V
  7685.                     ); W, z' J6 I- N
  7686.               )
    ' C. |" v; D+ j: B* n4 W
  7687.           )
    1 q/ d9 D- j: q# C
  7688.           (if (= (checkforlockedlayer ename) nil)
    0 b6 Z4 O& x' ^# y1 e
  7689.               (command "_hatchedit" ename)0 f: Q% m0 H* Q
  7690.               (alert ;|MSG111|;"The hatch object is on a locked layer.")
    7 f4 n4 {% T, l. @3 @( r4 k
  7691.           )
    + `7 h3 `& M! U: A5 D9 r
  7692.           (ddmodify ename)  H/ C( Z/ n3 f
  7693.        ), ^6 `& S# ^) u8 S5 D
  7694.     )' a5 o+ P- Y3 J) ]. Y+ W
  7695.   )
    : _; T) z& O3 [9 M- j* q
  7696.   ;;7 O+ y" a) a- P
  7697.   ;; Modify BODY* ^( y; G- |0 D: n7 o
  7698.   ;;* T% k! g5 ?+ X8 Y9 w) b' f" M! m" J% c' d
  7699.   (defun modify_body ()
    . y( B2 Q( W. N" u- ]
  7700.     (modify_prop_geom)
    ! d3 F. I4 @- G. q4 H" K- |3 ^
  7701.     (entmod elist)
    . i( ?3 K; D3 f: F6 r* n
  7702.   )! g5 L- f3 S5 B, h" N* m0 L
  7703. # ~2 O3 [; w, ~+ p. Y" e
  7704.   (defun ddbody ()4 E( l7 t0 o) t$ Q  l' w
  7705.     (if (not (new_dialog "ddbody" dcl_id)) (exit))2 t' _8 y# c  b% B  `" B) `
  7706.     ;; Set initial tile values, p" c4 M. l% r- _
  7707.     (set_tile_props)- I, X' X7 T9 M& ]
  7708.     (set_tile_handle)( z2 b0 ?+ z, ^7 V
  7709.     ;; Define action for tiles
    ' K+ S, N  a! Z- K0 V7 x
  7710.     (set_action_tiles)3 w8 V8 ^* Z0 }0 o9 m/ s$ m
  7711.     (setq dialog-state (start_dialog))
    ; R% E  v0 C! E
  7712.     (if (= dialog-state 0)0 i  A! i) ^0 P) Q) _
  7713.       (reset), J# B! l/ p" o: Z, X0 L1 l
  7714.     )- Y8 x0 N8 e' g) b3 {$ Z; O0 L
  7715.     (if (= dialog-state 1): c6 {' w0 [: A  P
  7716.       (modify_body). R/ j: |0 o1 M0 d
  7717.     ): Q  v% u2 e; B5 V' c
  7718.   )7 i3 |; F& U5 y
  7719.   ;;( U/ y% w& J6 R  ~
  7720.   ;; Modify CIRCLE* S) J8 i, h- j6 x5 D, S3 Y
  7721.   ;;
    % t" S' q9 V5 a! K5 H
  7722.   (defun modify_circle ()
    # l& n) l2 c. Z; r2 j3 p) {
  7723.     (modify_properties)
    & I) h0 _0 D+ t1 M& g7 z
  7724.     (setq pt1 (list x1 y1 z1))
    4 N. m+ ]9 g& g$ W
  7725.     (tempmod pt1 10 1)
      c, E. v" N/ Z. r# Q$ ^' \: y& F
  7726.     (tempmod radius 40 nil)7 r' o5 _- K1 T( |' Z; F2 K# l/ i9 k
  7727.     (entmod elist)
    ; u; B2 v9 T. D) R) I" Q
  7728.   )
    4 }* I6 ?) x4 r! M5 L4 I( [

  7729. 6 Y& b" m8 w; h  J
  7730.   (defun ddcircle ()
    ; A& g/ W$ l3 ]4 F2 I
  7731.     (if (not (new_dialog "ddcircle" dcl_id)) (exit)), m$ ~, H# H' q/ J
  7732.     ;; Set initial tile values
    4 B; L5 k- ^3 O
  7733.     (set_tile_props)
    : |1 ^9 Y* b0 A0 D) n
  7734.     (set_tile_handle)3 h% z7 x" v# a# _
  7735.     (set_tile_pt1 1)
    8 q* G3 G6 m4 @
  7736.     (set_tile_rad)
    ! a9 ]# w, _# {7 c# r) G
  7737.     (cir_calc)2 F& C) _+ C& a; d6 c+ _
  7738.     ;; Define action for tiles/ `# }8 e# n' O+ R* q3 G( [
  7739.     (set_action_tiles)7 K3 p& c% j% q( B% a8 Y
  7740.     (set_tile_pt1 1)
    5 z, t5 A- U& n3 A  t5 A' k7 J
  7741.     (setq dialog-state (start_dialog))8 Y- P7 n9 T6 Q% R
  7742.     (if (= dialog-state 0): P# f$ Q" H7 K" w& {% d# {) j# Q
  7743.       (reset)
    " R, N7 }* S* M# S% g9 g' m# W
  7744.     )1 k. Y* W" s0 ~$ Q6 {- B* W
  7745.     (if (= dialog-state 1)6 n) ~/ b9 w. u8 u. P
  7746.       (modify_circle)
    . l; ]9 \6 E2 ^) o) p, o/ u
  7747.     )# l! K  {1 l( T8 U0 X
  7748.     (if (= dialog-state 3)+ T4 F* H9 T* f  m4 n6 T$ G0 Q1 f
  7749.       (progn0 m. P; k' \' j$ q: P" C) X6 Y9 d% Z4 d. _
  7750.         (modify_circle)
    2 D) G  N5 ]- q- L& x( {
  7751.         (setq pt1 (getpoint (list x1 y1 z1)  "\nCenter point: ")): p8 u7 R/ @- y0 v5 x- v
  7752.         (ver_pt1 1): k0 R" d; C' W  H5 B6 s! \
  7753.         (ddcircle)
    - p4 N3 v$ @7 q8 f/ c; l+ _6 q
  7754.       )
    5 O9 N" F9 D. n# h9 K5 u
  7755.     )* [0 j1 n- }* g; h( b& V' l, i
  7756.   )5 R9 G! |, F9 J9 |. N
  7757.   ;;
    + s8 |% w; N' c2 |% Q3 i
  7758.   ;; Modify ARC1 v0 q2 `+ Q( l6 x
  7759.   ;;
    0 ~, m* z; _' w6 Y2 ?/ H2 D0 D! ]  y
  7760.   (defun modify_arc ()
    % `) v5 [% m. ]: q" Y: m
  7761.     (modify_properties)
    ; o4 r' m  l5 k, r, g) @
  7762.     (setq pt1 (list x1 y1 z1))
    ) g( w9 Q; `8 r" \
  7763.     (tempmod pt1 10 1)
    % t4 a* L2 M7 z6 B
  7764.     (tempmod radius 40 nil)7 r$ n# L4 [$ V. C; o) W( C& ^
  7765.     (tempmod st_ang 50 nil)' X& f4 q; `9 d
  7766.     (tempmod end_ang 51 nil)
    + \6 ~) ]4 R: |/ w9 R/ r; P. E
  7767.     (entmod elist)
    ( u) L5 E# C/ F( F
  7768.   )
    9 j* C; U3 o, x3 ~& e. V/ i
  7769.   (defun ddarc ()/ m) S! v) c: b) d3 t# U
  7770.     (if (not (new_dialog "ddarc" dcl_id)) (exit))3 C) j) o6 ~) n& G, C% Q
  7771.     ;; Set initial tile values! ]6 E% D2 k5 P5 l- M4 n
  7772.     (set_tile_props)
    , I2 P/ g! h; z" K6 w  [! \
  7773.     (set_tile_handle)6 X( G* v/ e* J3 s8 j3 a6 g
  7774.     (set_tile_pt1 1)9 _9 j% |& M/ C7 M! W8 \
  7775.     (set_tile_rad)6 ^) A7 r. n- r" G9 c" D8 g
  7776.     (set_tile_stang)  I/ A' `. G, F) g/ R
  7777.     (set_tile_endang)+ J3 ^* n0 }# h4 @, E' O
  7778.     (arc_calc); O! E, N7 F  T
  7779.     ;; Define action for tiles
    , R+ A) `" M: h) F: Q. T) s* @( E
  7780.     (set_action_tiles)9 f  `% H" I7 G# ^7 N! n
  7781.     (setq dialog-state (start_dialog))
    9 v0 W) M& V4 M
  7782.     (if (= dialog-state 0)
    4 Q$ r( d$ l3 {: h2 N4 P& q
  7783.       (reset)
      ?% H7 T( y' Q
  7784.     ). Y% Q6 f6 a( z( ?* [
  7785.     (if (= dialog-state 1)/ z, F) `2 R! `4 q1 k7 q+ o5 Z2 O
  7786.       (modify_arc)
    4 y% U8 |( E0 {6 X9 c- A% F; C2 A
  7787.     )
    0 z& [& _+ @% u  c! q
  7788.     (if (= dialog-state 3)
    , W2 J8 b1 K  N, o9 N; z  L
  7789.       (progn4 u8 d! o5 i4 M; A
  7790.         (modify_arc)
    ) n3 K3 u. D% `
  7791.         (setq pt1 (getpoint (list x1 y1 z1) "\nCenter point: "))+ H# F: K; N/ w& w5 V* k5 Z
  7792.         (ver_pt1 1)& F8 ]! ?4 u4 F2 I8 l! o
  7793.         (ddarc)
    # [3 g3 |' Q# @) P5 F, s8 U
  7794.       )
    " F4 l$ D" [3 s
  7795.     )
    / ]! }$ M* _" {0 n% H
  7796.   )- z$ f0 \: \& S/ ~" I) m
  7797.   ;;  g7 L! q9 g& O1 D, h
  7798.   ;; Modify SOLID or TRACE7 t* P- u; W+ _# C4 A, ^
  7799.   ;; Note the Z value of the object is determined by the Z value of the fourth
    8 w$ F( {; i8 e
  7800.   ;; point - code 13.  Changing the point values of a solid or trace from a UCS) m2 B) t$ N% n& m# V
  7801.   ;; that is nonplanar to the UCS the object was created may confuse the user.
    ( m/ z* E5 A" s: o
  7802.   (defun modify_solid ()
    - |8 Y9 }% K5 P
  7803.     (modify_properties)' ~* y% q1 a  L4 O9 T" u4 p* Q7 I
  7804.     (setq pt1 (list x1 y1 z4)), s* b; r8 `4 {9 v" V2 R9 Z
  7805.     (setq pt2 (list x2 y2 z4))  i  B& }# O& @* C/ V+ [) h' @& h/ h
  7806.     (setq pt3 (list x3 y3 z4))
    ( B2 ~1 H) S% _7 q* S
  7807.     (setq pt4 (list x4 y4 z4))& I  L% F+ @4 \6 A; {
  7808.     (tempmod pt1 10 1)
    6 B7 m6 y) `* N: _/ c6 x
  7809.     (tempmod pt2 11 1)% f4 h" n# [+ A+ r
  7810.     (tempmod pt3 12 1)
    , s: o3 F% ]% L
  7811.     (tempmod pt4 13 1)  [7 T9 g" |9 g* W1 Y6 r+ c5 \% K; I+ t
  7812.     (entmod elist)1 Z) C$ g& ^# V: j! ?
  7813.   )
    - C0 H6 |9 `) _. O" T, g6 s  k* ~* B. J
  7814. * e9 k& s1 N% v- E% {6 t
  7815.   (defun ddsolid ()
    8 K0 f1 e* E, u
  7816.     (if (= etype "SOLID")5 [! h% F- F8 z& j
  7817.         (if (not (new_dialog "ddsolid" dcl_id)) (exit))
    ' |+ p* ]! m& c; c" e. A# |
  7818.         (if (not (new_dialog "ddtrace" dcl_id)) (exit))! u! R# J( {4 p# u+ z  K- `
  7819.     )4 K. P. g) N7 J$ f3 U2 \
  7820.     ;; Set initial tile values
    , Q2 R* j* {0 e; `' l1 _
  7821.     (set_tile_props)
    2 M/ d3 f* O' q( c7 {# A
  7822.     (set_tile_handle)
      m* s! [, u% L* ^. D; M
  7823.     (set_tile_pt1 1)* ^8 T* N5 _( b" v8 x
  7824.     (set_tile_pt2 1)
    0 J" k7 Y. o" ]4 u
  7825.     (set_tile_pt3 1)5 h# b- H$ [$ v2 o. C6 X
  7826.     (set_tile_pt4 1)
    0 F% _# a: C/ W+ z) C  s. X
  7827.     ;; Define action for tiles
    1 X  |4 T- c/ [$ H6 G
  7828.     (set_action_tiles)
    + b2 s) q% l1 ?9 C7 q& q$ H9 v
  7829.     (setq dialog-state (start_dialog))
    9 j( p7 M. y! L3 A& R: F
  7830.     (if (= dialog-state 0)
    0 g) p- Y! {+ {) M( e# S* x. ^
  7831.       (reset)
    4 u* _* @# \; {
  7832.     )
    * s! y% {4 m5 O% i4 K# ]& J
  7833.     (if (= dialog-state 1)8 x6 {% A9 ]2 I) h/ t
  7834.       (modify_solid)5 l3 v6 V" ~) _$ X3 F- ?
  7835.     )
    * Q# ~  x3 T, L' |4 n
  7836.     (if (= dialog-state 3)
    ' [5 K, ]& i6 g" K# G
  7837.       (progn
    1 y$ Z1 n1 s) }3 N* X& ?
  7838.         (modify_solid)
    / l4 v! B  g( @1 R" x* o) X2 X0 y
  7839.         (setq pt1 (getpoint (list x1 y1 z1) "\nFirst point: "))- V% \' u% v' M4 C& Q
  7840.         (ver_pt1 1)
    / z8 N4 z* e( y
  7841.         (ddsolid)
    $ d- T" v/ S3 o! F9 Q! L
  7842.       )6 z! U) E) B! G+ X9 b
  7843.     )5 S2 R7 {3 u) O7 D; |/ j& n
  7844.     (if (= dialog-state 4)
    4 B( a9 x: w& o, m: ?4 B% R
  7845.       (progn
    9 m% Y, u) F8 J- X) ^7 S5 e
  7846.         (modify_solid)3 t* f0 R; }6 j6 r( ?
  7847.         (entmod elist)5 \' u+ v+ v. O6 C
  7848.         (setq pt2 (getpoint (list x2 y2 z2) "\nSecond point: "))
    ; [- m2 I$ }7 `. S0 v* ?  j
  7849.         (ver_pt2 1)
    4 \0 _5 }, Z8 g& k$ Y
  7850.         (ddsolid)5 X1 M2 ]; P/ w
  7851.       )
    - f5 h6 @9 H3 h: J, b* ]* x$ L
  7852.     ); r: ?' r, B( e
  7853.     (if (= dialog-state 5)7 H: [, b9 k1 S1 X5 ^3 t
  7854.       (progn" G/ ~% `: g+ E
  7855.         (modify_solid)4 d9 y1 L8 ?2 g' j
  7856.         (setq pt3 (getpoint (list x3 y3 z3) "\nThird point: "))* a1 f5 _+ q: P; |* K1 E
  7857.         (ver_pt3 1)
    3 e) N; T7 }& `' n- q6 U' Z0 W- {% X
  7858.         (ddsolid)
    0 D9 m5 ?! z+ W7 t5 G
  7859.       )
    $ V/ z2 e% f2 U" M
  7860.     )4 s( B# V! r+ a6 w; v2 }
  7861.     (if (= dialog-state 6)
      F# {0 s7 r# h3 g2 I" c
  7862.       (progn9 D" O& N' b" A2 a: H
  7863.         (modify_solid)
    : J5 {) a# Q) u! u4 j
  7864.         (setq pt4 (getpoint (list x4 y4 z4) "\nFourth point: "))9 R  B3 p/ L) @2 C! \3 ]: Z
  7865.         (ver_pt4 1); d; l2 s. m4 B- R/ W# ]
  7866.         (ddsolid)+ d; r+ F* k6 D$ W( I* m2 X
  7867.       )" g$ V3 Q/ ~9 N
  7868.     )9 ]2 a; J6 K7 K) z
  7869.   )# H: O$ ]3 A# |: W- C3 u( C
  7870.   ;;, M7 {2 H9 p. j/ `8 B* Z
  7871.   ;; Modify 3DFACE& n4 [( h( {- A/ u3 a0 }8 Z
  7872.   ;;
      U/ H* ]; F2 Y3 d9 Z7 A
  7873.   ;; Check visibility of edges
    * B+ H* Z, ^3 q
  7874.   ;;
    ! U& {! c$ K) ~5 [0 w
  7875.   (defun edgetest (/ bit1 bit2 bit3 bit4)
    ( r- _& U: C/ M% h
  7876.     (if (= edge1 "1") (setq bit1 0) (setq bit1 1))
    - a( p$ Z2 `: p$ k, j4 z0 E9 \
  7877.     (if (= edge2 "1") (setq bit2 0) (setq bit2 2))
    & b, j# f% j7 m5 l' O
  7878.     (if (= edge3 "1") (setq bit3 0) (setq bit3 4))2 }9 v4 D8 X  [) r- q
  7879.     (if (= edge4 "1") (setq bit4 0) (setq bit4 8))' V- K0 B) Q( \' T  M* u
  7880.     (+ bit1 bit2 bit3 bit4)
    8 _  v: K1 W  E0 y& @* I& r$ K
  7881.   )
    3 e: B6 x8 ~* n' p3 c# @' R0 M

  7882. ) ]0 i. V3 I9 v; ~7 E: `/ \7 N
  7883.   (defun modify_3dface ()  A; v: \% x6 |- ~
  7884.     (modify_properties)
    0 J: ^  `0 F) p) U9 x" d4 k
  7885.     (setq pt1 (list x1 y1 z1))! ^% ^4 f; t9 E2 p8 c! H
  7886.     (setq pt2 (list x2 y2 z2))7 H% R4 `: }7 _
  7887.     (setq pt3 (list x3 y3 z3)): q, d8 f/ ~' s) N
  7888.     (setq pt4 (list x4 y4 z4))& M  R: z9 [. ^* g# e0 b8 C, l2 H
  7889.     (tempmod pt1 10 0)$ \4 G7 \/ I% t. {+ L
  7890.     (tempmod pt2 11 0)
    + y6 K. }+ v) _3 S- p
  7891.     (tempmod pt3 12 0)3 \8 V6 r+ a% l$ a  @( h4 T+ H
  7892.     (tempmod pt4 13 0)1 X; K2 O* d! W, @; U
  7893.     (tempmod (edgetest) 70 nil)
    " {' ]: \" L$ z; K9 n# U
  7894.     (entmod elist)6 p6 ]0 x: a  V; L. l+ y
  7895.   ). H& \; A; u$ `5 U% H, X

  7896. 4 o1 Y  u5 \3 O$ ?) l4 M0 P
  7897.   (defun dd3dface ()
    / X9 ?* ^, c, J0 q
  7898.     (if (not (new_dialog "dd3dface" dcl_id)) (exit))
    * b) |: @  }) }1 H/ `: L
  7899.     (set_tile_props)
    / {. g1 G1 {* f
  7900.     (set_tile_handle)
    5 n! B4 c6 {5 q$ F1 d3 E9 K# L
  7901.     (set_tile_pt1 0)
    ' x( p5 T4 w" O2 f& W
  7902.     (set_tile_pt2 0)  w! ]' T; Y% r9 K: c8 i# n2 E
  7903.     (set_tile_pt3 0)
    / D* s! w( `+ @; \& O" H+ G
  7904.     (set_tile_pt4 0)
    . @* L3 @% h$ q5 {, h( D# Y! e2 V
  7905.     (set_tile_edges)( L, t% s, @; G" `
  7906.     ;; Define action for tiles4 r) s4 H5 Y4 l+ }+ N: x
  7907.     (set_action_tiles)
    5 S$ a6 `4 Q5 v/ T4 M( r1 V8 k+ y# x
  7908.     (setq dialog-state (start_dialog))
    ' T- [$ N6 p( U# R  d* j' \9 H! o4 Y
  7909.     (if (= dialog-state 0)
    9 D* ~" j( E% C+ z
  7910.       (reset)
    . V0 D$ J) M5 P, `, a
  7911.     )
    . [; i4 D" s1 e1 |; d* N6 J' O
  7912.     (if (= dialog-state 1)& s' X' R% k: C* Q; ]# x! }
  7913.       (modify_3dface)
    & E: ^+ I6 `- ^) ^0 D
  7914.     )4 g  J4 W! z% M# P, g! u* b' O
  7915.     (if (= dialog-state 3)
    : u, ]1 ~9 L. T7 n
  7916.       (progn
    3 y6 D1 d1 A0 v; V, a. E
  7917.         (modify_3dface)1 r) q6 t+ q* H
  7918.         (setq pt1 (getpoint (list x1 y1 z1) "\nFirst pt: "))
    , d7 p3 y# o" W. T' w% f, ?
  7919.         (ver_pt1 0)
    9 g# C" i6 J3 ^5 k6 W" A
  7920.         (dd3dface)
    - T$ D, O  e, t1 a7 e9 ?
  7921.       )' j# a- ~4 _; u
  7922.     )
    , R" M% _; _: W* T4 n0 ^0 N6 u' l
  7923.     (if (= dialog-state 4)2 d! X, q* p1 e9 c) l" q9 U
  7924.       (progn
    5 s" P/ d* j; I5 a: Z9 d6 p$ S
  7925.         (modify_3dface)1 u: {$ z# J3 n2 r
  7926.         (setq pt2 (getpoint (list x2 y2 z2) "\nSecond point: "))( r% m6 n- F/ Z& E
  7927.         (ver_pt2 0)
    3 O7 |' T! V' r% @; [( s9 K
  7928.         (dd3dface). I0 T7 k3 r; @) d8 V3 _" q
  7929.       )6 H' R6 J2 T) V" f* Y. J; ^+ P
  7930.     )
    ( S% J6 T  @# s+ Q3 V
  7931.     (if (= dialog-state 5). }# {* T6 N" C' T
  7932.       (progn; v$ g( O. q6 v
  7933.         (modify_3dface)
    ! ?  k0 c8 l- U
  7934.         (setq pt3 (getpoint (list x3 y3 z3) "\nThird point: "))
    % V/ R2 m4 W) G- h8 I
  7935.         (ver_pt3 0)
    1 S6 `! e$ U1 Z7 R
  7936.         (dd3dface)
    , c+ x6 d( O4 e7 f5 M9 ?: v
  7937.       )
    : w( O$ K& I" g$ T! n5 V/ ^
  7938.     ): T( m% Z; u! [. A* _, _) M* l& U
  7939.     (if (= dialog-state 6)* |0 D# t1 o  e. P: O
  7940.       (progn% g+ [! g  k$ Q/ w/ }; c
  7941.         (modify_3dface)! v" a7 L3 i% l9 t9 y* i
  7942.         (setq pt4 (getpoint (list x4 y4 z4) "\nFourth point: "))0 a4 N' H) ?' s. g) p
  7943.         (ver_pt4 0)
    & `9 z! y$ i; F/ r3 D' [  Y
  7944.         (dd3dface)
    # L4 l) ~' Z4 L; u( v, N
  7945.       )8 `3 M$ G" e8 f# ~6 N  D' {) Y
  7946.     )8 |' ]6 l% A0 ?1 ^5 C
  7947.   )# q! h. h# @4 O2 c# R: V# i; @' c/ D
  7948. + \! v8 G1 _2 _3 L
  7949.   ;;
    # C, m( r1 `& O) u( X) M+ a
  7950.   ;; Image functions/ @, }) I9 r0 K. L" P3 E3 A6 k
  7951.   ;;
    * D3 }. X, H; B
  7952.   (defun image_scale (/ upixel en n userscale temp)& K5 b- l2 V' z; N8 [2 I* v
  7953.     ;; Calculate the size of an image pixel in AutoCAD units6 E7 k# ?/ [  h6 F7 C& P2 `
  7954.     (setq upixel (distance '(0 0 0) (cdr (assoc 11 elist))))5 H8 @% m5 p5 Q, U: O
  7955. 8 k, Y8 R8 [) `9 G3 U* I' Y
  7956.     ;; Retrieve the user scale
    1 m% v: S6 e7 i% R, P
  7957.     (setq en (dictsearch (namedobjdict) "ACAD_IMAGE_VARS")); x! b9 S5 ]" Z1 U  Z: T* x0 T+ g$ h

  7958. ( _: }1 c5 [; n( Q8 s+ `
  7959.     ;; Next, extract the image units and pixel resolution" ^$ [9 R1 G7 U9 e) ^9 d+ K. k
  7960.     (if (or (= 0 (cdr (assoc 281 image:olist))) (= 0 (cdr (assoc 72 en))))8 J  Q* `/ e5 w$ u. L* O" |1 s
  7961.       (setq image:scale (* (cadr (assoc 13 elist)) upixel))
    8 x! Z; r  D7 T6 E3 {8 S
  7962.       (progn
    , [. |4 h: W. o; d8 y
  7963.         ;; Convert the user scale to the proper word
    $ d( L" [* i4 K' t  b5 V/ f9 |: N
  7964.         (setq n (cdr (assoc 72 en)))
    / e) K! s5 z" s/ T0 J' P( k# [& i( C
  7965.         (setq temp (getvar "LUNITS"))
    ' L; v( @/ m# t% ?1 V
  7966.         (if (and (/= n 0) (or (= temp 3) (= temp 4))) (setq n 5))/ K8 L: a; P* l
  7967.         (if (= n 1) (setq userscale "Millimeter"))
    # z7 w# ?7 p# b- N+ X
  7968.         (if (= n 2) (setq userscale "Centimeter"))  E6 h' |" d. _; K
  7969.         (if (= n 3) (setq userscale "Meter"))% ^8 V& @9 F. }4 p7 P4 B, n
  7970.         (if (= n 4) (setq userscale "Kilometer"))! z$ P' u7 C: }; q* X
  7971.         (if (= n 5) (setq userscale "Inch"))- C" W  u3 V. S/ N9 j
  7972.         (if (= n 6) (setq userscale "Foot"))
    6 N* b1 p0 J/ ?4 ~
  7973.         (if (= n 7) (setq userscale "Yard"))
    2 j4 L+ z7 [3 v0 n* E' `
  7974.         (if (= n 8) (setq userscale "Mile"))
    # F2 z! l9 g$ Z# M. c0 S& L
  7975.         (setq image:scale (/ upixel (cvunit 1 "Millimeter" userscale) (cadr (assoc 11 image:olist))))
    ) K/ d- \5 T% s7 [# o2 i
  7976.       )
    * E( V' X' O4 U; H6 A- c8 W
  7977.     )% w$ R8 h/ r+ u: r% B- c7 [
  7978.   )/ c- c- T# l* q& M) {; i
  7979. 2 |: G. F3 p1 t* j: w
  7980.   ;;1 H* `3 }8 I( U0 C: _
  7981.   ;; Scale factors for block insertions
    ! X4 x# K: f4 z; Z0 ?
  7982.   ;;! F$ m8 Y4 O0 B+ U! i* d$ d7 Y
  7983.   (defun image_set_tile_scale (/ temp)
    $ e% V2 k) D/ ]( X9 n
  7984.     (setq temp (getvar "LUNITS"))
    ( v: d" W- S# I# A* V
  7985.     (setvar "LUNITS" 2)& L- W- ~/ V  U+ \7 z9 h
  7986.     (set_tile "xscale" (ai_rtos (* image:scale image:mult)))# Q6 M4 j  b' H4 ?8 O) \3 r* l6 y
  7987.     (set_tile "wid" (ai_rtos (* image:width image:mult)))
    ' I+ e" C( W+ Z+ Q+ V3 [  x
  7988.     (set_tile "hght" (ai_rtos (* image:height image:mult)))7 g- d4 s5 f8 I1 t  B; l/ p' B  w
  7989.     (setvar "LUNITS" temp)9 {* C) L5 h0 i! P, n
  7990.   )
    , D- V8 o, @7 W5 Z

  7991. 6 P* J# Q% q# ^% U8 A
  7992.   ;;/ V) q" E% g4 L- }& H1 j
  7993.   ;; Set the scale, width and height values appropriately.
    ( L, i- b: E; k, |: b. [2 f
  7994.   ;;
    & f0 \6 R# u, A. P/ ?  R
  7995.   (defun image_update (field value / orig_value new_value mult)) b2 b/ V1 x* b( h& ]
  7996.     (if (= field "xscale")
    ! R# N$ O3 t  w9 v! g
  7997.         (setq orig_value image:scale)4 P) H! f* @4 Y( M/ `
  7998.     )
    ! X# S5 p5 h( q" E4 k
  7999.     (if (= field "wid")6 x# r% S8 l% M9 O
  8000.         (setq orig_value image:width)
    : W% v' ^0 E* O) Y% a/ I. y
  8001.     )0 f( ^4 ~4 v1 p& V; b
  8002.     (if (= field "hght")
    + x0 ~# t$ \4 H/ `
  8003.         (setq orig_value image:height)4 @8 r7 d) i; Y' m9 n
  8004.     )
      [+ m9 D8 Q8 Y! _
  8005.     (setq new_value (verify_d field value (* image:mult orig_value)))
    # ]+ A0 _3 D' \7 T8 _8 B+ b
  8006.     (if (/= new_value old_value), q. q# n2 n4 d
  8007.       ;; Make sure the user has entered a sufficiently large value
    ; O9 F) S/ X) k! K! ?$ b
  8008.       (if new_value6 o" X" k* F$ V  N
  8009.         (progn
    ; p8 m; ^- |+ u- o3 q( I; l
  8010.           (if (< new_value 1e-8)3 A. g% d& F1 ~5 i$ C. L
  8011.             (setq mult image:mult)( V5 R1 Y( x' m  ]  `8 C2 G6 _, x
  8012.             (setq mult (/ new_value orig_value))  v+ Y, s7 \, V/ u
  8013.           )8 C% \  b- g9 O' N8 g5 z
  8014.           (setq image:mult mult)0 ~" f6 d- _$ N5 f0 p7 W0 ?$ s" D
  8015.           (image_set_tile_scale)
    8 B; T2 b) X( w
  8016.         )+ C9 G" _& m: d4 k: n
  8017.       )% X% R% Z" ?' }+ e( w4 J
  8018.     ): w2 g: [  [  m' p7 D7 g
  8019.   )" ?; r. f- m+ e% j8 Q

  8020. ) P4 Q! q) U) j* Q) _2 c3 _* b
  8021.   (defun image_disp_opt (bit)
    1 `  a7 P" a8 s
  8022.     (setq image:options (Boole 6 image:options bit))
    0 r& e9 T- U4 b+ C+ ~7 C
  8023.   )" S7 \' y/ ?5 C! g1 h; w
  8024. 7 y, b2 a6 `/ R$ J
  8025.   (defun image_modify ()
    " E; ^: r0 U' P+ f2 o  x
  8026.     (modify_properties)- b' }3 \, o: o: U  C' |) x
  8027.     (setq pt1 (list x1 y1 z1))
    5 p) k) Z! o1 }( G; _. L
  8028.     (tempmod pt1 10 0), n+ B. u$ B9 T: a% g# U3 k
  8029.     (entmod elist)+ N: C8 L* W' q/ h2 Y- f. D" F
  8030.   )
    ( s( y: g$ J. z
  8031. + A& F6 U8 r+ I7 W7 |
  8032.   (defun image_clean_variables ()
    7 C5 L5 |/ Y. f3 A& K7 b
  8033.     ;; Clean up global variables used here
    " |) y  n( B7 ?1 ^; [
  8034.     (setq image:scale nil)" |' @7 T; O, d# @( Q/ g
  8035.     (setq image:angle nil)
    7 D( @8 e6 A" u! L3 o# x: E( v. q0 n" t
  8036.     (setq image:width nil)' v. m/ }" k7 r# N0 V
  8037.     (setq image:height nil)# ^: V/ ?4 c0 ~  _
  8038.     (setq image:options nil)' {: N% z) ?3 D+ \9 h
  8039.     (setq image:oname nil)
    ' b, w- N8 J' J( b8 V, l& L
  8040.     (setq image:olist nil)
    ; c- s8 u' K6 L; F6 J1 G0 p
  8041.     (setq image:mult nil)' G. q0 }5 Y* f! T. F* U& Q  U
  8042.     (setq st_ang nil)
    - |3 V: q4 Y; g, ~& l  |' \
  8043.   )
    $ S% ]7 x% ~5 G! {; N- z

  8044. - i7 o% v+ D" [5 `$ \
  8045.   (defun image_scale_vector (v1 value)
    $ `8 a% l4 v1 r, X  I) n, U
  8046.     (list (* (car v1) value) (* (cadr v1) value) (* (last v1) value))3 v) z# W. g& F( l
  8047.   )
    ( P$ Y4 T4 T' M$ P- y
  8048. / Z6 @( G  R& b' `4 h: E
  8049.   (defun image_cross_product (v1 v2 / vx vy vz)
    # K' [; O3 K% R/ ^. g& D
  8050.     (setq vx (- (* (cadr v1) (last v2)) (* (cadr v2) (last v1)))). I6 ]: Q# e" Y
  8051.     (setq vy (- (* (car v2) (last v1)) (* (car v1) (last v2))))$ M; {% Q# G2 X/ R) [5 Y) ?
  8052.     (setq vz (- (* (car v1) (cadr v2)) (* (car v2) (cadr v1))))' n/ g' i9 p: a0 {1 Q4 H
  8053.     (list vx vy vz)
    ! D1 m' n% i5 d) i  Y- Y. Y! L
  8054.   )0 g/ x4 s; y- O8 N

  8055. ! [( ~( E2 y+ \9 R2 @" Y
  8056.   (defun image_dot_product (v1 v2)
    ( x& B. g; }$ b: G# ]$ K
  8057.     (+ (* (car v1) (car v2)) (* (cadr v1) (cadr v2)) (* (last v1) (last v2)))
    . o" d$ K7 n% w2 g& R
  8058.   )
    : v& u3 @8 i2 _0 e$ k0 @' R
  8059. - e, W. ]4 ~% ?- }5 E
  8060.   (defun image_add_vector (v1 v2)
    $ u3 V( H# d+ F+ s" p
  8061.     (list (+ (car v1) (car v2)) (+ (cadr v1) (cadr v2)) (+ (last v1) (last v2)))
    3 \5 D: c8 \& b( v6 p& J" z
  8062.   )
    7 c# @! R& `) m) C
  8063. $ A* Y6 r; r% D% Y. ^
  8064.   (defun image_subtract_vector (v1 v2)
    . V' ^; O% T  g5 s9 d, f) B5 x
  8065.     (list (- (car v1) (car v2)) (- (cadr v1) (cadr v2)) (- (last v1) (last v2)))
      I7 I7 P  g& W2 Z9 T. U' B
  8066.   )1 W% P( o- }2 O/ \
  8067. ; y2 o4 g4 q7 a$ E" p. p
  8068.   (defun image_normalize_vector (v1)1 K1 @3 d5 H3 v' `
  8069.     (image_scale_vector v1 (/ 1. (sqrt (image_dot_product v1 v1))))# N1 U, t! W- L9 z. u
  8070.   )
    % Y, H0 d, w8 a: b8 R) `2 r

  8071. / {; X2 M) v$ J& T4 ~% [
  8072.   (defun image_rotate_vector (vector angle axis / along_axis axis_x_in_rot_plane axis_y_in_rot_plane in_rot_plane)' I3 I7 F9 \' @  I4 U
  8073.     ;; Normalize the axis
    # k/ b0 {! c: p- A, o7 k
  8074.     (setq axis (image_normalize_vector axis))
    - V3 B- n2 E( [
  8075.     (setq along_axis (image_scale_vector axis (image_dot_product vector axis)))* u- x$ n( `) h
  8076.     (setq axis_x_in_rot_plane (image_subtract_vector vector along_axis))3 d" F$ U" d  R
  8077.     (setq axis_y_in_rot_plane (image_cross_product axis axis_x_in_rot_plane))8 J# V) @" T1 s# w0 G
  8078.     (setq in_rot_plane
    . j6 D! |" W. s
  8079.       (image_add_vector& l4 [" w! L& q" e  P
  8080.         (image_scale_vector axis_x_in_rot_plane (cos angle))% c" |% T9 B4 J9 z$ c9 g
  8081.         (image_scale_vector axis_y_in_rot_plane (sin angle))+ s& c4 x4 D( `  d2 X% v( b4 m
  8082.       )" T1 G4 ^" ]  Z, h& i, I) x, W8 k
  8083.     )
    + O( {+ _  x9 F. h: A: z0 C' j% D" [- d
  8084.     (image_add_vector along_axis in_rot_plane)* U8 h& t2 b1 l) k% M* P6 X
  8085.   )* Y) b7 l- {* F8 H* r3 y

  8086. 0 \1 w' A+ W: E+ C* l
  8087.   ;;! o3 J3 }  K5 H" M& Z
  8088.   ;; Calculate current rotation angle if appropriate.
    , ~# t! u) w2 _* o3 \9 J3 j
  8089.   ;; If not, grey out the rotation field.
    ) n5 P* |! H4 I' ?6 O& v
  8090.   ;;, a) L2 l' J  x# o6 k9 T- y3 z. [1 m
  8091.   (defun image_rotation (/ normal rlength zlength sqrt_tolerance)
    0 |/ t- j" @( \0 ~7 k
  8092.     ;; Determine if image normal is codirectional with
    8 [  V- {3 Y; P
  8093.     ;; the current UCS Z-vector.* W7 r9 P. y% S% }; w; |
  8094.     ;;
    + Z% L- F2 F) J5 x/ e. p7 k* C
  8095.     (setq normal (trans (image_normalize_vector (image_cross_product (cdr (assoc 11 elist)) (cdr (assoc 12 elist)))) 0 1 1))
    " s8 y4 C* c5 g. j* l/ a. V6 v8 n! x
  8096.     (setq rlength (+ (* (car normal) (car normal)) (* (cadr normal) (cadr normal))))" R$ L  `; Q* v5 x" M: @
  8097.     (setq zlength (* (last normal) (last normal)))
    ' ~: M) f1 Y2 [: r2 u( k( l1 Y
  8098.     ;; Note that the value .0001 in the radians is approximately 0.0057 degrees.
    # \0 f; ^# c, z4 g" J8 M
  8099.     ;;
    " G3 m( T' V2 f) P
  8100.     ;;                cos(.0001)^2& d4 Q- K/ @' p
  8101.     ;;   Tolerance = --------------
    9 }/ \2 I; a4 i' h9 W0 V  L5 v
  8102.     ;;                sin(.0001)^2
    ) i; L5 g6 a" v7 {1 w/ f7 v
  8103.     ;;
    & V5 P' N2 z  u8 `( |0 ]( y
  8104.     (setq sqrt_tolerance (/ (cos 0.0001) (sin 0.0001)))
    9 h, F& t* b+ G6 G( k# w
  8105.     (if (and (< (* rlength sqrt_tolerance sqrt_tolerance) zlength) (> (last normal) 0)); S* \8 L9 [. p# b* o0 W
  8106.       (setq image:angle (angle '(0 0 0) (trans (cdr (assoc 11 elist)) 0 1 1)))! b- N/ E& W; E% g
  8107.       (progn
    ! D6 S$ f) Z: H& P( \' u
  8108.         (mode_tile "st_ang" 1)
    8 d- T) g/ H: s6 v% l7 P, h
  8109.         (setq image:angle 0). t" m6 Y  Q4 ~" L
  8110.       )
    " T8 D$ b/ j  n$ c
  8111.     )
      K+ D) s+ o; B3 i4 U1 _  {: M
  8112.   )  ]# m( t# t+ }8 q3 z0 z3 _1 O

  8113. ; D8 E' |- U; X8 _/ R7 o
  8114.   ;;: J0 ?1 ?+ o( w. O9 B
  8115.   ;; Modify Image! ^4 q: e+ u6 j7 v" A: v
  8116.   ;;
    ) w! m$ o; v/ h4 c' O
  8117.   (defun modify_image (/ u_vector v_vector z_vector)
    , y5 {& j1 |  [( X# O
  8118.     (modify_properties)8 s& e: m% T! I- j, {
  8119.     (setq pt1 (list x1 y1 z1))
    6 [  M$ _1 Q$ f' o
  8120.     (tempmod pt1 10 0)) U+ N- t9 O% j& m+ A
  8121.     ;; Make display option changes to image! e, Y9 D1 @8 ?
  8122.     (emod image:options 70)
    2 k' T7 t- t4 H8 F. y% a8 B
  8123.     ;; Get the u and v vectors
    " w0 I5 P& O0 m
  8124.     (setq u_vector (cdr (assoc 11 elist)))
    - S* Y+ k5 b/ ~3 r' k+ ?8 S- \
  8125.     (setq v_vector (cdr (assoc 12 elist)))  b- E, h* g: w$ ~- E

  8126. & k  I# C! j" h/ s- g! X
  8127.     ;; Make scale changes to the vectors5 N5 u& O$ q( q. F9 C
  8128.     (if (/= image:mult 1)
    # c% ]3 f! v# N4 \
  8129.       (progn% o/ b1 F0 R8 r" p. h) a/ s
  8130.         (setq u_vector (image_scale_vector u_vector image:mult))( v7 O- J1 t; K
  8131.         (setq v_vector (image_scale_vector v_vector image:mult))
    7 K0 o- a" @! g) q1 d& @
  8132.       )) Q0 u7 I' J8 M, z" B7 j- Y
  8133.     )# x+ P" A; J* ?$ D3 ]
  8134.     ;; Rotate the vectors& D/ Y8 o  L7 P. Y
  8135.     (setq st_ang (- st_ang image:angle))
    ! A' M5 E' C5 j/ J* X* f9 `
  8136.     (if (/= st_ang 0)$ T# R* @# V3 c; i
  8137.       (progn
    % V! S! a  ^; R' b6 ?6 \0 ~' Q
  8138.         (setq z_vector
    8 O& k5 V3 R4 A* g' t" I4 B4 h
  8139.           (image_cross_product
    ( P7 v, R- j: ^6 k+ K8 [
  8140.             (image_normalize_vector u_vector)# r0 w) x+ D. V' W0 `
  8141.             (image_normalize_vector v_vector)+ N6 A5 g" J7 q9 m: C8 z1 l
  8142.           )- H+ R) r! V9 i* E
  8143.         )
    * f: A; `1 c& z/ \+ q8 C+ m
  8144.         (setq u_vector (image_rotate_vector u_vector st_ang z_vector))
    / C9 V5 f- K: f0 K, ^6 P0 p7 \
  8145.         (setq v_vector (image_rotate_vector v_vector st_ang z_vector))
    % s% [9 x7 x, O* ?2 s
  8146.       )
    , h9 S1 R( g  b) G# A' P, n
  8147.     )
    " O8 k  Z, g$ q! F& l9 `
  8148.     (emod u_vector 11)# ~& L4 i  e( H2 R1 {( d  l/ B1 J/ c
  8149.     (emod v_vector 12)
    * w& [, t' w; d7 e* w
  8150.     (entmod elist)0 q5 l7 z' `9 `2 t! e' D4 d
  8151.   )& H. k) C+ S! H2 I) O" E8 C
  8152. - v( X- ?# M: |: n; O0 L
  8153.   ;;
    ! @- `4 L% K" d( D( s
  8154.   ;; Run imageadjust on given entity, working around possible7 X$ h: B, S7 R$ q, f- b
  8155.   ;; re-entrancy problems( v6 {. S" ]4 |2 B2 b" Y
  8156.   ;;1 ^: C# j. E4 {6 ~/ \
  8157.   (defun image_adjust (ename)! T# l7 g' G$ f) O: S: i: `
  8158.     (verify_arxapp_loaded "ism.arx") ;; make sure it's loaded...1 V* i& w% a; h: X0 D% q* @
  8159.     (imageadjust ename)
    2 x: R$ H# N$ ]. X, x$ k
  8160.   )
    % z/ J: c# j$ S& t, M+ e4 N% }

  8161. 7 n: s/ H6 U; x% T- f5 V# I
  8162.   (defun ddimage ()* a$ `6 h0 A" o; f6 v
  8163.     (if (not (new_dialog "ddimage" dcl_id)) (exit))
    ; o' k4 t% s9 v

  8164. 3 R$ ~+ V8 N3 h1 j) y8 y' }
  8165.     ;; Grey out the thickness field.
    7 _+ h% j$ n$ F9 I/ G! [! [7 Q
  8166.     (mode_tile "b_thickness" 1)2 B6 \) y0 j8 N9 M, I! I
  8167.     (mode_tile "eb_thickness" 1)
    , P7 x; X2 e5 ?+ e0 g

  8168. 5 i$ N" Z/ H' _+ W7 ?7 d3 |
  8169.     ;; Get the associated def object.+ m2 |, J+ K5 m) w0 }
  8170.     (setq image:oname (cdr (assoc 340 elist)))! K2 u1 c. h* [9 `) t
  8171.     (setq image:olist (entget image:oname))
    2 Z: ~4 l0 S/ O! s
  8172. : p, b6 i+ P9 D6 n9 v$ r0 W
  8173.     ;; Set initial tile values2 w9 {' n( m4 @' m: U/ Q; n8 f
  8174.     (set_tile_props)
    " v$ n( ^% o, q7 M& D# ^/ r
  8175.     (set_tile_handle)3 X' X% \0 @4 z* `  j3 j
  8176.     (set_tile_pt1 0)
    / p2 ^! D- J+ h" S
  8177.     (setq image:scale (image_scale))
    + R9 A& T1 B- ~5 r) f$ s( S: p. C
  8178.     (setq st_ang (image_rotation))/ _8 \4 }$ c: F/ P$ d2 o# S% r* i
  8179.     (setq image:width (* (distance '(0 0 0) (cdr (assoc 11 elist))) (cadr (assoc 13 elist))))3 c0 e3 t2 x' q- x3 f, N6 c$ U8 g
  8180.     (setq image:height (* (distance '(0 0 0) (cdr (assoc 12 elist))) (caddr (assoc 13 elist))))  o  A) u5 v1 l. x% R* l
  8181.     (setq image:options (cdr (assoc 70 elist)))+ Z  p0 H/ f( b9 l0 }
  8182. 7 @1 q+ {  V. P4 I0 x
  8183.     ;; Record the last multiplier for use in image_update function' {4 a  X( t' |8 w8 k
  8184.     (setq image:mult 1)- W" i, F( ]# i' V

  8185. : v; q+ ^# {* [
  8186.     ;; Retrieve the image name4 }$ a; I# ]* ?  Q7 B/ b4 ~& N
  8187.     (setq fn (reverse (dictsearch (namedobjdict) "ACAD_IMAGE_DICT")))5 w$ x" L% x! Q8 s
  8188.     (setq flag 0)
    4 Q, r7 W: L( g/ B: \! S
  8189.     (foreach n fn
    % G* C" G* Y9 A) Z$ ~5 v& _
  8190.       (if (= flag 1)
    ' c' Q5 Q! l$ C0 V
  8191.         (progn! F8 {8 P/ ]9 U* w* a. C
  8192.           ;; Display the image name
    $ F8 ?: {5 S7 I5 I: _
  8193.           (set_tile "image_name" (cdr n))
    # s0 M/ |5 \0 c9 i8 S, A' c
  8194.           (setq flag 2)) J3 ~; J+ G) c+ y
  8195.         )
    - ?- q& n% ^0 \+ t* i
  8196.       )0 B  q9 a2 Z# v' N4 X" t
  8197.       (if (= flag 0)
    ( H% X* p, h. P' {) V7 M& h
  8198.         (if (equal (cdr n) image:oname) (setq flag 1))
    4 e5 X  [2 X  x* A: Y
  8199.       )& [( J4 x+ f9 {$ r0 J* ~' D
  8200.     )' U* j2 q0 k2 F. X0 H. H* v
  8201. + b! Q2 {: x* M" |4 \
  8202.     (set_tile "image_path" (cdr (assoc 1 image:olist)))
    # d, r5 M0 z" e7 m* u
  8203.     (set_tile "st_ang" (ai_angtos image:angle))
    , d. Q7 q* D  {
  8204.     (image_set_tile_scale)
    2 x/ e# L( m6 q5 o0 t* o9 @

  8205. 3 w/ x, E  _- J2 ?$ O) v
  8206.     ;; Check the appropriate boxes
    3 l$ B+ f! G! K& q7 [& ]; G. [
  8207.     (if (/= (Boole 1 image:options 1) 0) (set_tile "image_show" "1"))
    ; h3 ]0 ?; U* @2 X: @% A
  8208.     (if (/= (Boole 1 image:options 2) 0) (set_tile "image_non_ortho" "1"))7 t! g% \0 @- i$ C- u( O
  8209.     (if (/= (Boole 1 image:options 4) 0) (set_tile "image_clipped" "1"))5 r2 `) f! ^  o: a  N
  8210.     (if (/= (Boole 1 image:options 8) 0) (set_tile "image_transparency" "1"))
    , o' P# E9 A; G" U+ b

  8211. ) [. ^5 A; \. i$ _5 O, v& z4 |
  8212.     ;; Define action for tiles
    0 W" ?' ]3 O0 t( b% m8 A: }
  8213.     (set_action_tiles). Y2 |6 n& i9 E9 A$ `: q2 A& M
  8214.     (action_tile "xscale" "(image_update \"xscale\" $value)")5 Y  b4 m& i9 s* N  l7 \3 y
  8215.     (action_tile "st_ang" "(ver_ang1 $value)")
    ) x+ K: ]. S  h! T+ |' j
  8216.     (action_tile "wid" "(image_update \"wid\" $value)")3 B- ^3 l0 a8 p% b: }
  8217.     (action_tile "hght" "(image_update \"hght\" $value)")' Y: Y4 p. R5 x
  8218.     (action_tile "image_show" "(image_disp_opt 1)"). a  H( I% w, A+ e
  8219.     (action_tile "image_non_ortho" "(image_disp_opt 2)")# u3 a8 y( B. [" k$ q/ W
  8220.     (action_tile "image_clipped" "(image_disp_opt 4)")
    ; F) ?* w* `! N
  8221.     (action_tile "image_transparency" "(image_disp_opt 8)")
    7 s& Y% E' E6 W" `% I! g3 }# ]; t: [
  8222.     (action_tile "image_adjust" "(done_dialog 4)")
    $ e5 x# @7 }! r% f- F5 a% s
  8223. + V4 D, m, ]. e
  8224.     (setq dialog-state (start_dialog))
    # F# [4 \6 |" t/ O
  8225.     (if (= dialog-state 0)
    5 p, J. G) K7 {8 e, h1 W! q
  8226.       (progn
    2 k4 j% h& g0 n* Z5 }+ Y
  8227.         (reset)
    ; K% r/ y0 ]) B5 U
  8228.         (image_clean_variables)
    ! z7 e2 `- u; a4 B4 w
  8229.       )
    8 _( J& m3 y& Q9 d- F5 ^3 k
  8230.     )1 N$ c0 g" ~, R- \1 d
  8231.     (if (= dialog-state 1)
    , ~. ~/ V- o7 f5 X- N  F
  8232.       (progn
    # C. x) z, S0 |* M# k" R
  8233.         (modify_image)
    ) K; b) o' e+ S
  8234.         (image_clean_variables)
    ' v/ j( W  P& p" h* i2 T; y
  8235.       )
    ( g8 Y$ O4 W: U6 c; \
  8236.     )  |7 C1 m+ a1 v7 ~; y0 K
  8237.     (if (= dialog-state 3)8 {, [7 I$ T5 m0 w) [/ J2 P: m& p
  8238.       (progn! ^* r" H; l7 m9 w, T" y& T" K8 O4 p
  8239.         (modify_image)
    1 [6 Z; @/ t% R' w1 `: d7 u
  8240.         (image_clean_variables), r6 h: C) |& l4 K
  8241.         (setq pt1 (getpoint (list x1 y1 z1) "\nNew Insertion Point: "))5 k! ]) E$ r4 t' d3 F  z) H  y* g0 M
  8242.         (ver_pt1 0)
    & O5 m3 W/ m: t
  8243.         (ddimage)& `3 T( [- O5 p2 {+ x' _
  8244.       ): ~; O! V4 J) B6 V$ k
  8245.     )6 r0 Y! F$ Z4 C) [  ]
  8246.     (if (= dialog-state 4)5 l: @8 t5 v  R  u$ Z
  8247.       (progn
    ' L. a. q; C- T$ c" y+ B7 w- b
  8248.         (modify_image)2 R/ }" C  \2 Q& Q& Z
  8249.         (image_adjust ename)
    : E) I9 S4 V* H5 o: e
  8250.         (setq elist (entget ename))% J9 c; N; ~! _9 _7 n/ W# ~
  8251.         (ddimage)" T1 [! E! {3 Q' J. U  w
  8252.       ): B! X- a' T' A' a; t
  8253.     )$ A+ Z9 }! f- N7 r9 c- }
  8254.   ), w" A+ M3 u, [# b# ?+ P( E8 r5 Q

  8255. $ e5 ]1 x+ _* i. Z1 L! q, s
  8256.   ;;4 r( J- t; \" v7 k( p* C' {
  8257.   ;; Modify BLOCK (and its Attributes, if any)1 B+ ^! G& }$ m0 x" z! n
  8258.   ;;8 n1 w! D- `' \! d, m4 h
  8259.   (defun modify_block ( / el en2 p1 p2 oldp1 oldp2 new_hgt old_hgt attr9 f7 `% d! T' {: k2 K; w) Q; w
  8260.                           new_wid old_wid old_rot scaling old_scale) u0 e/ H9 c+ L- g$ w
  8261.                           xdelta ydelta zdelta xbase ybase zbase ipos)
    ( G5 V. g( x6 i0 c5 h0 d5 @
  8262.     (modify_properties)
    3 S3 R7 L: b0 u& H
  8263. ) R2 |4 h7 Q  K
  8264.     ;; First, translate and scale the Attributes, if there are any.
    $ I3 z% c8 a; N8 H7 J0 q+ I+ Z: j
  8265.     (setq old_rot   (cdr (assoc 50 elist))! a! W$ M  F8 L. |* y7 J- C1 v& k9 S! e* u
  8266.           old_scale (list (cdr (assoc 41 elist))
    6 Y' C+ [( ]6 Z- F% A$ h- S: u
  8267.                           (cdr (assoc 42 elist))
    ' F3 b5 B: b7 S. z* r* M
  8268.                           (cdr (assoc 43 elist))
    % J" S- C$ @; E' ]" @
  8269.                     )
    1 q+ N& D8 ]- |/ \' k  Q
  8270.           scaling   (or (/= xscale (car   old_scale))! P- h) x$ x4 ]. ^, b. e$ Y
  8271.                         (/= yscale (cadr  old_scale))
    ) \  Q' G* G" p) [4 E2 t( K& z
  8272.                         (/= zscale (caddr old_scale))& ]( B$ F; o$ f1 f
  8273.                     ). L0 J8 V0 V1 W
  8274.           attr      nil               ; No Attributes modified yet4 ~3 I- s* _1 B- v  o3 A; ^
  8275.     )* P/ I2 {" T# ]+ P$ J2 R) `
  8276.     (if scaling
    2 o9 F9 m% ^4 ^+ Y! Y9 Z0 i' v
  8277.       (progn2 t( ?& k" v5 L2 X3 q, w3 X
  8278.         (setq xdelta (/ xscale (car   old_scale)), x6 [4 t5 q! V3 k
  8279.               ydelta (/ yscale (cadr  old_scale))1 T4 [0 n) M0 v& ^, c2 J
  8280.               zdelta (/ zscale (caddr old_scale))* v9 F& u, }6 j8 C1 U
  8281.               ipos   (cdr (assoc 10 elist))! U9 D% ~, z: r' a' q! m
  8282.               xbase  (car   ipos)
    ' _3 |5 W8 y, B( x+ c
  8283.               ybase  (cadr  ipos). b/ \: H" F7 N  [
  8284.               zbase  (caddr ipos)
    5 d! Y7 K) }" _6 F* N
  8285.               en2    (entnext ename)  ; First Attribute& \% T7 W0 o! R5 l0 X! z
  8286.         )
    2 W) S# F  s9 k3 C

  8287. % }8 ]0 S- f/ M+ Q1 r% X" \
  8288.         ; If the Block is rotated, temporarily un-rotate it, along' a, l4 a/ H+ X  d- F; x2 K
  8289.         ; with all its Attributes, so the scaling/translation of the. f) x0 A0 E* E4 e
  8290.         ; Attributes won't have to take the Block rotation into account., A6 i+ {2 e1 K
  8291.         (if (/= old_rot 0.0)) r% F  F( d- G( `' ^8 W& D+ a/ ]$ m6 A
  8292.           (progn
    3 d3 P! z, s. C4 N
  8293.             (command "_rotate" ename "" pt1 (ai_angtos (- old_rot)))
    5 ]* _+ G% b0 ^1 T) Y1 R
  8294.             (setq old_rot 0.02 n2 I9 |4 I/ x* E8 `  U+ {
  8295.                   elist   (subst (cons 50 0.0) (assoc 50 elist) elist)3 v1 W! V* a; N$ T, R1 T
  8296.             )) x' k* j6 e" j9 J* c
  8297.           )
    . ~4 _8 M0 i# X' Z  I& H
  8298.         )8 G: W) q, G9 ]; e; x
  8299. , k# t+ A) l  y  Q/ m% F! h6 S5 M
  8300.         (while en2* Q2 I- F/ T0 f* u
  8301.           (setq el (entget en2))/ W* }5 ^" |% _4 A7 o& m
  8302.           (if (= (cdr (assoc 0 el)) "ATTRIB"); ]0 H% b1 x9 j* l
  8303.             (progn% w: C. C2 ]8 i
  8304.               (setq old_hgt (cdr (assoc 40 el))  ; Height- g9 v3 I% T9 Y: z2 Y
  8305.                     old_wid (cdr (assoc 41 el))  ; Width-factor! f* I" N8 Z3 m) P' W. ?  r
  8306.                     oldp1 (cdr (assoc 10 el))  ; Generation start point4 k  d& Z) c- \. c. d$ t3 B
  8307.                     oldp2 (cdr (assoc 11 el))  ; Optional alignment pt6 N8 N! U( ?& v
  8308.                     ha    (cdr (assoc 72 el))  ; Horizontal alignment
    / W6 ^2 N5 Y, b  D  T
  8309.                     va    (cdr (assoc 74 el))  ; Vertical alignment
    4 ?# |$ Y6 Z7 F0 C/ ?7 C% r. O
  8310. 6 S; J$ S$ g/ o  f, j7 q
  8311.                     ; Translate gen. start point; _4 Z$ K  ~* ]6 |: B
  8312.                     p1    (list (+ xbase (* xdelta (- (car   oldp1) xbase)))
    , O/ V* j- j" U$ b" G4 V
  8313.                                 (+ ybase (* ydelta (- (cadr  oldp1) ybase)))
    9 W% y% j9 K2 v6 ^2 I5 A3 t
  8314.                                 (+ zbase (* zdelta (- (caddr oldp1) zbase)))- K+ r  V% O% d6 m; G& X/ ^* i0 J
  8315.                           )
    1 Q) v! n0 c( j7 A; i4 u
  8316.                     el    (subst (cons 10 p1) (assoc 10 el) el)0 A+ o; `8 s- N4 C7 m% T
  8317.               )( V. b! L( e' a8 \, L( I$ A

  8318. ! n1 h; w* ]: ~8 }& n6 a
  8319.               ; Translate alignment pt similarly, if present and applicable
    4 ~% b7 }1 h3 w6 d6 @+ p8 M
  8320.               (if (and oldp2 (or (/= ha 0)( E5 y$ _5 M+ f2 E' k
  8321.                                  (/= va 0)
    * U  m/ z' |7 Y1 m5 @) w
  8322.                              )5 M. B& B' n- ]# F
  8323.                   )
    , ^! z' B" |4 A7 J% e
  8324.                 (setq p2 (list (+ xbase (* xdelta (- (car   oldp2) xbase)))2 f. G) @" v7 W. B6 V" c( G
  8325.                                (+ ybase (* ydelta (- (cadr  oldp2) ybase)))
    . P( ~, z6 m% c9 U, x9 p
  8326.                                (+ zbase (* zdelta (- (caddr oldp2) zbase)))
    $ M- Z1 [9 V1 Q6 l
  8327.                          )
      l- u& J% o! V/ \
  8328.                       el (subst (cons 11 p2) (assoc 11 el) el)
    $ g7 d' W# Z6 b+ ^
  8329.                 )
    * D8 C! w8 `: T- i; ^) v1 P
  8330.               )
    ( c5 y" x' ?. k

  8331. : a  I9 P; p' z% {- v4 S0 a
  8332.               ; Each Attribute's height and width-factor were computed/ q+ G) j) f3 m: J1 ~1 o7 b
  8333.               ; based on the Block's scale factors.  Adjust them now,$ D: e9 K. s( i& T9 g, {# a+ l1 r, D
  8334.               ; by first reducing to values for 1x1 scale...5 u% K$ E; S( }# |* ^
  8335.               (setq new_hgt (/ old_hgt (cadr old_scale))
    " w' f8 ]- h' ]0 x; Q
  8336.                     new_wid (/ old_wid (/ (car old_scale) (cadr old_scale)))
    2 w) F) M1 |) l: I# l9 `% F& i" P% }
  8337.               )
    ! U% Y  I0 {) Z8 n3 c/ x
  8338.               ; ...and then rescaling.
    1 z2 |- D# ?7 _# A: M+ q
  8339.               (setq new_hgt (* new_hgt yscale)
      i, Z+ O/ c$ l! {6 A7 T* V
  8340.                     new_wid (* new_wid (/ xscale yscale)). C( a4 U( K# K3 k) v
  8341.               )
    : U  S- ^2 V! ]6 s8 q  Q. Z
  8342.               (if (/= new_hgt old_hgt)3 g8 _4 X+ W4 a  L5 O0 ]
  8343.                 (setq el (subst (cons 40 new_hgt) (assoc 40 el) el))
    ' e& M3 D" C6 F8 u& }1 |
  8344.               )
    9 x2 \3 K- N9 g5 }9 W  o
  8345.               (if (/= new_wid old_wid)& U4 x# z- S" p+ ^
  8346.                 (setq el (subst (cons 41 new_wid) (assoc 41 el) el))9 x6 u" t" F0 l" M7 P
  8347.               )4 A1 e; n) S( \% E4 L2 B
  8348.               (entmod el)$ N" }. s2 S8 B! V
  8349.               (setq attr T             ; At least one Attribute modified
    1 S5 J5 l/ m0 m; e
  8350.                     en2  (entnext en2) ; Next Attribute
    * y( |# g3 U; @
  8351.               )  p0 c0 H. Q, ], k
  8352.             )
    ) J& p" d% R0 Z0 C5 H( @$ K
  8353.             (setq en2 nil)          ; No more attributes! ]1 D; X6 V. d
  8354.           )
    - E' ?4 D- q1 o3 i9 \) ]
  8355.         ); m: W& `. \2 E; ^' z8 ]
  8356.       )
    7 R7 F7 R* x& v$ Y6 |3 t
  8357.     )
    & z. ^2 P; A6 b
  8358. - ^( ?5 ^4 n6 Y1 \* H- c
  8359.     (setq pt1 (list x1 y1 z1))
    % o) ^0 q* ^5 ^& i4 ^4 J
  8360.     (tempmod xscale 41 nil)9 I3 v. X0 x, E6 [5 C( b
  8361.     (tempmod yscale 42 nil)- Y$ O, }( r) N; r" C- m* L
  8362.     (tempmod zscale 43 nil)
    $ k1 C/ a, N2 T
  8363.     (tempmod col-sp 44 nil)
    , [- x2 U& f. o1 K% V2 e9 K
  8364.     (tempmod row-sp 45 nil)8 a! O- P' X4 m) `3 A( t* Q
  8365.     (tempmod columns 70 nil)! e0 x0 m1 Z4 {5 z2 i, R4 M
  8366.     (tempmod rows 71 nil)8 X( F% d- K+ p# B4 F% Y/ ^
  8367.     (if (= xclipmode nil)+ Y( I; o& x2 Q, F: U- z
  8368.        (entmod elist)
    5 T8 k( g/ H! M6 ?
  8369.        (setq xclipmode nil), w% a+ r3 i+ r. I2 l+ W
  8370.     )$ A# Y1 M( `* ~% l% e4 q
  8371.     (move_pt1 1)( C, d/ q5 [9 x

  8372. ) Y$ r7 S/ a' g* i
  8373.     ;; Now do the rotation with the ROTATE command.
    " t+ `# C/ n* V4 [; [$ C. D7 p# H
  8374.     (if (/= old_rot rot)
    " D, w# e& K/ y
  8375.       (command "_rotate" ename "" pt1 (ai_angtos (- rot old_rot)))2 B7 u/ @8 Q; F* S( k
  8376.       (if attr                          ; Else, if attributes were modified,* `; v' h  {! g
  8377.         (entupd ename)                  ;   just regen to force attrib display3 v4 l, E4 X; {& H9 o
  8378.       )
      b& Q; r9 t# b/ W' o! w! N' {
  8379.     )* D1 B" r! z$ c; k* z
  8380.     (setq elist (entget ename))  J# q' O  x9 f( ?. w9 m% |% `
  8381.   )& |- V0 q, c) ~& B" D8 P8 V
  8382.   (defun ddblock (/ temp temp_xclip newhatch blkname blklist blktype program xrefpath)
    & s9 Y& ?' N" k8 F$ o! K
  8383.     (setq newhatch 0)( ?$ y1 _6 i" G
  8384.     (setq blkname (cdr (assoc 2 elist)))
    7 I  e0 r( u+ V4 R) }
  8385.     (setq blklist (tblsearch "block" blkname))7 T( `* p* g7 U: p
  8386.     (setq blktype (cdr (assoc 70 blklist)))) K/ Z) _8 h7 O+ [7 Z2 {, l0 F7 u
  8387.     (setq xcliponoff 0)& V' Q( P6 B5 s8 o
  8388.     (if (or (= blktype 0)(= blktype 36)): v7 f: [8 S4 D: N0 P( E- a3 u" X/ @5 v  g
  8389.             (progn3 ]  g# [# |% A0 k, h! D3 d) t
  8390.               (setq xcliponoff (xclipon elist))2 s# r- M1 c: f$ V
  8391.           (setq temp_xclip xcliponoff)* q& A5 L2 s! @" a) z
  8392.         )
    3 q7 e( c! B% v
  8393.     )
    ( K! }# e& {& {
  8394.     (if (= (logand blktype 4) 4)
    - u2 q# ~; v, K2 O" p- a
  8395.       (progn- g2 Y9 C1 I# {6 c/ G% d( s1 a; ?$ d
  8396.         (setq xrefpath (cdr (assoc 1 blklist)))2 t% Q2 p( I( O$ F4 j- [* ^' r
  8397.         (setq help_entry "modify_External_Reference_dialog")+ J( ]. V; {% \9 R. h
  8398.         (if (not (new_dialog "ddxref" dcl_id)) (exit))- t6 L( S( o* A* D
  8399.         (set_tile "Bl_name" blkname)- Z$ q/ _* C# x; P6 M
  8400.         (set_tile "path" xrefpath)
    $ G; s, ~4 M  |" b) i* P
  8401.       )7 u1 O# J7 c6 y' S5 U
  8402.       (progn4 i! a0 S- d) b' v) H/ x' {
  8403.         ;; Get program name for use as Xdata app name
    0 r, E: D1 v1 R. y! H$ Y
  8404.         (if (not (setq program (getvar "program")))
    + Q! V( C+ [$ w
  8405.            (setq program "acad")- ?, Z! ]6 p/ C% Y
  8406.         )+ t5 c  M9 ^7 J* R. n8 M! R5 b
  8407.         (if (and (setq temp (assoc -3 (entget ename (list program))))& R4 Y0 F7 Z- \# b. U( t" V
  8408.                  (= (cdr (assoc 1000 (cdadr temp))) "HATCH")
    2 _' `+ Z3 o$ r& c; K
  8409.                  (assoc 1005 (cdadr temp))
    + m) c$ W3 b  I- I1 O
  8410.             )
      \% R+ H  G2 c# ?7 t6 _  C7 K
  8411.           (progn
    8 o/ P# q2 o. O+ |6 C7 l0 [
  8412.               (setq newhatch 1)7 V6 ]0 L" L  i0 u, J, v
  8413.               (setq help_entry  "modify_Hatch_dialog")
    * J6 |3 F3 }2 X# [
  8414.               ;;; convert the object into a new hatch$ j" F( Y. x7 C4 d6 H; }  M& M5 l
  8415.               (ai_undo_on) ;; enable undo
    9 m" t) S& x# b7 U+ r6 r- |# V  n" X
  8416.               (COMMAND "_.UNDO" "_Mark")
    5 C0 F: h) E3 q2 p4 U& j! L
  8417.               (COMMAND "_.CONVERT" "_Hatch" "_Select" (cdr (assoc -1 elist)) "")
    . {; T% U$ t# w
  8418.               ;;; suppress nasty message from convert command$ w# ~8 l7 y* T) j, }. W" l
  8419.               (princ "\r                                                                      \r"), `3 H0 E/ g$ v- F5 H3 s! r! x
  8420.               (setq elist (entget (setq ename (cdr (assoc -1 elist)))))$ X; y6 y* ~) P+ o1 n# S
  8421.               (setq old-elist elist)4 O3 U0 h4 K8 Y& c
  8422.               ;;; If we have cancelled ddmodify) _6 x& J4 W/ b
  8423.               (if (not (ddnewhatch))      ;;; (ddnewhatch) returns nil for Cancel or T for Ok2 {/ J4 J3 G6 W( z
  8424.                    (command "_.UNDO" "_Back")
    9 _- K( B5 d6 j+ T- l+ y
  8425.               )3 F) j1 D: p3 ]9 o4 i  Y
  8426.               (ai_undo_off) ;; restore undo state
    ) _) Z  k- s) n' ]3 @
  8427.           )
    8 J$ d0 T9 u) k  _
  8428.           (progn
    5 O" i; N4 S6 y+ S& C! c0 z9 {# l
  8429.             (if (not (new_dialog "ddblock" dcl_id)) (exit))
    4 q; F2 X4 p0 d
  8430.             (if ( = "*" (substr blkname 1 1))0 P; h! M3 i3 B, d9 J5 T( R: k0 ]! Q
  8431.               (set_tile "Bl_name" (strcat blkname " - Anonymous block"))5 L: t) Y4 d2 {& R4 M- \  X0 R
  8432.               (set_tile "Bl_name" blkname)* q% ]  w- l& B9 D. P8 `9 p' U; W8 t
  8433.             )
    9 n$ p' z! z: ~2 \' J
  8434.             (setq help_entry  "modify_Block_Insertion_dialog")+ i9 _$ c3 b3 F) U- L; `" |' ^
  8435.           )
    9 {' d/ }; ?; a! }" G$ a& c( `8 }) u
  8436.         )
    , j8 |: f) @2 _
  8437.       )6 w# W; V3 k, A# X
  8438.     )* a7 c5 {5 O+ P6 O6 x
  8439.     (if (= newhatch 0)
    9 k; ^7 k+ }5 J6 n* s: _' F" h
  8440.       (progn6 e9 t& y5 `7 P- A5 [  a, k: e
  8441.         (set_tile_props)) |, Y5 @* B; ?# R& g( Y( a) s
  8442.         (set_tile_handle)
    % Q& ]* @& n! U
  8443.         (set_tile_pt1 1)
    ( [' {+ t  M: x" v, m! M. g
  8444.         (set_tile_rot)
    , C9 x+ A. r: |9 `) C$ F
  8445.         (set_tile_scale)3 {, R% e) [! o- J. j
  8446.         (set_tile_rc)( b. s) B' ^4 ~) l1 j+ V% S# j* G
  8447.         (if (= (logand blktype 1) 1)
    4 E8 T1 o5 A9 }3 f; r* D
  8448.           (progn
    - K5 q7 v* [( _( x3 m& J
  8449.             (mode_tile "xscale" 1)# g/ b4 F$ z8 |1 I1 P5 H7 `0 O, D
  8450.             (mode_tile "yscale" 1)) x3 b- _8 K5 r; w
  8451.             (mode_tile "zscale" 1)
    ( Y6 ?9 a. O! ^* D4 Z4 Q  I
  8452.             (mode_tile "rot" 1)
    , q7 O, p% S0 y& Y1 v. v
  8453.             (mode_tile "columns" 1)' ]! h: Y# |) ~" Q7 T+ P
  8454.             (mode_tile "rows" 1)1 s+ ?/ J& _. f* ?0 {4 h/ t
  8455.             (mode_tile "col_sp" 1)$ q( R2 E; t$ i2 }5 E! y. [  M
  8456.             (mode_tile "row_sp" 1)
    . T& Q/ t0 b) O! d! R' K4 m
  8457.           )
    $ y7 z; l- K) F7 {1 I; {
  8458.         ), d& p6 q! v+ {1 C, w
  8459.         ;; Define action for tiles: e0 R: W! `; g& m
  8460.         (set_action_tiles). b/ e( i( {  t8 U; Q& M
  8461.         (setq dialog-state (start_dialog))
    ' E+ @7 L  ~3 C$ z
  8462.         (cond
    " y5 o: t8 E! w7 U% G7 ]( E
  8463.            (  (eq dialog-state 0)
    1 i; U. K' N" i1 x1 y
  8464.               (setq pt1 (trans (cdr (assoc 10 old-elist)) ename 1))) v, ~' b$ n/ R0 ?$ }
  8465.               (move_pt1 1)
    ! B1 [0 D, j( x3 v" g) R' p
  8466.               (reset))& s" c) J$ H+ @. Q7 }
  8467.            (  (eq dialog-state 1)
    % e& `7 k7 i$ a3 q) E6 d
  8468.               (if (and (/= temp_xclip xcliponoff) (or (= blktype 0)(= blktype 36)))
    + [  W+ R5 f/ b) U* U
  8469.                 (xclip)5 j& @( t& P/ ^" \% u
  8470.               ). y9 p7 z7 L2 w1 T3 G2 V- M
  8471.               (modify_block))
    , @: d  M7 f- r9 r! A
  8472.            (  (eq dialog-state 3)
    % @% p. Q/ i1 n% g2 _4 t
  8473.               (modify_block): O8 e, z: l9 s  G. h. `
  8474.               (setq pt1 (getpoint (list x1 y1 z1)  "\nInsertion point: "))
    7 q8 o9 i% ^4 T' Z1 [" i
  8475.               (move_pt1 1)
    + U- ^& f' b' o8 W* n8 G$ Z  T
  8476.               (ddblock))0 b1 e* P' D" g4 q' ?; L
  8477.            (  (eq dialog-state 4)" O; Y, I7 M) w
  8478.               (modify_block). a$ M! }1 z. x) n3 W( H
  8479.               ;; Get current handle.
    & V) ~! p/ u  r2 Z
  8480.               (setq hand (cdr (assoc 5 elist))); A* l, b- F  P+ R# M
  8481.               (command "_hatchedit" ename)
    $ u* C* B! H  D* N
  8482.               ;; If OK in hatchedit, a *new* entity is created and the old one
    , a: R: r$ m# [" e) W$ Y  h2 X
  8483.               ;; is deleted.  So if the old one exists, it must have been a% B6 B# q* M9 T+ i
  8484.               ;; so rest the entity.* y" g5 f/ O5 L2 g
  8485.               (if (entget (handent hand)) (reset))
    9 g' S2 L* E) I6 G* b3 K
  8486.            ). O. U; C1 _0 Q; b# |# a- {
  8487.         )2 x" T. k: E# B$ Y% e
  8488.       )* Q5 E4 z! ], I8 S
  8489.     )8 z: S3 T/ s* H: m4 F+ ~
  8490.   )$ D* ]2 O$ B" k/ K
  8491.   ;;
    / @; J* [- y3 q" V8 A" J6 t
  8492.   ;; Modify SHAPE( n# M# C* Q' Z0 p) _/ p
  8493.   ;;
    3 X  H" c' N( R1 j, O
  8494.   (defun modify_shape ()9 w, a5 E+ W- U# e  c0 p
  8495.     (modify_properties)
    , c( A1 U+ h1 |  A
  8496.     (setq pt1 (list x1 y1 z1)): Z6 o5 R% |' D" N
  8497.     (tempmod pt1 10 1)
    & Q. B+ {, Y. L
  8498.     (tempmod hght 40 nil)) B) ~# {) N7 ^. H6 Z6 ~
  8499.     (tempmod wid 41 nil)
    2 b4 z+ ]' c3 [- {! r* Z
  8500.     (tempmod rot 50 nil)2 Y! e) {5 M2 p/ Q" L5 U+ c
  8501.     (tempmod obl 51 nil)
    ! ~* o' R" X+ {
  8502.     (entmod elist)' Z2 v. m% m1 @/ x
  8503.   )1 ^+ M5 e1 `& K% Y

  8504. , ]. h" J+ K: x. J- n9 T
  8505.   (defun ddshape ()- A1 c" O+ d! ^* a( I: v
  8506.     (if (not (new_dialog "ddshape" dcl_id)) (exit))4 s" G3 d. Q0 `! {
  8507.     (set_tile_props)
    / i% k& y9 v- [! X9 G2 b. x0 l) _: h2 V
  8508.     (set_tile_handle)
    " q( Z) _$ w: O7 |' I: q9 [
  8509.     (set_tile_pt1 1)
    : O6 h% p7 x2 h6 g# J& m3 D
  8510.     (set_tile_rot)+ U8 [3 r* Q% D  Y! [. B/ E! B
  8511.     (set_tile_hght)5 T0 y: ^; s- k) E
  8512.     (set_tile_wid)
    1 |; W: e& w9 {" p; X" M9 y/ X4 f. ?$ A1 @
  8513.     (set_tile_obl)+ d# Y4 i' j+ p8 s" Z
  8514.     (set_tile "sh_name" (cdr (assoc 2 elist)))3 H' |! ~& K& D
  8515.     ;; Define action for tiles
    : }# H- z; w6 m
  8516.     (set_action_tiles)
    6 e4 Y/ w1 |& i, }! I# ]5 ]. |
  8517.     (setq dialog-state (start_dialog))
      G% @- V/ T  w, w
  8518.     (if (= dialog-state 0)
    / D- g+ P* w% T# l8 L
  8519.       (reset)
      _4 ^. G5 S1 v
  8520.     )
    / S* ]& e1 T! d: s6 F
  8521.     (if (= dialog-state 1)
    $ J5 K+ N) _+ E0 S( ~! S
  8522.       (modify_shape)
    8 n# `3 V7 v$ b- p& d3 G7 ]% F
  8523.     )# Y6 k7 @, k: m1 |
  8524.     (if (= dialog-state 3)$ y$ v! u- `# i& n4 x- A
  8525.       (progn
    # S7 O: Z, H+ U) ]3 |6 k, ?
  8526.         (modify_shape)! o9 C3 S5 j3 i
  8527.         (setq pt1 (getpoint (list x1 y1 z1)  "\nInsertion point: "))
    1 _' q# s- }! `4 B* j! ^7 e% l/ H
  8528.         (ver_pt1 1)
    : `( @2 u& T- h- N9 W; Y
  8529.         (ddshape). s5 P; A' \+ ?: D: _+ L/ |" S
  8530.       )) M2 M5 {, Q& }9 m! F
  8531.     )
      l4 G/ J" `( _+ u
  8532.   )  ]+ I6 D7 j" W! Y: @
  8533.   ;;5 |3 S3 [$ Q% Y& E
  8534.   ;; Modify TEXT or ATTDEF
    0 O# Y( L1 C9 y) j  F$ w1 M. K+ n
  8535.   ;;
    5 `. Z2 b* A6 J, _) ~% F+ t
  8536.   ;; Set bit code for upside-down and backwards setting- w+ t& i5 ]. O- B4 V( E
  8537.   ;;
    8 d. o% d; u/ b. z
  8538.   (defun code_71 (). H9 ?; h2 O1 D4 d4 Z( U
  8539.     (cond ((and (= bkwd "0") (= upsd "0")) 0)' {) ^. s$ n$ _
  8540.           ((and (= bkwd "1") (= upsd "0")) 2)
    1 d5 k: [3 M  v* K* ^
  8541.           ((and (= bkwd "0") (= upsd "1")) 4)4 g7 S% g* o4 j
  8542.           ((and (= bkwd "1") (= upsd "1")) 6)
    8 X: O. M* F3 `( J6 i- J
  8543.     )7 P0 K/ c# ?4 u3 x- p0 p5 X4 ]
  8544.   )
    , F' p; z0 s, }3 U" T
  8545.   ;;" _9 u+ \$ ?: y4 U. V6 V- ]& `4 v( J# L
  8546.   ;; Style action.  Reset widget values to style defaults
    " d( F9 d$ S' e5 |
  8547.   ;;
    8 ~2 r, J* ?  g1 h1 u) U
  8548.   (defun style_act (index / style-list)" h: x& e, D9 s# k% `/ W5 T
  8549.     (setq style-idx (atoi index))
    6 {0 `) K0 u- P1 i
  8550.     (setq tstyle (nth style-idx slist))
    ! H4 x/ D( y) i6 N2 y0 ]+ {) B7 Q
  8551.     (setq style-idx (itoa style-idx))
    # c+ _& l" A4 E/ g2 L
  8552.     (set_tile "style" style-idx)' W# C7 ]* @' v( A2 N( ^3 e
  8553.     (setq style-list (tblsearch "style" tstyle))6 l* P- S% x& t7 E% G
  8554.     (setq shght (cdr (assoc 40 style-list)))
    % J' n7 B) W6 A" J" [9 r8 k
  8555.     (if (/= shght 0)
    / u" W" J8 A% w" Z# ]* i5 A
  8556.       (progn1 l- K8 O5 T" L% }0 g% X
  8557.         (setq hght shght)6 O* G9 M! {% B8 q5 J+ |
  8558.         (set_tile "hght" (ai_rtos hght))# C8 k! B! {5 l# ?% l/ C( E
  8559.       )+ R9 Z# @* {4 [: W; L3 B0 o' J0 d
  8560.     )
    2 I( K* |9 C3 j) j
  8561.     (setq wid (cdr (assoc 41 style-list)))
    : i, w7 Y0 h) u" q+ w, c! ~* ?
  8562.     (set_tile "wid" (ai_rtos wid))4 Z1 ?) X  N  h* t5 ?4 Z
  8563.     (setq obl (cdr (assoc 50 style-list)))
    ! f  z8 Q6 @: B' G3 D  t
  8564.     (set_tile "obl" (ai_angtos obl))
    7 t) Z1 _* G7 P/ |
  8565.     (setq bk-up (cdr (assoc 71 style-list))): f5 e, Q$ Z, D9 l/ _5 T
  8566.     (if (= (logand bk-up 2) 2)
    2 c8 t& E) I5 |; z  _. y; W( ]
  8567.       (set_tile "bkwd" (itoa (setq bkwd 1)))
    3 ]0 |3 [/ s4 s2 x( s% f) _6 Q+ C
  8568.       (set_tile "bkwd" (itoa (setq bkwd 0)))
    . }- P) R/ S# G
  8569.     )0 c) R1 c+ y/ C! f4 p/ m
  8570.     (if (= (logand bk-up 4) 4)
    # w# R. v+ h1 m; m6 \2 ?) g
  8571.       (set_tile "upsd" (itoa (setq upsd 1)))
    7 s  ]4 E1 m- r; A2 ^+ V* ~
  8572.       (set_tile "upsd" (itoa (setq upsd 0)))
    : R0 F- a" C9 s8 O( V
  8573.     )8 H2 T. Y4 a- x6 k7 G
  8574.   )
    4 f9 u3 D# ~# }) f9 J3 f
  8575.   ;;! u$ }- o1 o2 q- S% C' Z2 J0 x2 \
  8576.   ;; Justification action.  Set vertical and horizontal alignment variables,: `* d, i" W( [
  8577.   ;; grey out rotation and height if alignment = "aligned", grey out rotation
    9 b0 a- S5 v" Y1 X  {, Q% }" G
  8578.   ;; if alignment = "fit".5 z6 d3 K/ ]& [* a0 H- I: o
  8579.   ;;5 l% o' |! d& V
  8580.   (defun jlist_act (index / templist)7 @+ ], J, a: d. Y* j
  8581.     (setq just-idx (atoi index))
    3 M" o& V6 v! J5 E, H& B
  8582.     (cond9 d+ ?- V- @# Z8 P; j% P
  8583.       ((= just-idx 0) (setq va 0 ha 0))
    . Y* R. F( U) S5 s# ~1 K+ z
  8584.       ((= just-idx 1) (setq va 0 ha 1))" c" u, e. a0 Z
  8585.       ((= just-idx 2) (setq va 0 ha 2))
    . ^) F; }& z$ d- T  O$ N7 z
  8586.       ((= just-idx 3) (setq va 0 ha 3))
    * b* _+ E* E& I/ d+ f
  8587.       ((= just-idx 4) (setq va 0 ha 4))
    3 o) u) S' v6 _* t( Q
  8588.       ((= just-idx 5) (setq va 0 ha 5))
    % h! }2 A8 o6 O. m
  8589.       ((= just-idx 6) (setq va 3 ha 0))
    2 K8 n* @" w# _6 l
  8590.       ((= just-idx 7) (setq va 3 ha 1))4 v: [: L" {: O8 s5 J5 S
  8591.       ((= just-idx 8) (setq va 3 ha 2))+ |3 w$ n- k! l" w! @% Y9 ]
  8592.       ((= just-idx 9) (setq va 2 ha 0))
      t6 f- j. E$ H$ g% a. m
  8593.       ((= just-idx 10) (setq va 2 ha 1))
    0 T2 X# g- l2 Q
  8594.       ((= just-idx 11) (setq va 2 ha 2))
    0 ?5 k8 z" _+ z$ F3 |
  8595.       ((= just-idx 12) (setq va 1 ha 0))
      r& u( j9 ?1 S! b
  8596.       ((= just-idx 13) (setq va 1 ha 1))5 @# b) d" `4 S: l
  8597.       ((= just-idx 14) (setq va 1 ha 2)); x3 y- g# U0 l, @
  8598.     )6 A" f0 i# h! W
  8599.     (if (or (= ha 3) (= ha 5))  ; If Aligned or Fit text
    2 F1 p+ q1 Y. F* `- G1 g
  8600.       (mode_tile "rot" 1)
    + g' x: z! Y0 Q; x/ g) H$ F
  8601.       (mode_tile "rot" 0)
    / [" ]) Y0 E9 O+ q+ P  h
  8602.     )# a  F0 s4 u! _/ S4 Y3 W$ A
  8603.     (if (= ha 3)                ; If Aligned text
    9 j+ ]4 j" \: F7 J4 M6 T$ Y) B$ S
  8604.       (mode_tile "hght" 1)# K& N  M& [1 L# O8 V3 U
  8605.       (mode_tile "hght" 0)" C& x' U( ?! G$ Z/ k* u
  8606.     )* s8 i8 R8 R0 E! O1 x
  8607.     (if (= ha 5)                ; If Fit text
    % o6 N$ W/ W" B2 v3 j
  8608.       (mode_tile "wid" 1)6 K" Y5 l' H3 s8 w
  8609.       (mode_tile "wid" 0)1 @5 ^4 t1 U# {* ]( A2 P
  8610.     )
    / l' B3 K7 H  k0 i( ~6 L6 y) T6 [
  8611.     ;; Reset rotation and height if changing from aligned.2 ~4 ]6 u5 x! Q
  8612.     (if (and (= ha-prev 3)  (/= ha 3))7 u" c3 j: ^+ e$ z, A
  8613.       (progn
    - v& M9 G. j  |# {2 t. d
  8614.         (set_tile "rot"  (ai_angtos (setq rot 0.0)))8 V* E4 g; F& B# @" L/ c8 S
  8615.         (set_tile "hght" (ai_rtos (setq hght 1.0)))
    6 G1 b2 m9 p3 b
  8616.       ), ~/ Z! }3 s' {& M+ d
  8617.     )
    ) ~$ v2 s: D) \4 W& `! x, b

  8618. - h- s% {4 v) ]7 u6 f! v
  8619.     ;; Reset rotation and width if changing from fit.
    . e- @- e% R! m- e
  8620.     (if (and (= ha-prev 5) (/= ha 5))
    ) i! g/ Y" G# O2 m& z: m
  8621.       (progn* _+ r" s& q! o
  8622.         (set_tile "rot" (ai_angtos (setq rot 0.0)))' f0 `3 ~0 |% Q0 Z
  8623.         (set_tile "wid" (ai_rtos (setq wid 1.0))): k3 T! R& m' e0 x2 Z) Q
  8624.       )
    , k5 B; b$ f# C* k8 |! ^( p
  8625.     )
    . `1 r; l$ M" o& F% i
  8626. * D& w3 A& R5 M' B# e+ [7 A! a
  8627.     (setq ha-prev ha)           ; update ha-prev for next time( N& Z2 [2 W/ S2 x2 [5 p6 c( i
  8628.     (setq just-idx (itoa just-idx))+ u) @; X8 k) P
  8629.   )! }# H+ }2 b  N4 Y( e
  8630.   ;;
    # u3 h/ ^, J3 B; t
  8631.   ;; Set intitial alignment setting based on vertical and horizontal alignment  m" v3 b6 E( @4 B: ~2 `, N
  8632.   ;; bit codes.: `) N+ U  o4 t, r, b3 M
  8633.   ;;
    ) h3 K9 d. @1 {  \; F8 {
  8634.   (defun set_just_idx ()& r; f3 k# N9 H- O, o) i
  8635.     (cond" |4 Z: Y+ c& z/ V# q
  8636.       ((= ha 0)             ; Horiz alignment = Left
    + e* t# {. A) X1 w3 U1 I% O
  8637.         (cond
    ) L, r# _2 a4 c2 v4 o* H
  8638.           ((= va 0) (setq just-idx "0"))- o) G- F) D: R4 C/ b6 Y& N' k8 D$ R
  8639.           ((= va 1) (setq just-idx "12")). t. o# z1 z, M* U* E9 b
  8640.           ((= va 2) (setq just-idx "9"))
    * a# E/ f. t$ B: c# w1 l
  8641.           ((= va 3) (setq just-idx "6"))
    " e9 R3 {! A% r* R/ ]  u
  8642.         )
    $ ^/ D# m$ v! l
  8643.       )
    2 b: {. f  t# |* O% n( z/ F
  8644.       ((= ha 1)             ; Horiz alignment = Center
    1 O; {; g; F& K6 s2 C
  8645.         (cond* J" S. B0 [; Z' ~+ y9 r) K+ {
  8646.           ((= va 0) (setq just-idx "1")). [7 v1 y2 C" F: }
  8647.           ((= va 1) (setq just-idx "13"))! ?+ W3 P' V) D3 e/ p
  8648.           ((= va 2) (setq just-idx "10"))
    5 Y) ?/ Y, q8 p5 W/ H
  8649.           ((= va 3) (setq just-idx "7"))3 ~0 |. Z) Q1 S/ n& G* B
  8650.         )" j# W3 }+ i; r8 v) S7 M: P
  8651.       )
    ) ~8 v- k1 r+ s" ?
  8652.       ((= ha 2)             ; Horiz alignment = Right
    4 x6 n% j$ J" M' @
  8653.         (cond
    4 F( g9 s: a% W# T! Q
  8654.           ((= va 0) (setq just-idx "2"))
    $ w% y2 o, \3 C- g
  8655.           ((= va 1) (setq just-idx "14"))
    2 r, w" q6 z8 \- f4 E* U5 L( {
  8656.           ((= va 2) (setq just-idx "11"))! I  e9 y+ W) F9 a' {3 ^' ?
  8657.           ((= va 3) (setq just-idx "8"))
    , E" e/ j8 `' p# g) l
  8658.         )
      O9 p8 z* O: T
  8659.       )
    * K. t- F" p& ^; Y- H
  8660.       ((= ha 3) (setq just-idx "3"))   ; Aligned
    . j2 f6 p# y/ a/ y- V9 ^
  8661.       ((= ha 4) (setq just-idx "4"))   ; Middle
    & o1 ?* L; B, y  _
  8662.       ((= ha 5) (setq just-idx "5"))   ; Fit: ]2 f% p6 J8 N$ ~7 W8 p
  8663.       (T (setq just-idx "0"))5 J) X: R& U2 q' h+ |
  8664.     )
    / ~0 t4 Y1 o. G: `
  8665.     just-idx
    4 L) g; U9 z0 n% {8 F
  8666.   )
    & E; a; S7 [" @* U

  8667. 5 n1 U' @; _2 [
  8668.   (defun modify_text ()
    ; \0 P( J+ ?5 [
  8669.     ;;  insertion point) f# F/ {0 d8 X  A9 Z( K4 ?
  8670.     (setq showpt (list x1 y1 z1))
    & r! K$ J% }$ M$ V8 l
  8671.     (setq bit-10 (trans showpt 1 ename))( B, N8 y4 i% W) {0 v
  8672.     ;;  alignment point
    ' {( p0 Z) J" W& J0 f) S# b+ `, \/ Q
  8673.     ;;  for 'Aligned' or 'Fit', alignment point must be different
    % W' E* u& N. J( b8 r9 x7 t5 H& s6 \
  8674.     ;;  for all others, use insertion point/ K, Z1 o. m- J. I; ^
  8675.     ;;  (ACAD will recompute insertion point)
    " }7 p' r% b6 m+ U2 `" Y
  8676.     (if (or (= ha 3) (= ha 5))
    & n. y/ A" @" i( |; ^* o; f4 ^4 X
  8677.       (progn8 u3 V0 V) G! z8 f& H+ k! y$ g
  8678.         ;;  if no alignment point, fabricate one
    2 s7 u/ ?4 A" ?) d
  8679.         (if (not alipt)% K9 @0 f) B/ P* f4 [- @
  8680.           ;;  add text width to insertion point- _' H, V! s% z: r
  8681.           (setq alipt' B; g" k) y- ]2 A; Y! @& P7 G
  8682.             (list (+ (car showpt) (car (cadr (textbox elist))))7 w- d% C, m. P1 {! l2 R$ [  h  f4 b
  8683.                   (cadr showpt)
    . u! Z4 q( G1 F6 m# \4 V
  8684.                   (caddr showpt)" F. c4 N6 O6 I1 c/ H; e. f
  8685.             )# L2 i' ~5 Q6 t: V, u/ e
  8686.           )
    6 J: j8 D$ P$ }; U
  8687.         )2 P; l, W5 A; q8 [% X) ~: ^
  8688.         (setq bit-11 (trans alipt 1 ename))* v8 }3 x7 j6 B2 _
  8689.       )# u# W' r8 ?' t" ?+ P3 }( n
  8690.       (setq bit-11 bit-10)( f; ?; w9 y; Y: Y; |
  8691.     )
    ( o; h0 \7 U- E) O3 L
  8692.     (modify_properties)
    4 g9 n. w! j1 v) Q. t
  8693.     (tempmod tstyle 7 nil)  d2 E: J$ q$ [  @% G* M
  8694.     (tempmod bit-10 10 nil)  E  w. V+ M9 Z" u$ C  l2 ]7 H
  8695.     (tempmod bit-11 11 nil)
    & c( |' v3 c5 |5 e+ D; W
  8696.     (tempmod text 1 nil)! }7 \$ e) K! B4 o
  8697.     (tempmod hght 40 nil)
    ! V5 N4 |% O6 }/ ?0 i, H9 z% f
  8698.     (tempmod wid 41 nil)
    9 y# N, O2 \3 ?; Y9 j1 _3 y
  8699.     (tempmod rot 50 nil)4 ^1 t# y7 H6 w  p: N5 j
  8700.     (tempmod obl 51 nil)
    # i5 H# r5 w6 _8 e/ v' ^/ ?
  8701.     (setq bk-up (+ (* bkwd 2) (* upsd 4)))
    4 ]+ |9 p+ P" Y
  8702.     (tempmod bk-up 71 nil)
    % k, \9 }3 k. n; B3 k9 W
  8703.     (tempmod ha 72 nil); g4 w1 R4 Q0 d9 U0 _1 }
  8704.     ;; Attdefs use 74, text 73
    $ \# d8 k; l+ q4 ~
  8705.     (if (= etype "ATTDEF")
    ! ^! W- [) p, Y4 {% w& x- M
  8706.       (progn& Q# U& J4 r; Z3 ]
  8707.         (tempmod attag 2 nil)# M- `, z5 s1 Y& j( K" G
  8708.         (tempmod atprompt 3 nil)0 |5 Q) X- v2 J3 ?
  8709.         (setq icvp (+ inv (* 2 con) (* 4 vfy) (* 8 pre)))3 M; l1 V$ U. U" C7 v) C1 o/ I
  8710.         (tempmod icvp 70 nil)% }! I8 ~4 z* n) X
  8711.         (tempmod va 74 nil)
    # S1 ?' y4 ?2 \+ B9 q% Z
  8712.       )+ o$ Y, h7 R! a8 h% m! N
  8713.       (tempmod va 73 nil)! n8 D/ m- P' t
  8714.     )
    ) t( e) ~: D6 |2 Z7 f! n% z1 y
  8715.     (entmod elist)% {& i. x' x# ^
  8716.   )0 l- M+ F, B8 U) f7 |
  8717. 3 y/ \+ N5 e  x5 m8 t
  8718.   (defun ddtext (/ 2ndpt slist i)
    3 y8 I4 G& n( r4 B
  8719.     (if (= etype "TEXT")6 p7 R' Q1 {4 h' l! s  W! G) N
  8720.       (if (not (new_dialog "ddtext" dcl_id)) (exit))
    ) o4 I+ `3 a& X. i! W, ?/ I
  8721.       (if (not (new_dialog "ddattdef" dcl_id)) (exit))
    - b# _* W# p- K1 v
  8722.     )% {  e+ J6 E* {8 D5 r0 f  s
  8723.     (set_tile_props)
    3 k8 x: P% K/ H) P# q# M1 j
  8724.     (set_tile_handle)/ d) _8 L$ o% i) b
  8725.     (set_tile_text)
    " G( G1 C% K# u! D
  8726.     (set_tile_tag)
    , l6 w/ g9 y# L# M& Y
  8727.     (set_tile_prompt)7 E8 C2 u! a% A  N6 s% \7 C
  8728.     (set_tile_hght)- Q' f: l' ^- P0 L9 n
  8729.     (set_tile_wid)
    ! V5 f) }" K7 k/ s  H
  8730.     (set_tile_rot), n) q+ k  _4 u/ ^! s" c- E
  8731.     (set_tile_obl). S% K# i# Y/ l! N8 e: t2 c. e; B
  8732.     (set_tile_bk-up)
    9 }6 C3 l$ U9 C! O+ N9 s
  8733.     (set_tile_icvp)
    , Y+ y- W/ u) R( ]
  8734.     (set_tile_style)
    : ^3 P# e' I5 c& P: \
  8735.     (set_tile_just)! w( g, j, E5 Y8 M: e& ?
  8736.     (setq pt1 (trans (cdr (assoc 10 elist)) ename 1))
    : Q0 |( |* M6 G0 ^7 J8 u9 N# [% }
  8737.     (if (not (assoc 11 elist))
    1 Y% X5 n. m) S! f; y5 ~; d) g
  8738.       (progn (setq pt2 pt1)$ J& ]2 x* f. I4 y- _, g# ~- Q9 W
  8739.         (setq elist (cons (cons '11 (cdr (assoc 10 elist))) elist ))% N8 N* z) y- Z: }% W4 r
  8740.       )# Y* c7 m& s* s8 C! I( g8 ~
  8741. ;;(trans '(0.0 0.0 0.0) ename 1))7 U5 H& D# J' V4 |) z9 C
  8742.       (setq pt2 (trans (cdr (assoc 11 elist)) ename 1))
    ' P8 E: e# I0 L, K/ s' ^$ G( z
  8743.     )8 P. O/ y$ X% ?) j% p4 u
  8744.     (if (or (and (= ha 0) (= va 0))% P8 K1 Q. q' F
  8745.             (= ha 3)
    7 u) q# ]* }0 {
  8746.             (= ha 5)9 l( T+ T4 m7 z" E* Q
  8747.         )
    9 _) R  G" G1 Z! M% {# g
  8748.       (setq showpt pt1)
    & g. |, ?7 m/ w8 r+ Z( z0 \7 \& k
  8749.       (setq showpt pt2)# r4 F6 U/ A' S' a, {
  8750.     )
    8 _% j5 }+ [' R, s6 N! n
  8751.     (if (or (= ha 3) (= ha 5))
    2 p* V# m1 Y" c! E& u% Q+ B
  8752.       (setq alipt pt2)  I* o7 t/ h; j5 P6 A& n4 r
  8753.       (setq alipt nil)
    1 B8 z0 P4 ^# }, k+ L- F  F+ ]
  8754.     )! j4 q: {, K9 O! f9 w7 d: L( _

  8755. . u6 V; v: @, q' x
  8756.     (set_tile "x1_pt" (ai_rtos (setq x1 (car showpt))))4 T6 s* \2 U$ U2 s3 A+ \$ Y
  8757.     (set_tile "y1_pt" (ai_rtos (setq y1 (cadr showpt))))
    5 \7 a# I9 ?3 P3 T
  8758.     (set_tile "z1_pt" (ai_rtos (setq z1 (caddr showpt))))1 z. G8 R1 _8 p
  8759. , s$ L4 {) C2 t5 S0 b
  8760.     ;; Define action for tiles
    : K- C- @0 ~% T# y+ z; Z' d
  8761.     (set_action_tiles)
    . `: B2 ?0 G, C! t  h$ I
  8762.     ;; Set focus initially to the text edit box.
    $ \8 e- ^6 c' v/ O6 H& x) P' b+ a
  8763.     (if (not i) (progn (mode_tile "t_string" 2)(setq i 1)))- _+ p6 ^/ H, |" V# {3 C
  8764.     (setq dialog-state (start_dialog))
    , E8 p- ~% T% C; i% W
  8765.     (if (= dialog-state 0)
    * ^, O1 D2 D, s/ _2 a/ @
  8766.       (reset)
    ) A5 }4 S- _* }0 `" z5 q
  8767.     )8 D$ E8 K9 `  h) b3 Y
  8768.     (if (= dialog-state 1): H$ a5 B+ |9 Y9 ]- J# @: M
  8769.       (modify_text)* m) Y4 u) n) t2 a6 b1 |
  8770.     )0 i7 |' G; q# h
  8771.     (if (= dialog-state 3)" l. ~$ m3 Y  Q5 Z, I- G% v
  8772.       (progn
    $ u. \7 l1 T5 n
  8773.         (modify_text)5 e) p, ^) c; y# O3 Q
  8774.         (if (or (= ha 3) (= ha 5))
      K& O) |, t' c4 \" _7 `
  8775.           (progn3 n7 ]( C1 F  [/ W6 ]  p
  8776.             (setq showpt (getpoint (list x1 y1 z1) "\nFirst point: "))
    . r) F" p. M! A* ^  M! C& I
  8777.             (if (not showpt)
    8 h8 G/ V7 ?$ v6 H8 A
  8778.               (setq showpt (list x1 y1 z1))! f/ \& p6 W1 u# r3 D
  8779.             )1 i# T- Q7 i* m- u% `0 O# ]
  8780.             (setq 2ndpt (getpoint showpt "\nSecond point: "))' B  K& _8 @1 |6 d# f
  8781.             (if 2ndpt% Z& ]0 o& @' D) ]4 \2 D* s& k/ C
  8782.               (progn
    2 _! r" t* ]# g6 m+ R* j) X
  8783.                 (setq alipt 2ndpt)9 O; ]) j& K! D" |8 W5 D! k" }
  8784.                 (tempmod showpt 10 1)
    , ]. v% U& D2 h/ H9 X
  8785.                 (tempmod alipt 11 1)( n; [0 W% o* A
  8786.                 (entmod elist)9 T1 n* C( N/ j6 [. A/ d
  8787.               )* a0 Q1 d4 V: Z- X0 \$ i
  8788.             )
      ]& V( ^+ I4 {  m; J. S
  8789.             (setq elist (entget ename))
    6 n' H5 |* `( ~$ H- W
  8790.           )
    6 o* b# U( Z+ e2 {0 |  @3 \
  8791.           (progn( y/ {" s1 o2 q, b  G5 r& W; O! l
  8792.             (setq showpt (getpoint (list x1 y1 z1) "\nInsertion point: "))& t, I8 P: y2 x& ~0 k$ ]
  8793.             (if showpt& C5 E7 w. _% U& f+ T3 m9 J
  8794.               (progn
    + u0 H& o/ ^' R5 v
  8795.                 (if (and (= ha 0) (= va 0))
    / J& x- F& x' n4 M: t+ O3 g0 _
  8796.                   (tempmod showpt 10 1)4 X. d! u/ O, H# c- k* r, t
  8797.                   (tempmod showpt 11 1): t, m7 F! @# U9 a# b) O& J6 f# I+ J
  8798.                 )
    : t" W/ V( \9 H  s9 c
  8799.                 (entmod elist)
    ! @1 U7 O1 R: C0 y% Z+ g# m
  8800.               )0 w& H  q4 w1 \) S) ?/ @1 u, a
  8801.               (setq showpt (list x1 y1 z1))  o8 K+ l" w$ B( q/ a% P
  8802.             )
    ' G" p- B/ h0 T+ `$ Y
  8803.           )* O' M; I% [$ |3 Q+ I. e. N$ c
  8804.         )
    5 s, z7 G7 s- i1 m
  8805.         (ddtext)% ]) P( ~+ t/ V! {. @% u6 F9 ?
  8806.       )
    8 W! b; X( z- X2 ]/ z, q& C
  8807.     )
    $ F$ ~" L2 e. a- E) x
  8808.   )
    , v; L  U& x6 f4 f* b

  8809. 7 ]" K- O* Y7 G' T5 b4 O2 @
  8810.   ;;' T* k! p  b* P
  8811.   ;; Modify MTEXT
    1 ]4 i2 j) M3 F- X( q. f7 X
  8812.   ;;
    " P# H% c9 d4 b' A* n6 ^
  8813.   (defun modify_mtext ()
    ! ^# H9 a6 j. i; C  J: g" l' N6 |
  8814.     (modify_properties)
    7 z" b, p- F+ K$ O
  8815.     (setq pt1 (list x1 y1 z1))
    9 H! F! W6 e8 I6 K% I5 [/ f
  8816.     (tempmod pt1 10 0)
    " k5 Y! Z7 C5 b" R
  8817.     (tempmod text 1 nil)$ z! v! S3 a& j; q9 C* Z
  8818.     (tempmod tstyle 7 nil)# Q( ~. P" F3 Y) i1 a
  8819.     (tempmod just-idx 71 nil)
    7 F& l* X1 c# s+ {5 g) f+ Q
  8820.     (cond
    : L; z8 B: ]$ {! ?: L" b; r% J
  8821.       ((= dir-idx 0) (setq dir-idx 1))5 Y5 ?- _: \& d" a: s
  8822.       ((= dir-idx 1) (setq dir-idx 3))
    + H% ~1 @) ~1 t- e
  8823.       ((= dir-idx 2) (setq dir-idx 5))
    ) I& H" b5 c6 N" l/ h* o
  8824.       (T (setq dir-idx 1))
      a$ O+ V& }4 V6 o' N$ `6 c
  8825.     )2 T3 G/ @2 Q- ?0 G0 p" v$ m: f
  8826.     (tempmod dir-idx 72 nil)" T* ^1 A! E# _2 Y
  8827.     (tempmod hght 40 nil)
    ) z/ G, M2 Y8 J  [* s5 m+ C5 {
  8828.     (tempmod wid 41 nil)) H4 D3 L% w8 g/ e! z% m! g9 y
  8829.     (tempmod rot 50 nil): z( T+ g" L2 a5 R* ^
  8830.     (entmod elist)3 F- S0 O8 ^- z9 @) @# y  P; g
  8831.   )
    4 `0 u2 A( M8 v: t- |3 |! t

  8832. ! F7 Z- W, G8 h- {! X# n2 J" ^# L5 z
  8833.   ;; Set MText text style
      N8 l  O, \7 M! m! R8 \3 B
  8834.   (defun MText_style (index / style-list); h$ n4 F+ y+ d+ c8 |5 ?
  8835.     (setq style-idx (atoi index))
    3 ^. W$ w, _/ Z) n& |) A' m9 M
  8836.     (setq tstyle (nth style-idx slist))
    . p! B% }7 C6 n
  8837.     (setq style-idx (itoa style-idx))
    " I. Z* `8 y* O! v: [) h- k4 S
  8838.     (set_tile "style" style-idx), W/ ]8 i2 |6 d% D- w- M
  8839.     (setq style-list (tblsearch "style" tstyle))
    ) H# Y" l+ B0 F+ C' ?
  8840.     (setq shght (cdr (assoc 40 style-list)))
    / ]% [' L; Q8 x0 G- y  g5 J
  8841.     (if (/= shght 0)
    ! @- O2 E5 L& @7 I( n
  8842.       (progn: `  c' u1 w6 y6 r/ a; ?
  8843.         (setq hght shght)
    % ]5 u6 i; C, {5 C
  8844.         (set_tile "hght" (ai_rtos hght))
    4 _' m* v. O- b, }. A4 T
  8845.       )
    0 q6 Z! u, q5 v8 u0 x. d
  8846.     ). @# h* A! f. h# p0 _
  8847.   )
    / t! A) n* q2 t, m' c9 b! z7 i

  8848. # y  K7 R0 o2 y0 f  X) `/ ]
  8849.   ;; Run DDEDIT on given entity, working around possible re-entrancy/ ]2 `) J; f6 g# @1 d) d
  8850.   ;; problems with MTEXTED
    1 N& j# o2 q: w+ y! K
  8851.   (defun safe_ddedit (ename / orgMTextEd work)4 r' U; @3 G6 C7 k9 b
  8852.     (setq orgMTextEd (getvar "MTEXTED"))
    0 u9 }) ^# @, R, C3 j( c# j. h
  8853.     (setq work orgMTextEd)
    5 R* g: q4 }' P+ S( p( o
  8854.     (if (= ":" (substr work 1 1))& K/ o$ h0 p7 Q& P
  8855.       (progn
    5 }+ j5 E, ~; J
  8856.         (while (and (< 0 (strlen work)) (/= "#" (substr work 1 1)))2 [; Z: P8 p. k+ N! Q4 K: M
  8857.           (setq work (substr work 2))
    $ G, {' y1 ^5 R1 ]( B" K$ m
  8858.         )
    , Q* L3 M% t# p# j" ~) P1 x. _
  8859.         (if (= "#" (substr work 1 1))  b" G$ Q% f. Q/ f# z6 a' s7 W
  8860.           (setq work (substr work 2))( N) f' j1 l5 Q5 h. ^( y) Z; D
  8861.         )8 \7 `' C  H# _4 o  m6 ~: ]! ~
  8862.         (setvar "MTEXTED" work)* M8 N, r! Q) c6 i; ^
  8863.       )
    6 d+ e$ u' D" D. G
  8864.     )
    3 l" l( l* h& F$ {, F
  8865.     (verify_arxapp_loaded "acmted.arx") ;; make sure it's loaded...
    % ?, {5 c4 w" r! @3 E. V
  8866.     (command "_DDEDIT" ename "")' C8 p  U% J$ \# ]
  8867.     (setvar "MTEXTED" orgMTextEd)
    " |4 M1 _" b* e1 ]* S. x
  8868.   )
    $ I  w$ j+ O9 Z5 [+ I' q
  8869. 6 n9 n+ L6 X& |8 v; ^* p
  8870.   ;; Verify MText object width
    ( t, Z7 I' Q5 E0 V: f6 t
  8871.   (defun ver_MtextWidth (value)
    9 k2 a1 J/ _/ p: K3 v# o2 b+ b
  8872.     (setq value (distof value))
    ( R) `5 E1 |3 P& ]) l! E# }" `
  8873.     (set_tile "MTextWidth" (ai_rtos value))
    - w; C, B1 E( L( O/ J: @! l9 A
  8874.     (set_tile "error" "")6 L2 v5 e# \; }% a
  8875.     (if (< value 0.0)+ q. s& x4 f# R: y3 d. y
  8876.       (set_tile "error" "Value must be zero or positive.")
    $ I" Y" Q+ |+ s- z" @- l
  8877.       (setq wid value)4 J. l4 n9 u7 o2 S& G( p: j
  8878.     )
    / w4 s2 A8 G8 b/ v$ |- d- g, i
  8879.   )
    $ B! z; g/ X, ]
  8880. " }0 @+ D- K* z0 C' V# J3 F7 K/ ^* a
  8881.   (defun ddmtext ( / gc3)
      M& l" k8 ?& M7 M; A% J8 A. A8 \
  8882.     ;; Get dialog
    : x' D- y3 _( j. }# A
  8883.     (if (not (new_dialog "ddmtext" dcl_id)) (exit))8 X2 o6 _9 V# W1 o4 |/ ]% T1 ?
  8884. & r$ q. v9 o2 j# |7 j  J
  8885.     ;; Load list boxes
    6 r* b! o) A# J) K2 K# G, p
  8886.     (start_list "MTextJustify")
    3 r$ t; _& w  j+ D; [( f
  8887.     (mapcar 'add_list '(
      K: v4 K& h5 w5 N
  8888.                         "Top Left") I/ H0 m. x2 s; U+ t( g7 s0 p
  8889.                         "Top Center"
    9 \) m) Y2 w4 z: z
  8890.                         "Top Right"
      k. s: \: I4 W- G* r( w' ]$ g# p
  8891.                         "Middle Left"+ t; T8 O/ U0 M) L. A" v
  8892.                         "Middle Center"
    " M- Z$ f' B. j; J- T( N' q
  8893.                         "Middle Right"
    , N4 w. a  J$ w6 R' l( ^
  8894.                         "Bottom Left": g' u+ x$ w5 x7 ~/ I
  8895.                         "Bottom Center"
    5 _9 [1 s% K4 G2 ~' E/ @
  8896.                         "Bottom Right"
    6 q# N2 X* H. V1 I
  8897.                        )
    4 Y5 i/ d2 _: P5 O9 }& I7 q
  8898.     )" c# m6 K! R! a0 _
  8899.     (end_list)
    2 I5 d7 G- R' w3 k. ~6 A& N

  8900. 1 n; O) g/ {! u- J3 G, U! X
  8901.     (start_list "MTextDirection")
    ' }! U3 u# R5 J) o+ ^# H3 g
  8902.     (mapcar 'add_list '(
    ; h9 u* @, w- K* l
  8903.                         "Horizontal"
    $ n' c; ?% x$ ]' f  g  U- K
  8904.                         "Vertical"7 |5 U& P% t' S2 [; X9 P  n
  8905.                         "By Style"
    0 {; w9 L% c$ m4 Z4 K
  8906.                        )
    6 D& c! |0 s( i- {- d% B& q
  8907.     )/ t* t3 i8 D( R$ ]; A$ M$ T2 u
  8908.     (end_list)
    $ _5 ]5 B9 a- o7 O" r

  8909. 2 _  l' r# b5 m1 ]* u, u" |) B' O
  8910.     ;; Set initial tile values+ L6 ^( W4 H5 ?  |$ g) O  m
  8911.     (set_tile_props)3 \- n/ i  ^5 }
  8912.     (set_tile_handle)4 C  D1 t& M$ j  }) e$ X: a
  8913.     (set_tile_pt1 0)
    / d$ X5 J; z: U& [+ n
  8914.     (set_tile_style)6 A6 _5 _" \" y) @# h2 K( P
  8915.     (setq just-idx (cdr (assoc 71 elist)))
    ; G" p$ A$ O" Y. w. O( X* R- ^
  8916.     (set_tile "MTextJustify" (itoa (1- just-idx))): r- f0 C  M) X; |* L
  8917.     (setq dir-idx (cdr (assoc 72 elist)))) \' R5 w& U0 d' E7 p
  8918.     (cond- {+ c; l0 M4 C0 U7 W4 Y- w( c
  8919.       ((= dir-idx 1) (setq dir-idx 0))
    4 k. s1 m, ^% J, t# ]
  8920.       ((= dir-idx 2) (setq dir-idx 0)). J/ \) x4 ^" L( }3 c" d
  8921.       ((= dir-idx 3) (setq dir-idx 1))3 A8 L' t; z7 i6 a$ f0 ?
  8922.       ((= dir-idx 4) (setq dir-idx 1)), p$ K1 V4 D6 A+ H" a
  8923.       ((= dir-idx 5) (setq dir-idx 2))
    : Z' d/ D& D' T/ S
  8924.       (T (setq dir-idx 0))0 l( `- ~9 F: X! y# F
  8925.     ); p1 T' ?# b* C, u( Q7 s4 R
  8926.     (set_tile "MTextDirection" (itoa dir-idx))
    6 P* b) K/ j% W7 h; @
  8927.     (set_tile "MTextWidth" (ai_rtos (setq wid (cdr (assoc 41 elist)))))
    ( o- Z- t+ Y! p9 F* o4 p! T' K& w
  8928.     (set_tile_hght)
    & D  G' I9 t% N/ O/ C, `
  8929.     (set_tile_rot)& F  j' N4 h. v+ z7 N7 k
  8930. " D& e, T" s3 [& s) `% l
  8931.     ;; Set edit box, disable if too long
    5 E4 C& ?6 ^7 A
  8932.     (setq gc3 (cdr (assoc 3 elist))$ P3 B, ~8 e& i, ^2 O$ X. k
  8933.           text (cdr (assoc 1 elist))), O, O5 p9 a0 j: S" c
  8934.     (if gc3
    . G( T1 P5 [( `
  8935.       (progn  ;; Text is over 250 chars, disable edit tile
    1 \4 i; V4 J* |8 F
  8936.         (set_tile "t_string" (strcat (substr gc3 1 25) " ..."))! D  q' T  o9 c$ [: q: y
  8937.         (mode_tile "t_string" 1)% N# h& x6 G+ L$ q. ]
  8938.       )/ W  J* f  R& C! i+ J. a
  8939.       (if (> (strlen text) 80)
    # \' Y+ W( W5 g2 _9 T8 r# E
  8940.         (progn  ;; Still too big
    # y, W4 j% ]( d8 u) `- ]$ k
  8941.           (set_tile "t_string" (strcat (substr text 1 25) " ..."))* M) a2 n3 C9 _
  8942.           (mode_tile "t_string" 1), g! |* Z# `/ p3 S1 T
  8943.         ), t# b/ z9 @5 M) _# I+ f
  8944.         (set_tile "t_string" text)4 q9 v( s. Y' Y$ d! h  _
  8945.       )
    / L" F) v3 {5 X# x) W: ^
  8946.     )
    8 Z$ z! U( g- [7 j

  8947. 3 w! r- T/ U) ^3 @: v, D: @
  8948.     ;; Define action for tiles
    3 C  Z8 X/ O5 |$ U5 H) u
  8949.     (set_action_tiles)2 r% d# W! Z9 z$ t! z7 |
  8950.     (action_tile "style" "(MText_style $value)")- ~% H8 L% {8 \' h' E4 S
  8951.     (action_tile "MTextWidth" "(ver_MtextWidth $value)")- @1 k" \  s" {4 R. g/ C
  8952.     (action_tile "MTextEdit" "(done_dialog 4)")& l1 u$ z# [0 k4 J! Y; |5 G/ d
  8953.     (action_tile "MTextJustify" "(setq just-idx (1+ (atoi $value)))")
    5 g" e! s( ]7 x* B
  8954.     (action_tile "MTextDirection" "(setq dir-idx (atoi $value))")$ u+ o# D2 J/ ?9 \! a5 ]) Y

  8955. # L) g9 ^2 ~* f: v& k
  8956.     ;; Set initial focus to text edit box.+ Y  o  A" l, b* r+ D/ @) x  p) ~
  8957.     (mode_tile "t_string" 2)
    , G  h% B9 @+ p6 }. h7 `

  8958. 5 p( C: `6 i; S
  8959.     ;; Run the dialog, M% P% ?9 l' v  K8 G$ H
  8960.     (setq dialog-state (start_dialog)). D( p* P$ p) O& m" N. @( @0 `/ D( \
  8961.     (cond- E: _) I3 X  b7 R
  8962.       ;; Cancelled - restore saved data6 O2 g7 n  f3 w. P
  8963.       ((= dialog-state 0) (reset)), r! j+ ?$ y  X% N0 S
  8964.       ;; OK - save new data
    2 K( Q5 E/ Y% _3 B2 x
  8965.       ((= dialog-state 1) (modify_mtext)). P% M0 w' u  Q7 X* a( b3 h
  8966.       ;; Pick new insertion point; B" Z! n- {- p( |+ `
  8967.       ((= dialog-state 3)
    , P7 j' n! F! S' j% Z
  8968.         (modify_mtext)9 O& h1 X+ H$ y" @0 x$ k5 F
  8969.         (setq pt1 (getpoint (list x1 y1 z1)  "\nNew Insertion Point: "))
    2 o2 I! ?% x* b! s: B' h4 d
  8970.         (ver_pt1 0)
    8 \. G/ S& R6 T+ q. L' k$ u
  8971.         (ddmtext)) z* V+ h* j7 ?; l
  8972.       )) ?8 ?. c5 h' z2 Y: T$ P
  8973.       ;; Run full editor4 F4 a1 ~& R$ _8 a& `. e
  8974.       ((= dialog-state 4)
    9 l! j5 k( o) u; i. c
  8975.         (modify_mtext)
    + [$ d( ], j" i7 x. m! j# r: y' T
  8976.         (safe_ddedit ename)/ [1 `4 u  {0 M3 |1 M9 ~
  8977.         (setq elist (entget ename))
    & _$ ~4 |5 ^$ q$ D; z3 P/ a6 z0 Q
  8978.         (ddmtext)
    : W2 d+ j( k3 e6 v, z" e% e
  8979.       )
    0 o+ B% ~+ T3 y: J
  8980.       (T nil)
    9 I$ h& _7 a& T& I) u* ?3 ~( M* K
  8981.     )
    1 r* ?1 D' g# ?  U9 W- R
  8982.   )
    " Y3 K) t+ @5 h9 C, Z; d8 s

  8983. 1 ]2 ?+ U) e  |( I
  8984.   ;;
    ; B' F+ J$ m6 a( @% }+ R: ]* h/ N
  8985.   ;; Modify VIEWPORT
    $ b7 [( E- A6 k3 \. [
  8986.   ;;- r* R" p2 ]" f
  8987. * d. n4 o& ~9 ]3 |# ]
  8988.   (defun ddvport ()
    . x& p, o4 Q+ C, Y
  8989.     (if (not (new_dialog "ddvport" dcl_id)) (exit))
    ; \0 {, {9 v! S% Y
  8990.     (set_tile_props)
      p, M' O, F8 T! o2 W4 A
  8991.     (set_tile_handle)
    3 ^& k4 Y6 B2 f
  8992.     (setq vpt (cdr (assoc 10 elist)))) {$ M( l6 t; p$ G3 H! ?: m
  8993.     (set_tile "xtext" (rtos (setq x1 (car vpt))))
    ) x- D* \" U2 v# i
  8994.     (set_tile "ytext" (rtos (setq y1 (cadr vpt))))( n* }$ x# ]9 D/ D4 Q/ e. B
  8995.     (set_tile "ztext" (rtos (setq z1 (caddr vpt))))
    5 }% S4 P+ ]0 a; U0 N- _
  8996.     (setq wid (cdr (assoc 40 elist)))
    3 M* W; z! x7 m/ V: @6 G
  8997.     (set_tile "wid" (rtos wid))
    # O! L& @% ^$ `3 G- a9 j
  8998.     (setq hght (cdr (assoc 41 elist)))8 v0 e6 Y9 ^* H0 ^
  8999.     (set_tile "hght" (rtos hght))
    + ^8 Y6 a# @( l! p8 M  D
  9000.     (setq vpid (cdr (assoc 69 elist)))) b: u0 t  E8 K6 d6 ?/ Z: p
  9001.     (set_tile "vpid" (itoa vpid))( m3 m: d1 x" L3 K& Z- k0 H. f
  9002.     (setq on-off (cdr (assoc 68 elist)))
    4 H! f7 Z* h( p$ o6 i0 ]4 _/ R
  9003.     (cond/ f& f% a" E* w+ P
  9004.       ((= on-off 0) (set_tile "on-off" "OFF"))
    , y1 _, C7 g) T
  9005.       ((> on-off 0) (set_tile "on-off" "ON and Active"))
    : ~1 ~1 Q# c, }3 a6 o
  9006.       (T (set_tile "on-off" "ON and Inactive"))
    + o, h; d& f2 |' \
  9007.     )& H  D( z7 }# L3 b2 A
  9008. ) y8 t$ W" Q+ ^
  9009.     ;; Define action for tiles/ I4 U, y/ ?8 C3 E9 s8 o. z
  9010.     (set_action_tiles)& Q+ w; ]' ^# n  B  I6 v( t( R: v: L$ J
  9011. ' z1 @7 W2 O# Y# Y( f' Z7 o) C: O
  9012.     (setq dialog-state (start_dialog))
    ' s, U2 C, k7 T1 T
  9013.     (if (= dialog-state 0)
    : S& i: N, l* J5 T& u0 U  H$ Q
  9014.       (reset)# }; ]& a+ d! V! Z) s
  9015.     )
    # K6 T/ Q  W& b3 [" Y. o
  9016.     (if (= dialog-state 1)0 U; E" u5 G7 l& J4 P
  9017.       (progn
      |  D& p- X) i1 C* @$ z0 W
  9018.         (if (= ecolor   0) (setq ecolor "BYBLOCK"))
    7 K% [1 i* N4 T; C3 r# ?
  9019.         (if (= ecolor 256) (setq ecolor "BYLAYER"))
    & p' l7 T1 Z# _
  9020.         (command "_.chprop" ename ""  l- \1 Q* L5 u9 |
  9021.                  "_la" elayer6 i: @9 f4 Z7 k7 n" e  b. O4 o
  9022.                  "_c" ecolor ""
    : G4 a2 I% N% \7 e" w! K9 Y/ \5 s
  9023.         )) Q  }3 z$ G6 r5 ^) e2 ^
  9024.       )4 v0 x# V; ^3 k- D/ {; X
  9025.     )
      y4 a% [9 i& K$ I- I3 Q# ^
  9026.   )
    + g" E- G+ h# v  p- \  V* D: @# s/ Q% y
  9027.   ;;
    / [0 b& n, x1 b( s) F9 G1 R5 h0 O
  9028.   ;; Modify POLYLINE
    * C9 Z+ h5 X7 }; k9 G# Z1 z
  9029.   ;;
    ) P+ [9 x9 F4 W$ X" M5 G% a
  9030.   (defun modify_polyline ()
    ( i, q( I& ^$ @5 @
  9031.     (modify_properties)
    # S0 @& m" i+ c& J8 ?5 f" I
  9032.     (if (= ltgen "1"). {. _1 Z) Z1 l' L( P2 X
  9033.         (if (/= (logand bit70 128) 128)/ w! g4 k3 O& k# _
  9034.             (setq bit70 (+ bit70 128))) W( ]! h9 b1 i  k! f4 R! `# x) T
  9035.         )
    - h2 h# b1 i; N& h) f; I/ _
  9036.     )# `) W, L6 U0 g6 M+ N
  9037.     (if (= ltgen "0")
    & B' h0 N8 K3 h& z, e- H
  9038.         (if (= (logand bit70 128) 128)
    4 U/ i; L, q, d8 T3 o9 [% y
  9039.             (setq bit70 (- bit70 128))
    0 k+ N1 H) F  D$ D; Z
  9040.         )
    , ?! w. X2 {. w7 \$ Z- h' |
  9041.     )
    - e9 P, h1 x8 z- `( S
  9042.     (setq elist (subst (cons 70 bit70) (assoc 70 elist) elist))
    - T5 C& {& ~8 s) x9 k
  9043.     (entmod elist)9 }5 P4 X4 m% ]& Y2 m9 B0 R, h. R
  9044.     ;; Added to take care of updating Vertex information for color
    - T5 Q% j; H8 W$ x, |/ R
  9045.     ;; and linetype.
    & l. m3 R2 _# K7 b4 ~. ]  M0 Q
  9046.     (setq save-ename ename save-elist elist)1 G: D8 Q& q. H+ ~; k
  9047.     (if (= (cdr (assoc 0 elist)) "LWPOLYLINE")  E: G# E) g1 ^' U  b
  9048.         (progn
    4 u3 F8 X# E( Y3 V
  9049.             (emod ecolor 62)8 x! z( a2 X8 Y( Y9 P! z" Q+ }  i( }# h
  9050.             (emod eltype 6)* R6 L% A) z0 K5 L! o
  9051.             (emod eltscale 48)
    5 q" {* S  n& L
  9052.             (entmod elist)
    7 e" t7 ], d1 @7 e. j6 p- B( O
  9053.         )& |1 t5 \; a% L
  9054.         (progn2 r6 J. Q0 F$ ?
  9055.             (setq ename (entnext save-ename))
    & `3 v5 @/ y: K# I3 B
  9056.             (setq elist (entget ename))
    7 t2 |) [( w. H: t# }7 b0 h2 J/ C- B

  9057. $ c" d9 k& ~' W6 H* Q
  9058.             (while (not (= (cdr (assoc 0 elist)) "SEQEND"))
    - E4 S* j; y7 i/ N2 \; O& T0 c
  9059.                 (emod ecolor 62)
    % v+ g8 W: ?8 d( |5 X- P* N8 t- f
  9060.                 (emod eltype 6)+ a  K/ A' S! f% q! j8 l; t# \& ]
  9061.                 (emod eltscale 48)5 ^0 G8 k' G- T$ E5 w. l
  9062.                 (entmod elist)" L5 g; M6 a3 T5 v; y
  9063.                 (setq ename (entnext ename))
    . Y! D$ u7 k* Z  ^
  9064.                 (setq elist (entget ename))4 N) M5 t: H3 [* i& ?/ d
  9065.             )
    2 O. i9 d6 ]- G( d! h" [
  9066.         )
    ' X4 {4 p/ L# v
  9067.     )
    8 z$ R  O  d$ J9 ~* @# {
  9068.     ;; Update the SEQEND
    2 F1 Q) ~7 U" F5 P( ^
  9069.     (if (= (cdr (assoc 0 elist)) "SEQEND")
    9 p3 ^; J. W! `, O" }
  9070.       (progn* o5 o6 i3 a5 ?6 d$ J+ ~
  9071.         (emod ecolor 62)
    5 G, g. K6 e4 H0 t" C9 j+ x% S0 [
  9072.         (emod eltype 6)
    8 W# d0 u. C) P9 x5 f9 d& o
  9073.         (emod eltscale 48)0 z, J3 L8 w1 ^  D
  9074.         (entmod elist)0 P5 k9 ?6 V9 h5 l* p* K' D
  9075.       )
    % c& o) r  y; k
  9076.     )
    + n5 i! L1 v" Y, L
  9077.     ;; Go back to header.
    # ~* V" O: U0 h9 R& p: x; p( f) b
  9078.     (setq ename save-ename elist save-elist)
    3 W8 _3 n) W6 q* i2 e

  9079. % p+ a6 D  B  _( P8 V/ W) n
  9080.     (entupd ename)/ i9 p1 O4 n8 r+ `# z
  9081.   )8 N4 c7 X- i/ R; R
  9082. # d% u- R$ j. I! s
  9083.   ;; Increment vertex.  Set tile values to next vertex
    7 W' P! F- F, A3 G4 L( Z
  9084.   ;;
    + x6 O( O: ?! J" a. B
  9085.   (defun next_vertex ()
    % `9 b* K9 d6 B6 L' c! c% P
  9086.     (if (= (cdr (assoc 0 vlist)) "LWPOLYLINE")4 r  O5 S1 d1 e- r
  9087.         (progn
    / j& L4 y5 P( P
  9088.             ;; If the counter reaches the number of vertices,' ^' L" @, h9 R8 f7 V( l
  9089.             ;; roll it over to zero again.( I" o2 N! Y! q& s, L. d  p
  9090.             (if (= ctr (cdr (assoc 90 vlist)))
    , m* T$ T, c: k9 k' K# R1 ^
  9091.                 (setq ctr 0)
    ( G7 c! [( R" B' T
  9092.             )
    1 c/ o! ]' `$ h  U0 h5 G- E  u( I
  9093.                 (set_tile "ctr" (itoa (setq ctr (+ 1 ctr))))
    3 ]. {* Z0 j9 e1 |6 f9 A7 T
  9094.             (set_tile_vpt pointype)2 q& _" i& F" T! g: n4 T- T
  9095.         )* G5 G8 n: X$ m8 A! A% Q8 c3 N' w! _
  9096.         (progn- n  Y( u4 w0 u# H0 z
  9097.             (setq vname (entnext vname)); e3 A6 ]+ m9 ]: }) i
  9098.             (setq vlist (entget vname))5 n: F) W: {, G2 i
  9099.             (if (= (cdr (assoc 0 vlist)) "VERTEX"). S# F5 i8 |- R- _! m& e9 B2 l
  9100.                 (progn
    + v+ x  M8 s9 W5 @2 W
  9101.                     (set_tile "ctr" (itoa (setq ctr (+ 1 ctr))))
    7 [* `8 Z8 K2 z# y
  9102.                     (set_tile_vpt pointype)
    ! _2 n) S& ]4 b
  9103.                 )2 x4 G( ~+ n* O+ }9 F, y. e
  9104.                 (progn! P7 `! D8 A( u5 D6 p
  9105.                     (setq vname (entnext ename))" B' h& v3 l4 `
  9106.                     (setq vlist (entget vname))
    . P2 n" @/ P0 b4 U1 i4 w4 E
  9107.                     (set_tile_vpt pointype)
    ! g1 D) |4 b& a* V( j
  9108.                     (set_tile "ctr" (itoa (setq ctr 1)))- H( f+ U7 H/ u" A
  9109.                 )8 c  f+ l" }7 E# Q
  9110.             )/ p" d1 }2 x0 j# k5 N' t" v
  9111.         )
    6 C" z2 ~% n' x4 ]" W$ Y
  9112.     )
    2 `& _% F" Q6 p* t& f
  9113.   )
    - v: w% s! f! A5 H$ c5 c5 m3 W

  9114. 7 }; c. E7 F4 a
  9115.   (defun ddpline (/ oldecho)
    ! ^% T+ e( E: j  y
  9116.     (if (not (new_dialog "ddpline" dcl_id)) (exit))
    . O6 {& Q8 R$ ?: {
  9117.     (set_tile_props)
    : |; t% g' l, [1 x2 @6 t
  9118.     (set_tile_handle), z- g* x  o, M" N( T
  9119.     (setq bit70 (cdr (assoc 70 elist)))% [$ `: d" ?! F
  9120.     (setq bit75 (cdr (assoc 75 elist)))
    9 ^0 x4 B7 n9 b9 c; b/ Z+ a
  9121.     (cond5 p8 \$ e) f. G4 E4 N; W
  9122.       ((= (logand bit70 8) 8)   ; 3DPOLY
    & ^1 O- V. l( G
  9123.         (set_tile "ptype" (setq pltype "3D polyline"))% }! i  y3 d3 h- Q
  9124.         (setq pointype 0)       ; WCS or ECS point values" J' m$ a6 @3 s+ |
  9125.         (mode_tile "fit" 1)# N1 U2 Y2 a9 V4 m
  9126.         (mode_tile "mesh" 1)% Y7 r1 ^! m4 `
  9127.         (mode_tile "bezier" 1)7 n" L  U3 D' K( ^+ L
  9128.         (mode_tile "ltgen" 1)
    $ ~8 g. h2 l* M: B) v
  9129.         (set_tile "none" "1")
    & M  F& M% \% W0 e+ @
  9130.         (set_tile_closed)
    ! U- ~7 {  \" m& \/ t& w+ w7 L
  9131.         (set_tile_fitsmooth)$ x2 }0 g( d3 B' F2 M8 R
  9132.       )  z$ C. t# M9 G
  9133.       ((= (logand bit70 16) 16) ; 3DMESH
    3 g' G* V, V8 J, n
  9134.         (set_tile "ptype" (setq pltype "3D mesh"))) L# J+ v4 V: `5 z8 q) U) |( j9 f
  9135.         (setq pointype 0): y" @' A  t2 W
  9136.         (mode_tile "pline" 1)' b  Z# g! I5 R
  9137.         (mode_tile "fit" 1)
    ! G8 S4 \+ D: V" U
  9138.         (mode_tile "ltgen" 1)
    $ Q4 _1 Z3 ^  h- T8 Q
  9139.         (setq m (1- (cdr (assoc 71 elist))))
    4 U9 o: c' J, c0 A' h+ @( Y. P) C4 q
  9140.         (setq n (1-(cdr (assoc 72 elist))))  K' P& G, }- c) q/ b( K% }3 k
  9141.         (setq u (1- (cdr (assoc 73 elist))))/ \( H9 a$ i5 h7 x
  9142.         (if (< u 0) (setq u 0)). v, R# c* P* x4 Z! {3 r5 t! Y
  9143.         (setq v (1- (cdr (assoc 74 elist))))/ w: b; v( u. z1 u
  9144.         (if (< v 0) (setq v 0))9 X" s! P& V8 x& S, r
  9145.         (set_tile "m" (itoa m))/ a& R8 y, _/ c# ?' q0 O! F. A
  9146.         (set_tile "n" (itoa n))- ]6 z, p: u' `" S
  9147.         (set_tile "u" (itoa u))' ^# i3 O. a  L5 S. E
  9148.         (set_tile "v" (itoa v))
    3 O: E' c7 O3 @9 U' r* S2 D
  9149.         (set_tile_closed)1 R6 P6 W- Y# B( ?! L$ A7 ?
  9150.         (set_tile_fitsmooth): u) _3 o# J, \7 v
  9151.       )
    % `, a' @* p* z1 I( k. o) B+ y
  9152.       ((= (logand bit70 64) 64) ; POLYFACE MESH
    2 |4 ], V% `: Z- o) j
  9153.         (set_tile "ptype" (setq pltype "Polyface mesh"))
    8 S0 B, \4 ~5 ~6 R6 F& ?
  9154.         (setq pointype 0): u( `8 i# h5 `8 ]6 L+ C; Y
  9155.         (mode_tile "f-s" 1)
    ) w( s, B+ j6 m) p, T8 `/ ^/ B
  9156.         (mode_tile "mesh" 1)
    " e$ z  n7 R2 f  W
  9157.         (mode_tile "pline" 1)
    ( Y9 g9 f& I+ {1 ~, [, w5 e
  9158.       )  ^( {8 y2 C- W' N2 P4 o' C. K
  9159.       (T                        ; 2D POLYLINE
    ! a; |- r9 o5 A1 `5 r, R
  9160.         (set_tile "ptype" (setq pltype "2D polyline"))6 O, r2 e/ i- z9 q/ {, B
  9161.         (setq pointype 1)
    " p  x: S' O/ @7 |+ ~2 F, Z' k
  9162.         (mode_tile "bezier" 1)
    ! Q# C+ f; \6 R4 k
  9163.         (mode_tile "mesh" 1)* J3 U: O$ v0 c% d
  9164.         (if (= (logand bit70 128) 128)1 y/ g5 u% m8 ^9 ]
  9165.             (set_tile "ltgen" (setq ltgen "1"))
    ; G9 W6 @3 R# m
  9166.         )3 P" O9 H; y4 U  J
  9167.         (set_tile_closed): |& `" ?9 C5 W1 ~
  9168.         (set_tile_fitsmooth)* r9 Z2 ?: b' a( d- g2 |
  9169.       )
    ! E$ \3 B3 z; D4 a' W
  9170.     ): d6 M  @9 m4 B! l6 j. ]

  9171. ' o: ]' m  E' A! I5 T' l2 G
  9172.     (if (= (cdr (assoc 0 elist)) "LWPOLYLINE")  U) M* q1 w, ?7 U7 U( T
  9173.         (progn
    " U9 J2 x. n/ y$ o, f9 @, g; b; s
  9174.             (if (not next) (setq vname ename))  Y- j5 r2 }) E) ^
  9175.             (setq next T)  ~! l) q& S" ?! H: `; J
  9176.             (set_tile "ctr" (itoa (setq ctr 1)))
    3 ]7 [+ K# {3 X, Z# [8 o# ^; V
  9177.             (setq vlist (entget ename))
    . D6 q9 X# J  d! v6 S& ?
  9178.         )
    6 j" K/ J0 z6 N( o& Z
  9179.         (progn' R! N2 Z, @  R+ x# I" S2 `' {
  9180.             (if (not next) (setq vname (entnext ename))); g* g0 F2 O' n
  9181.             (setq next T)
    ! G+ W9 a6 _3 l+ _! Y) _  }) M
  9182.             (set_tile "ctr" (itoa (setq ctr 1)))
    : M" D9 S' s( W$ s" \8 t
  9183.             (setq vlist (entget vname))
    ) E' j8 Q! b7 t( K/ z9 E
  9184.         )
    1 {9 M: M/ T5 p" N6 N) T: b  Q, T
  9185.     )$ C5 K' ]9 D7 x0 s$ o* Q$ A
  9186.     (set_tile_vpt pointype)
    / H, V2 [6 R/ ~; x& H
  9187.     ;; Define action for tiles
    % c/ @' F. s6 Y* E
  9188.     (set_action_tiles)
    ! K" k. G# I7 C: Y2 b
  9189.     (setq dialog-state (start_dialog))
    4 _* ?4 B5 ~. g$ Q) j9 `3 X- \
  9190. 4 e4 ^* }4 i, r7 y8 o1 M( O! U
  9191.     (if (= dialog-state 0)3 d4 X( `4 {; q1 J
  9192.       (reset)' Q: o) m" g  i% A
  9193.     ), r( R6 L% X) G; T
  9194.     (if (= dialog-state 1)
    6 i  m9 G3 q. t7 J
  9195.       (progn; H5 f& B+ w1 a$ i% Q
  9196.         (modify_polyline)
    ) x6 J  t/ |8 |( h; X# e* w7 E; d
  9197.         (if (or (= pltype "2D polyline")! F' d$ g- ~8 f
  9198.                 (= pltype "3D polyline")
    ; c* {( R" ^9 E' E# V
  9199.             )
    - D& q# n9 z  B/ x* D
  9200.           (progn
    9 \9 T3 V6 ^/ D0 ]) S/ U( B
  9201.             (command "_.pedit" ename)
    ( l' y/ Y0 J6 J' ?
  9202.             (if (= spltype 0) (command "_d"))
    : e) v3 B( d1 x0 T
  9203.             (if (= spltype 1) (command "_f"))4 v5 ~( s9 J5 t$ R- `/ W: g
  9204.             (if (or (= spltype 5)
    ' N- P% I# X9 R: E2 f7 `
  9205.                     (= spltype 6)0 j( w( A! l# V$ x9 p1 T
  9206.                 )# g' ]9 G7 p  g1 X' K& K! U9 u
  9207.               (progn
    + Z+ v3 O8 H8 V3 L0 {: W
  9208.                 (setvar "splinetype" spltype)
    3 E, p% V. l, m. \. e0 d% G$ m
  9209.                 (command "_s")
    ( l. e4 ~1 s! z. h0 l1 }* @6 ~2 g
  9210.               )9 ^$ b. j1 f  M! a$ K
  9211.             )+ h, O: A5 s. K" z" z
  9212.             (if (= closed "0")
    : k' p& c0 B1 {) w
  9213.               (command "_o")
    6 f: K, Q; s/ S2 D5 ]! `: b! k; q& Y
  9214.               (command "_c")! R. T6 R+ b% R8 E! J' X
  9215.             )8 `3 Q8 y( [8 r3 Y1 g
  9216.             (command "")
    & u4 B, _/ a+ I: B
  9217. , L( m# e3 n* U' D
  9218.             (if (= spltype 0): g6 V; f7 A2 S& ^% e2 ~% i
  9219.                 (progn: N5 P+ r4 f7 J
  9220.                     (setq oldecho (getvar "cmdecho"))
    # c; @3 \' J$ Z- c. o7 `
  9221.                     (command "_cmdecho" 0)
    , N& J) `) B2 _& ?6 r
  9222.                     (command "_convertpoly" "_light" ename "")
    6 z' `7 C9 ]) r, U: A
  9223.                     (command "_cmdecho" oldecho)2 a  |0 J+ w' ]2 N" z. T% L& W% E' u+ b
  9224.                 )
    * ?9 @( c+ ]. o) _
  9225.             )
    # U& N7 p  J# i1 p1 b
  9226.           )
    % ^  k1 O; ]4 M! N" ^+ j) e
  9227.         )3 Y# E; _) e& C( A- W# o+ Q
  9228.         (if (= pltype "3D mesh")
    - G% u! ^3 A6 U! ~4 P
  9229.           (progn
      ]" h0 ^; `) t# U
  9230.             (command "_.pedit" ename)
    ' f! U" G7 F- D* g3 V9 v
  9231.             (if (= spltype 0) (command "_d"))" M( |" c4 }4 |/ m( O
  9232.             (if (or (= spltype 5)( K  E* t3 T- g' {- m0 ~! ~
  9233.                     (= spltype 6)% [- s; T4 P* F0 F3 _, @1 K: c. G. p
  9234.                     (= spltype 8)
    7 n1 w0 x6 k) V) s
  9235.                 )7 [% E7 U% ^4 B( ]
  9236.               (progn
    8 P# E' m7 U& f- X/ j- U$ |
  9237.                 (setvar "surftype" spltype)
    - l2 Z/ r) K7 W% H
  9238.                 (setvar "surfu" u)
    / U# ~# A: b! G1 }$ u
  9239.                 (setvar "surfv" v)5 Q" \0 [' l# X' J2 G
  9240.                 (command "_s")2 ~2 W: O1 A! S4 E* R
  9241.               )
    3 D8 H& N, I- J2 S" v5 o
  9242.             )
    1 g. M; M) x  N/ g
  9243.             (if (/= closedm old-closedm)
    . `6 S4 q7 @6 y
  9244.               (command "_m")
    4 Z9 F$ I( _' }+ |) r
  9245.             )3 z8 \% |6 P  t9 p2 p2 N7 e/ J6 p
  9246.             (if (/= closedn old-closedn)! f) q3 v# Z1 T4 H3 A- ^; q
  9247.               (command "_n")/ v# R. _4 C3 t+ _/ h
  9248.             )
    ; ]7 ~' z9 e4 C4 D
  9249.             (command ""); w$ U1 F8 @. X, T, e
  9250.           )# E: O1 w: R- T, }7 o
  9251.         )
    5 M) \. a7 u0 x# [) ^7 K9 B
  9252.       )
    ) I% o, `5 ?5 t( O
  9253.     )
    # O" X' n6 `  S0 X! |7 m
  9254.   )
    % p2 W% V4 q8 ~% J' ]
  9255.   ;;+ v( a3 Q- A) X* ?* K
  9256.   ;; All the spline data is contained in a single elist. We must do some) U/ b9 t# e2 X+ y) @7 W) S
  9257.   ;; tricky list processing to loop through the elist in order to display# y3 f, E# L$ }6 I6 |7 A$ l
  9258.   ;; all of the control points.4 s  e2 d0 E0 c" B# x9 m
  9259.   ;;
    % Z: e* C, B3 V) e: K& |$ s  f
  9260.   ;; The structure of the elist is different for rational and non-rational
    ( |4 t% R5 O9 I) c( q, h6 O; o
  9261.   ;; splines. Therefore, we check the rational spline flag.
    # Q+ B. D+ X  Y: H) E* ~
  9262.   ;;' @8 E/ a. y$ ^5 n" y  s' s- n% o
  9263.   (defun next_cntl_pt (): ]. J/ L. T$ h* s% B
  9264.     (setq elem-no 0)               ;; elem-no = element counter
    2 T# T( {2 D% O- l0 [" l9 |1 I; d
  9265.     (if (= first-10-time 1)        ;; If first time, find location of first
    9 J1 o) x; W7 }1 t2 d& C" @* W/ E0 s
  9266.         (foreach list_item elist   ;; cntl point element in elist
    ; b" [. o: H3 G0 v) b( w5 ~1 o
  9267.            (progn& a' B1 z# f2 P
  9268.                (setq elem-no (+ 1 elem-no))% y$ i7 `5 r$ ]6 X) |9 A
  9269.                (if (= (car list_item) 10)
    & a8 I2 V- S0 \$ V6 l3 l  d; R
  9270.                    (progn+ C1 L/ w3 |6 P+ e' @
  9271.                        (if (= first-10-time 1)
    . ~& J  w, A# l6 Z" q' v) c
  9272.                            (progn
    4 e) n/ _6 H% T0 a* D
  9273.                               (setq first-10-rec (- elem-no 1))! @% d: |: L8 I- z' h' ~+ P
  9274.                               (setq first-10-time 0)7 u+ M6 B0 X' E9 W1 \4 j0 l
  9275.                               (if (= rational_spl_flag 1) ;; if rational
    8 N0 ?" g# \+ b9 F
  9276.                                   (setq cur-10-rec (+ elem-no 1))
    9 z" {5 H  b9 _$ c; {' r! S; o. A! d
  9277.                                   (setq cur-10-rec elem-no)4 I3 l2 I; L5 k" _3 t
  9278.                               )8 |/ c  r! M. y; i7 e3 X1 ^
  9279.                            )+ t8 R( u; i3 N6 f. F! P7 U
  9280.                        )
    0 I4 r3 C* n# \; b" a
  9281.                    )
    6 D1 \1 g7 B+ u7 k# v. s5 W
  9282.                )
    3 H' p  R3 w3 K8 d7 h% ]5 }
  9283.            )
    8 j/ s' F5 y* f6 P# e2 S
  9284.         )
    $ e; t* |4 k: E( W1 L. U
  9285.     )
    2 u5 u; A& Y1 T
  9286.     ;; Now we know the location of the first "10" record; it's stored
    ! S. t6 D' {% r: P7 J
  9287.     ;; in first-10-rec. The first 10 record was already displayed when( U. x* Q/ j( F/ o/ P8 @
  9288.     ;; the dialog first came up so let's display the second one when8 ]# x1 U' h; Q) [* J
  9289.     ;; the user presses the "next" button (the first time through).
    * ?: w% u: J5 }
  9290.     ;;5 O" S* l' X! B1 p; N% w
  9291.     (setq temprec (nth cur-10-rec elist))& O( `; n7 ~: Y1 p7 y7 ?
  9292.     ;;
    # @% w/ x% _. K$ \1 o% g0 m- J
  9293.     (if (= (car temprec) 10)   ;; if 10 record
    ' C1 E8 L% u6 U' G8 v/ e
  9294.       (progn
    2 @$ M" b3 p. D+ G2 L/ Q# w: S
  9295.         (if (= rational_spl_flag 1)    ;; if rational spline7 n* P1 o. K, y! s! B6 d+ Q2 `
  9296.           (progn$ T# L2 Z1 p- Y' @2 L- L* u% B
  9297.             (setq tempweight (nth (+ cur-10-rec 1) elist))
    3 O+ O0 B9 g- N- n3 o
  9298.             (setq cur-10-rec (+ 2 cur-10-rec))
    5 ~' Y7 `3 ?. V% t4 x2 u
  9299.           )5 m4 e& e' z* B
  9300.           (progn                       ;; else
    . k1 w! I7 z0 s* O9 n
  9301.             (setq cur-10-rec (+ 1 cur-10-rec))5 @  Z3 ]- F3 c) i
  9302.           )  \+ |% }+ e& h# ~5 X
  9303.         )/ f  h8 G  v: y
  9304.       )                                ;; end if rational spline# e  A1 `% ^$ ^% t/ m2 M# R( d
  9305.       (progn                   ;; else reset counters
    1 v! q" a/ J1 h$ [
  9306.         (setq temprec (nth first-10-rec elist))  ;; get 1st 10 rec; O0 p, e6 g1 {& X3 J2 G
  9307.         (setq tempweight (nth (+ first-10-rec 1) elist)): w" e- R" `, z% B; \* Z
  9308.         (setq cntl-pt-indicator 0)0 w+ }: a8 Y7 K2 W0 C
  9309.         (if (= rational_spl_flag 1)             ;; if rational
    ) f( _% B8 k8 H. r
  9310.             (setq cur-10-rec (+ first-10-rec 2)) ;; point to 2nd 10 rec. |, U* l) ~; G/ x3 k) q
  9311.             (setq cur-10-rec (+ first-10-rec 1)) ;; point to 2nd 10 rec
    " p0 O; V+ o% @7 q
  9312.         )
    ; c' T5 Z7 a& @8 k9 [6 L% c
  9313.       )8 ^- ]6 {( h; q' Q
  9314.     )                          ;; end if 10 record
    8 t9 v7 _. T8 K, h5 X
  9315. 5 c" C  b4 D* f0 t4 ]# ]
  9316.     ;; Display cntl point, weight and ctr. Increment ctr.
    : A7 s; D( `6 W' q5 s" S0 T
  9317.     (setq cntl-pt (cdr temprec))- E+ U4 o/ t. J" x, ~
  9318.     (set_tile "xtext" (rtos (setq x1 (car cntl-pt))))
    / H% [' [+ J) T  t
  9319.     (set_tile "ytext" (rtos (setq y1 (cadr cntl-pt))))
    ( Y5 A" g2 m6 w) w# u
  9320.     (set_tile "ztext" (rtos (setq z1 (caddr cntl-pt))))* p! S$ T) X( V2 o$ Z( X4 M( [
  9321.     (setq cntl-pt-indicator (+ 1 cntl-pt-indicator))
    ) @6 ]" j6 X! U, V' U# W/ @% g4 P
  9322.     (set_tile "cntl_ctr" (itoa cntl-pt-indicator))+ F8 {: q& N; {( h9 V
  9323.     (if (= rational_spl_flag 1)                     ;; if rational3 w) }! ^$ U6 x
  9324.         (set_tile "weight" (rtos (cdr tempweight))) ;; disp wght# n+ i- d! }9 Z- j0 c/ U% a
  9325.         (mode_tile "weight_text" 1)                 ;; disable wght
    1 z$ e7 J5 L& p% J, j
  9326.     )% ]' E3 N4 W! O2 L5 A- a) f/ {9 D- b
  9327.   )
    3 S( c: ^9 W# F: E
  9328.   ;;5 h" G) x, U5 y6 j6 C5 j
  9329.   ;; All the spline info is contained in a single elist. We must do some! Z+ v9 K4 p9 C/ T1 s
  9330.   ;; tricky list processing to loop through the elist in order to display
    : Z" m6 @/ h/ [: G5 j
  9331.   ;; all of the user data points.
    + w6 E8 L8 p& D* `
  9332.   ;;
    : X* u0 k+ h  ]: X# B6 X
  9333.   (defun next_data_pt ()
    * {8 j: D, E+ ~- Y
  9334.     (setq elem-no 0)               ;; elem-no = element counter
    " ^7 a( w: E& D/ R- o0 t; J; ~
  9335.     (if (= first-11-time 1)        ;; If first time, find location of first5 f! ~  A3 {; i" J- O
  9336.         (foreach list_item elist   ;; data point element in elist
    ! G4 C" A" ?8 u/ P' S7 w1 }) P7 U- H9 O
  9337.            (progn4 |5 E" G" Q3 ~+ D
  9338.                (setq elem-no (+ 1 elem-no))) E. f' X+ q" |* ~
  9339.                (if (= (car list_item) 11)
    + g' z2 C( z% p. C3 u- a
  9340.                    (progn- f# D. [7 B! B+ U, Z, J
  9341.                        (if (= first-11-time 1)
    : |  ]; f0 R5 h& [* a
  9342.                            (progn
    % j8 ^( d" K  E% C5 U/ e4 B
  9343.                               (setq first-11-rec (- elem-no 1))* Z6 W7 K6 U/ I( b$ p- g# W5 _
  9344.                               (setq cur-11-rec elem-no)
    ; R- m9 O1 \1 F/ K: p; S: l' O
  9345.                               (setq first-11-time 0)
    ) }  Q/ P- C% U
  9346.                            )( a+ y( W: L; }5 V2 U+ ^8 w
  9347.                        )8 l8 M* K; j7 [& t8 m* r
  9348.                    )
    & ^% }* w; z8 |* J# _9 M
  9349.                )
    $ }  x# i- z5 r) J, Y
  9350.            ), O8 ^6 S  G, S3 f* ~& |( Y
  9351.         )
    & I' e$ o9 a& H3 W
  9352.     )
    9 j9 q$ h$ C. O# E3 I9 v9 N
  9353.     (setq temprec (nth cur-11-rec elist))
      i7 F# x  K5 j) H9 e7 `
  9354.     ;; If it's not a DXF "11" element then we've gone past the last) {2 N" ^' s8 y( ]+ j; p  ]
  9355.     ;; "11" element. Go back to first "11" element. Reset counters.# ^6 e: \" V+ v* r5 L7 S0 R
  9356.     (if (= (car temprec) 11)3 O; \+ k& U1 `5 ^1 L& B2 Y
  9357.         (setq data-pt (cdr temprec))
    ) z1 Z. p8 N& ^0 q2 x
  9358.         (progn                           ;; else
    - _8 b  w  A$ E& ^1 f( C
  9359.            (setq data-pt (cdr (nth first-11-rec elist)))4 Y% a4 \9 \# M% H6 g/ A
  9360.            (setq cur-11-rec first-11-rec)
    9 m! I# g! ]6 z- Z! g0 r
  9361.            (setq data-pt-indicator 0)& p& `! j) ^8 T/ W/ J3 `% ?
  9362.         )8 {$ n/ N) f* A: b7 a* o
  9363.     )
      D0 j7 Y" X$ [2 G1 ?6 f2 \4 ]' Z
  9364.     ;; Display data point and ctr. Increment counters.7 L  i$ j+ B4 l. T: E
  9365.     (set_tile "dxtext" (rtos (setq x1 (car data-pt))))
    , J! p: l* Y& L6 o! W0 [, Q
  9366.     (set_tile "dytext" (rtos (setq y1 (cadr data-pt))))
    $ I. V8 J' |0 q
  9367.     (set_tile "dztext" (rtos (setq z1 (caddr data-pt))))
    ' \# b) a# P7 e( _
  9368.     (setq data-pt-indicator (+ 1 data-pt-indicator))( _" n- C& ^6 _/ u9 o! W. |! O
  9369.     (set_tile "data_ctr" (itoa data-pt-indicator))
    - `% R2 i. [! G9 o
  9370.     (setq cur-11-rec (+ 1 cur-11-rec)). ^- V0 {) A: H1 i- L7 D" Q
  9371.   )6 a* Y& S( B9 A
  9372.   ;;
    . g* V" T9 m6 f7 P! p, m% F8 D9 `9 G
  9373.   ;; Modify SPLINE
    * _) E9 d- A. N/ B5 z+ R
  9374.   ;;: i! P/ r; f6 [* r! Q$ K
  9375.   (defun modify_spline ()6 v2 s& a9 X( p& \/ B
  9376.     (modify_prop_geom)* H7 O$ l- C4 y5 Q
  9377.     (entmod elist), m2 h6 [! j8 Y4 B% i4 H
  9378.   )
    , M# B% M6 t" V; E) K* j
  9379.   \6 _9 U) A% @( n- l+ b
  9380.   (defun ddspline ()  J( z( o; P& M8 N! K8 N
  9381.     (if (not (new_dialog "ddspline" dcl_id)) (exit))) q  @- ~6 V6 h
  9382.     (set_tile_props)
    7 Q5 {4 L% K2 c" X8 h# M
  9383.     (set_tile_handle)' |9 s4 m. q1 @7 Z' Z
  9384.     (set_tile_spline_props)
    2 P3 b, w- `. S9 i4 d' A! \
  9385.     ;; Display first control point
    : t; g- U$ @; @$ Q
  9386.     (set_tile_cntl_pt)
    9 b3 U: a7 ]5 n
  9387.     ;; Display first data point
    8 x9 R" L/ ^/ _2 ?$ S) x; v
  9388.     (set_tile_data_pt)
    ( S" t  f/ T/ j2 I9 E; Z/ g

  9389. 0 L8 m& L; Y" I- F8 g# ~2 E3 c1 w
  9390.     ;; Initialize flags to indicate first time through the dialog.  n7 j) Y' ~4 ]4 D5 g' I' _
  9391.     ;; For control points and user data points the "next" buttons0 \3 t9 @+ \. ~
  9392.     ;; in the dialog call the appropriate functions.& z6 I$ K/ z7 S9 D
  9393.     (setq first-10-time 1)
    " l0 ^6 R/ Z5 e$ u8 M
  9394.     (setq first-11-time 1)3 [" }; b  p% }- c) ]* z
  9395.     ;; initialize control point number counter) L& M5 T' z6 a, d, \$ I
  9396.     (setq cntl-pt-indicator 1)5 W( @, R6 ?. S/ p, x9 N
  9397.     (setq data-pt-indicator 1)1 \4 w* H! `7 d9 k. R1 x
  9398.     (set_tile "cntl_ctr" (itoa cntl-pt-indicator))
    ; u4 H% p- N5 E0 A5 ~% ^
  9399.     (set_tile "data_ctr" (itoa data-pt-indicator)); ?1 @7 G3 j" }0 v0 p
  9400.     (set_action_tiles)& O! S2 r: t8 e
  9401.     (setq dialog-state (start_dialog))6 Q( P6 y2 y0 m! Z9 R3 O

  9402. $ A3 l3 M; e4 z8 k+ k# s
  9403.     (if (= dialog-state 0). L/ K9 j8 S3 m* r
  9404.       (reset)8 B9 s: U7 Y: r% b) ~
  9405.     )8 B3 d' y2 Q* D$ g# c
  9406.     (if (= dialog-state 1)
    3 w8 A7 f$ {* J* o
  9407.       (modify_spline)1 W7 w) ?+ A: \4 p) U/ T; S8 H2 I7 Q, N* x
  9408.     )
    , J1 c6 g. a5 M
  9409.   )0 E7 I# t) @' P0 I" B4 v
  9410. . M+ A/ C0 P, S
  9411.   ;;- R" p5 w9 Q* B3 l
  9412.   ;; Modify DIMENSION
    $ a' G* f- b3 E& Q: A; L3 n/ s2 s- D
  9413.   ;;* W% j8 P( p  q8 \! s! n
  9414.   (defun ddimen (/ dtypebit blkname bename sublist a stname n dimtbl
    % E9 P: u1 D% s$ d! X
  9415.                    dimsty dimlist dimtext svtext dimovr sv_dvlist stlist
    + F. p3 R! G8 B  w' I4 D, W
  9416.                    dimtype dimsvcurset)6 w  Z* w6 H! K
  9417.    (setq dimtype "DDIMEN"
    4 @# K7 [) x/ ]- y9 w4 C
  9418.           dimsvcurset (ddimen_dimsty_restore)
    - n( T/ d" R' J
  9419.     )+ e% H* `0 z3 D3 `0 _
  9420.     (if (not (new_dialog "ddimen" dcl_id)) (exit))
    0 t! E1 {  C* X- P+ n
  9421.     (set_tile_props)
    0 c" ^3 B3 b: ^
  9422.     (set_dimen_props)
    . @9 v; G- }+ z! `- C5 @  O, B
  9423.     (setq dimtext (cdr (assoc 1 elist))), b  G8 F6 o- q
  9424.     (set_tile "t_string" (if (= "" dimtext) "<>" dimtext))7 i5 m7 p) M  [. D" \
  9425.     (set_tile_handle)
      _4 R! N8 [% u& I, x+ [! [3 K
  9426.     ;; Define action for tiles
    # |  E- O3 L0 c, u, i
  9427.     (set_action_tiles)! f# l. f5 w: F) l3 }

  9428. 6 ]* s, B& j2 \- T: ^% V
  9429.     ;; Set initial focus to text edit box.* r: B' J  X8 J. e' w
  9430.     (mode_tile "t_string" 2)
      l- Y. q3 I" N9 d- J: h2 ]
  9431. + |$ h2 l+ d- n. I* m5 P, B; P
  9432.     (setq dialog-state (start_dialog))7 v: E0 s) w% E0 C6 e! I
  9433.     (if (= dialog-state 0)
    . b* J0 i( J$ `  f% T* c
  9434.       (if (= ddimmt 1)
    , B: B5 {2 @, [
  9435.         (reset)
    8 ]1 N. k5 X0 D- x% m* a4 b, g
  9436.       )( v; `. x' D2 W4 w3 l8 `7 N# X. l# m
  9437.     )
    ) ]1 B2 }- W, p; S% Q  M/ d
  9438.     (if (= dialog-state 1)
    ) t  r8 r, M% N, h8 @2 g" h) V
  9439.       (progn3 `& p. Z- J! G% ]3 Y
  9440.         (if (/= dimsty stname)
    4 t! K8 F4 s3 q, o
  9441.           (progn2 h' X9 a, y6 }1 G+ x; t7 Q
  9442.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    2 L: _9 t: V; \0 _% ]4 B; ?  D
  9443.             ; doesn't have it.
    9 n# ?! j6 U0 l* n
  9444.             (if (null (assoc 3 elist))
    & m3 f' C# l; n9 D- u
  9445.               (setq elist (append elist (list (cons 3 dimsty))))
    7 ^5 Q: }. u; d9 {/ {
  9446.               ; else just replace it.- `" N; ?. W. h0 W3 E
  9447.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))- g4 c' S* D) ^1 N5 s" W# d
  9448.             )
    $ h" Z' c" `$ Y! {- x2 _
  9449.             ; refresh sv_dvlist with new dimstyle.
    5 r# P" ?# G. a) I! l  v
  9450.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))! @9 P( {2 B7 u
  9451.           )- Y; I3 x  B$ j2 d# q4 z+ j4 B
  9452.         )
    . {5 W" P; H! `1 I/ O* P
  9453.         (if (not (null dimlist))   ; attempted to change dimvars
    3 Z% @4 u# r( f* V& Y, o
  9454.           (ddimen_complist sv_dvlist dimlist dimtbl)- V6 K' P) c5 s) G% Z$ D7 {
  9455.         )
    # W+ K8 n. m* q) R6 H
  9456.         ; Modify dimension text
      T/ R$ K9 R1 u$ b
  9457.         (if (/= dimtext text)9 p& ^& t  b+ _2 {; p( z
  9458.           (progn
    6 h. u; o3 f/ k! m6 ~8 G- {  k4 L
  9459.             (setq dimtext (if (= text "<>") "" text))
    , b" [' U+ V( X
  9460.             (setq elist (subst (cons 1 dimtext) (assoc 1 elist) elist))
    ) `6 ]% `% R* W) @
  9461.           )2 d9 p' u; m7 `" d9 q, W- B7 w( H% q
  9462.         )
    7 v; [, a' {& V
  9463.         (modify_properties)
    8 q* @9 j$ m7 K. f$ y
  9464.         (entmod elist)
    7 {$ B$ j* ^- `% z  F  }
  9465.       )$ j- u! T) V9 z0 b
  9466.     )
    ! @: e( x3 D- e% q! c8 b  m" L
  9467.     (if (= dialog-state 4)( w+ ?; P9 y- j7 O& I
  9468.       (progn9 H7 M3 i7 e' p- Z8 X5 B/ h
  9469.         (setq ddimmt 1)
    5 M  U0 n; T% }) z& ~: r
  9470.         (if (/= dimsty stname)
    $ G( q0 o. Z) X
  9471.           (progn( G" d5 F9 L& L$ ~( l3 R1 L
  9472.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case" l( _! \" r9 j6 b3 A3 z+ I
  9473.             ; doesn't have it.! m1 n  [5 K5 L4 W8 S' o* t: @3 H
  9474.             (if (null (assoc 3 elist))
    " G9 S0 g4 k+ l- {9 A/ {9 I
  9475.               (setq elist (append elist (list (cons 3 dimsty))))
    & Z1 e- J! ?8 j% I  j8 W* R. l: T
  9476.               ; else just replace it.
    ( Z6 K$ c' T2 ]
  9477.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))" q9 ~% s( c( ]- w
  9478.             )
    . W$ [; l3 N+ `2 p+ V3 R; s6 J
  9479.             ; refresh sv_dvlist with new dimstyle.  j, D! ]; i. _. d2 ^
  9480.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))/ I" f4 f, q8 I% i  Q8 t- C
  9481.           )
    9 G3 E) V. C: _  p* d3 ^4 ~0 }
  9482.         )8 {# T& ^, Y- Q
  9483.         (if (not (null dimlist))   ; attempted to change dimvars' v9 _3 r7 D! b5 {+ d& \. U
  9484.           (ddimen_complist sv_dvlist dimlist dimtbl)
    # [' [7 [. Q3 L2 E' Y: ]: \+ `
  9485.         )' ]* B7 v6 t3 R) L9 z
  9486.         ; Modify dimension text8 w6 L2 f/ n# b% v& t8 {4 f( G
  9487.         (if (/= dimtext text)6 C+ ?+ b( i; e* u# v% J/ @8 N+ _
  9488.           (progn
    # v) ?4 L: i) o. u9 P. o+ i6 A
  9489.             (setq dimtext (if (= text "<>") "" text))
    ' u0 ]- k) r2 o9 B& M7 p
  9490.             (setq elist (subst (cons 1 dimtext) (assoc 1 elist) elist))) ?8 O/ r) x  ~6 d
  9491.           )6 a( N( i" J9 x
  9492.         )
    4 ^  q8 S; O& ]- q; K
  9493.         (modify_properties)7 I9 a3 q4 R& C/ \  q9 G  w
  9494.         (entmod elist)6 u* p4 c( A: h- w4 W5 p' ]4 y
  9495.         (safe_ddedit ename)- I* @. ?; W, N, ~0 f( ^8 |
  9496.         (setq elist (entget ename))0 F- ~: y& y/ v& {* P) e! S+ \8 q
  9497.         (ddimen)- t" C9 z' t- o- B, N# T$ I
  9498.       )2 v; C- q, Z  W- R$ E
  9499.     )
    ' b. g2 e8 ?% L/ w: g
  9500.     (ddimen_setvars dimsvcurset)      ; Prepare to exit' d& `9 Z% u+ i; |
  9501.   )/ T0 j; c$ Z* E' p# \

  9502. 7 D2 t" L, R5 e
  9503.   ;;. J) ]! _6 Y$ G9 S% m7 W0 v
  9504.   ;; Modify TOLERANCE; W$ C2 i/ _3 g
  9505.   ;;% x. l' v* x# y
  9506.   (defun ddtolerance (/ a stname n dimtbl4 \: h; T! v/ C% b% `8 n" a
  9507.                    dimsty dimlist dimovr sv_dvlist stlist dimtype4 x% v& e6 W! s/ s5 j
  9508.                    dimsvcurset)- M% g) `2 m! y0 x' E
  9509.     (setq dimtype "DDTOLERANCE"0 ]0 G6 T3 \. ~/ v. j
  9510.           dimsvcurset (ddimen_dimsty_restore)% h1 T+ W6 f# w% t
  9511.     )
    " O! q* Y! A9 ~5 _- W/ o
  9512.     (if (not (new_dialog "ddtolerance" dcl_id)) (exit))
    7 ^4 x0 h# U/ r) a" m
  9513.     (set_tile_props)
    5 f/ U/ n3 d8 `. U$ K8 A( L8 n: R
  9514.     (set_dimen_props)
    2 F4 }3 N% n$ `1 g/ d# y! m
  9515.     (set_tile_handle)
    , L" c/ A7 U9 y0 O0 O. q! I! c4 }
  9516.     (set_action_tiles)4 s" c/ K9 ~( {" R( q
  9517.     (setq dialog-state (start_dialog)), r7 t( B* x7 u( V+ H
  9518.     (if (= dialog-state 0)
    % O2 W- ^8 w' L! A  b. X7 R
  9519.       (if (= ddimmt 1)
    " N7 D% |( _1 T5 I" I6 H% J
  9520.         (reset)
    8 G, p, ~. ~- ]6 y$ z! b
  9521.       ); k& L0 \5 \+ r; M# \" K: t
  9522.     )- i/ Y) ]2 t0 M& Z% o2 \: N7 w
  9523.     (if (= dialog-state 1)- v- J3 u8 x5 b" b
  9524.       (progn: A. @; ]- i- G7 s
  9525.         (if (/= dimsty stname)- \# Z7 z- k- \1 e5 p7 m
  9526.           (progn6 g$ _* a, Q/ o' q; ^
  9527.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    3 I6 {( {, [2 M% U
  9528.             ; doesn't have it.0 X+ K6 R& v3 E1 Q8 K2 U
  9529.             (if (null (assoc 3 elist))
    $ r) p# p3 e4 L/ W6 l
  9530.               (setq elist (append elist (list (cons 3 dimsty))))
    # E$ q/ ^, g/ r3 U
  9531.               ; else just replace it.0 A2 T$ I) t5 D3 V$ R) k
  9532.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))# Y4 }4 ~" u! ^$ p
  9533.             )3 K, n( o! R% V1 S1 R- ^6 E
  9534.             ; refresh sv_dvlist with new dimstyle.
    * B+ Y$ _* r+ e& s0 X8 D
  9535.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))! Y8 C5 }% m* e2 A( Z( @/ ?
  9536.           )- _; i! ^, L$ M' W0 v2 ?2 g
  9537.         )
    - C, d# e4 {0 x. B% Y" l, ~' t
  9538.         (if (not (null dimlist))   ; attempted to change dimvars5 Z; C3 _0 U  b( s# d; C
  9539.           (ddimen_complist sv_dvlist dimlist dimtbl)8 [) G3 a1 l0 P( ~2 n
  9540.         )% ?2 l" ~! }) X2 T# U6 P5 {# z
  9541.         (modify_prop_geom)
    + I- |# m/ K9 B! M$ j) t9 b
  9542.         (entmod elist)8 b  Y1 S# C) }# [, ~8 v6 {
  9543.       ); n, L5 Z$ W' i0 N/ i* U
  9544.     )! _) z+ }- f0 O  {/ y) r* l
  9545.     (if (= dialog-state 4)
    - n* C, n5 J4 t! a1 _
  9546.       (progn8 a' W" X. B5 g, e
  9547.         (setq ddimmt 1)$ r! b7 w' l$ W% p
  9548.         (if (/= dimsty stname)1 C9 X- `, u! j6 O/ D
  9549.           (progn
    7 c9 X& v/ f& u6 G+ [; ]
  9550.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    ; P4 @8 h/ }% W7 r5 v) A
  9551.             ; doesn't have it., j! D* s/ M) Q% @0 J
  9552.             (if (null (assoc 3 elist))
    5 L) ~. o2 e3 c0 W- @
  9553.               (setq elist (append elist (list (cons 3 dimsty))))
    1 B" J  w2 a5 d
  9554.               ; else just replace it.
    : @) g! ]0 V5 c+ e4 h
  9555.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))
    4 y5 q6 U& C" u( h) {
  9556.             )  {5 s: [8 b" f& x% b% J' r: w
  9557.             ; refresh sv_dvlist with new dimstyle.
    ( d9 C0 ?2 R4 w( A) Y9 e: A5 K' W, r' H
  9558.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))3 Q0 `7 X, j8 i, d
  9559.           )
    % Y7 K$ k7 o% ~% F0 ^0 ]
  9560.         ); s+ v8 Q& ?# n; o5 J, b9 J
  9561.         (if (not (null dimlist))   ; attempted to change dimvars
    % I7 E* i+ s  J* Q, x
  9562.           (ddimen_complist sv_dvlist dimlist dimtbl)0 i0 _/ d. h1 w- e* f& Q
  9563.         )
    . x0 o4 m/ p; A! `! D
  9564.         (modify_properties); a; V% G5 u( F
  9565.         (entmod elist)
    6 x) s/ J( g4 t6 ~$ s5 y; t
  9566.         (safe_ddedit ename)! x. y2 I. e1 I. D5 m. n
  9567.         (setq elist (entget ename))
    ; h8 Q+ H; f0 ~
  9568.         (ddtolerance)
    8 Y# C4 C6 C; U, m4 T) G& x, y& `* ?
  9569.       ). t6 V# C5 S. F1 M$ }0 o
  9570.     )
      c6 N5 s% X8 c
  9571.     (ddimen_setvars dimsvcurset)      ; Prepare to exit* o# L9 ]' d  ^% X0 Z0 E
  9572. )
    6 t4 f8 w0 S! P; a# {* o/ Q' \

  9573. ! H- C  h1 b7 o* H, s1 D' t7 C
  9574.   ;;# M: L4 T5 q3 E, z' }; C$ Y
  9575.   ;; ddimen_dlg - jump to ADS ddim module
    & }. x! j" X% b: G0 F# V/ v6 k: r
  9576.   ;;
    9 |' M' s" l1 b! W6 q
  9577.   E( @% k! t4 {. V. o5 C8 v+ ~& W
  9578.   (defun ddimen_dlg (dimtype tile dimsty dvlist / dimlist)
    8 R0 x# @3 b+ {" p9 X
  9579. 6 D+ q8 [" d2 ^+ b4 D) ?
  9580.     ; Jump to DDIM with overrides if any.
    / }- Z: w9 `! n) g
  9581.     (cond ((= tile 11) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Geometry1 O. F! C2 h+ G. W6 t
  9582.           ((= tile 12) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Format0 x  i* y9 j7 b! {7 n; v8 s. z6 o
  9583.           ((= tile 13) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Annotation
    2 `( ^- Y  _3 ]" X+ a" {* m
  9584.     )
    : q7 Y6 t3 a# u: `' m
  9585.   )
    , h+ t- u2 M$ g# j# M% f5 @
  9586.   }8 ?4 |0 d2 p9 B# G  o; J
  9587.   ;;! b' o  H! K9 o9 U5 i: G" s# L
  9588.   ;; Dimension variables updated are stored as overrides.0 J5 q! g, H$ |3 v6 W8 r
  9589.   ;;' h3 s& v8 Q! Z$ J* P  g  ?- X

  9590. / {2 N1 l4 x! t" s' O5 K0 f( x
  9591.   (defun ddimen_complist (dimolist dimnlist dimtbl / i odvar ndvar
    ; ^; L4 c( D) t5 Q# W* l/ ?8 Z
  9592.                           dv dime commandIssued)
    ' C1 A! G. z% w, p3 i/ _, x  [+ F

  9593. # ^# q% S- T) |
  9594.     ; Here we skip the following first three items:
    - Q& m9 w+ m' b: E  i* x
  9595.     ;   (0 . "DIMSTYLE") (2 . sylename) (70 . 0)# ^8 `% U9 ^) l
  9596.     ;
    ) X: D( {% [# _# }7 V7 \
  9597.     ; The list comparison immediately begins with dimvar.0 Z0 G0 @) e2 Z# K. j6 u
  9598.     ;% H9 i1 x0 q. M4 A1 j. a# N  `5 c8 s
  9599.     ;  dimolist - original states of dimvars
    . d% x6 [2 Z8 I2 s8 ]2 A& R
  9600.     ;  dimnlist - new dimvar list which is of the resbuf's& w& X* e  J% L3 v! g
  9601.     ;  dime - entity name for the dimension- {/ O6 D4 t' Q5 q; T! m( H
  9602.     ;  odvar - value of dimvar for the dimolist+ F5 x4 s- X5 q$ |2 o
  9603.     ;  ndvar - value of dimvar for the dimnlist
    ' y2 i3 z' B3 w" M- Z8 t1 X
  9604. - @/ s6 t0 w% }/ x+ d/ O+ R" y; x
  9605.     (setq i 31 `. P" T7 ~2 o- F" ~1 Q& @
  9606.           dime (cdr (assoc -1 elist))
    1 k2 t2 S( X& v/ h1 M7 b
  9607.     )( Z( W. G7 ]+ ^! f2 k9 e2 y
  9608.     (while (setq odvar (cdr (nth i dimolist))): C4 {4 l) v% e% G$ u
  9609.       (progn3 _6 s" R8 O0 c3 u4 Z0 ?# N
  9610.         (setq ndvar (cdr (nth i dimnlist)))
    ( D# H  f) n. \
  9611.         (setq dv (nth i dimtbl))
    % \6 d# x6 K6 J7 d
  9612.         (if (eq dv "dimtxsty")$ k8 \" B1 e' z/ l) F* l
  9613.             (setq odvar (cdr (assoc 2 (entget odvar)))
    ) V2 w6 C% }, g0 C7 Z, g- f3 t
  9614.                   ndvar (cdr (assoc 2 (entget ndvar)))
    3 S8 K5 [3 u, \% Y. ]) j& p8 A6 E
  9615.             )
      }6 w2 w6 ^: d) N5 l, R6 {7 |
  9616.         ): M9 _6 a  P, M* G% \

  9617. ! W6 R8 i6 s0 R6 N2 u% k
  9618.                 ;
    ) a1 f; N% W; o; Q, r& R) d
  9619.                 ; In order for DIMOVERRRIDE to operate correctly with string$ ?+ G% W6 U: m! w8 Z& o
  9620.                 ; based dimvars, we must pass "." versus NULL strings.1 o5 w" i3 A7 y( u" R9 B
  9621.                 ; In this case ndvar is the new dimvar value the user wishes
      c# i7 b) v+ M# y& p9 K9 Y
  9622.                 ; to update on selected dimensions./ c- ?- j8 t7 w8 n! L3 L/ x: V
  9623.                 ;& J, k2 J2 V1 `9 D5 V& g
  9624.             (if (/= ndvar odvar)
    , `3 F3 V% N, T+ `4 d, X8 ^% N
  9625.               (if (= 'STR (type ndvar))
    ; [) f$ v7 |* A3 w
  9626.                 (if (= ndvar "")
    2 R4 W& y* G! }- N, u
  9627.                       (setq ndvar "."))))
    5 i. q& S' z( e0 s& t( s7 x0 f4 _% K1 I
  9628. ' T5 M: n7 g2 K! ~6 R
  9629.         (if (/= ndvar odvar)0 F* e8 B8 M8 y4 t/ w& o
  9630.           (progn# W( k; |, E* D
  9631.             (setq dv (strcat "_" dv))6 K) P- ^6 D' |' [6 ?( R
  9632.             ;
    / ^8 [% l3 ~- e- d4 {3 p( j# a8 V
  9633.             ; Start the dimoverride command
    7 q8 z4 c5 c/ x& E8 c& b
  9634.             ;
    7 v! R. b: ^6 Q
  9635.             (if (not commandIssued)$ l4 f1 t4 E1 d7 t% T
  9636.                (progn
    : J6 q$ J4 E: ?! h' v
  9637.                  (command "_.dimoverride")
    - k& b& I4 N* r
  9638.                  (setq commandIssued "T")$ U& D% t" W1 {# J
  9639.                )
    % N+ J' L  j( d- K% G+ }
  9640.             )
    ( e: P2 k( w# N- @
  9641.             ;
    7 d2 C2 T* V1 ~; y/ Z  ~
  9642.             ; Issue dim overrides9 l' _# o4 ?+ y
  9643.             ;
    & K8 H- q9 n# \3 O; j
  9644.             (if (and (or (= dv "_dimclrd") (= dv "_dimclrt") (= dv "_dimclre"))+ R4 R4 w6 _. `! l) _
  9645.                      (or (= ndvar 0) (= ndvar 256))
    8 Q# ^8 u! o# ~3 j* p
  9646.                 )
    5 a. z) ~) `0 l) ^8 G
  9647.               (progn+ r0 _: l7 H# E0 _( ~
  9648.                 (if (= 0 ndvar) (command dv "BYBLOCK"))8 N; _! s4 J1 h4 ]& y
  9649.                 (if (= 256 ndvar) (command dv "BYLAYER"))
    ( P# R4 S; L+ K) o, _
  9650.               )0 d' i2 V) w9 j1 K! W( x4 R
  9651.               (command dv ndvar)4 z# r8 y$ W$ _1 b* x0 H$ D  U3 [
  9652.             )
    4 w  e# J; g  n+ f# L: T7 y6 I
  9653.           )
    2 ]; k. O, C/ e! I
  9654.         )
    : A0 E  L7 A5 O) r* Q
  9655.         (setq i (1+ i))2 `+ P" y# n! P; \) D& }% c
  9656.       )
    % d: J- E9 M* M
  9657.     )
    ' ^8 P9 V: a' a" n4 a7 `  g# y2 A4 ]
  9658.     ;
    6 j% {/ t3 I$ R2 ]7 B
  9659.     ; Select Entity and terminate command+ r: p1 @; s+ S* I. j6 j$ @: `5 }
  9660.     ;4 O' {% E* y: r5 c, @6 G0 S
  9661.     (if commandIssued3 N' R/ d! k$ w, [% ?+ j0 B
  9662.         (command "" dime "")
    & G  m8 I7 w0 E9 t! \* |
  9663.     )  k. I" W0 l2 C. @$ C1 U- i
  9664.   )$ o* U/ P0 Y+ R

  9665. ! R  l. B. @- A8 y0 P$ L8 x$ j; n
  9666.   ;;
    8 d" g" [- {( M
  9667.   ;; Get style name currently selected style name.
    , g  B8 f" c4 K0 w# l2 P
  9668.   ;;& q) c2 H6 O; E2 W, I9 s

  9669.   k" @. K/ o& B2 F
  9670.   (defun ddimen_style (/ dimsty)
    7 |, [1 g5 z9 r
  9671.     (setq dimsty (nth (atoi (get_tile "mod_style")) stlist)6 }4 Z3 ~+ g  d. I9 u+ F
  9672.           dimlist (ddimen_getdimvars dimsty)
    / I- X0 J, F' e
  9673.     )
    ) o/ k- ?# F; m& s* Q2 I
  9674.     dimsty
    * G. D% T7 e* ]
  9675.   ); i1 L/ M1 W$ T; l# A& k6 r$ _$ x- L7 @
  9676. * s9 e, d" ^% D6 d
  9677.   ;;* _1 S& X; u" @/ y8 x, i9 t7 I* w1 a
  9678.   ;; Set dimvars
    8 a4 m( L8 m. h' Y/ I; T+ k
  9679.   ;;' Q" \" W$ t+ K1 t
  9680.   (defun ddimen_setvars (dimsvcurset / dv i)/ X, o# ^( M$ ~4 g, |& o$ Q$ ?4 |
  9681.     (setq dv (cdr (nth 1 dimsvcurset)))4 P6 Y8 ~: m- E
  9682.     (command "_.dimstyle" "" dv)
    ) @7 v; N$ p0 y7 R
  9683.     (setq i 3)
    - F! u2 n2 Y! Z: o0 a& O: L3 X
  9684.     (while (setq dv (nth i dimsvcurset))9 B$ o: g0 t5 \8 h( i% Q
  9685.       (progn
    # U+ N2 D6 ^& q- H0 D0 ]
  9686.         (setvar (car dv) (cdr dv))
    - }! l% \. w& D
  9687.         (setq i (1+ i))6 J9 l* H5 _* S) X% [# f2 @
  9688.       )
    & g% y% L! W, D. k+ C6 Q7 K* E
  9689.     )+ y# ^8 J7 V% {3 Z
  9690.   )$ m( E; p7 x" b3 K7 n8 q
  9691.   ;;
      ?5 M1 Y7 D0 q; p2 ?
  9692.   ;;  End-of-dimension
    . I+ ?- l2 x1 x$ ^
  9693.   ;; ==================
    & ^. o* j! g- b# Z' F4 k

  9694. 1 S6 F! a& w1 _! ?
  9695.   ;;
    3 n, e. N6 I4 w% S% v, E8 Y
  9696.   ;; Sub-dialogues for properties.  Common to all object dialogues, ~0 J$ q5 ^7 a5 }
  9697.   ;;! i2 P& p3 q- ?% P  Q
  9698.   ;; This function pops a dialogue box consisting of a list box,image tile, and
    , X6 Z- M% c& H4 C6 `
  9699.   ;; edit box to allow the user to select or type a color number.  It returns% }. G2 o& [/ d9 x; g# l& h
  9700.   ;; the color number selected.- b; s8 S; j1 s6 O/ X( P- `
  9701.   (defun getcolor (/ old-idx colorno cname lay_clr)  e) M! K5 e/ l- r
  9702.     (if (= (get_tile "error") "")/ h( F2 y6 f( U* S7 c2 h4 R( u
  9703.       (progn! k+ b0 i. y. c( k
  9704.         ;; Get the color associated with this object's layer, for use
    3 x$ Z% t" _: B
  9705.         ;; in the color swatch if the user selects color BYLAYER.
    / F5 |; w; c/ |% Q
  9706.         (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))
    / |3 r& \) ~, l# \" w
  9707.         (if (numberp (setq temp_color (acad_colordlg ecolor T lay_clr)))
    ; [7 Z/ p  J" G) O: g, w6 M0 c$ ?
  9708.           (progn- m9 a+ r. x* ?- Y! r3 R4 F: h
  9709.             (setq ecolor temp_color)
    # @: o( ^5 i' E4 P' y' H
  9710.             (setcolor)
    9 ^" Z' h4 q- b3 \
  9711.           )
    0 x6 V& t6 M4 i  c$ q8 r
  9712.           (setq testcolor temp_color)  T6 F# G( c$ _; k  @& z' l4 m
  9713.         ); T9 m3 A  F+ x- E6 d
  9714.       )
    : ~  Z# g. W9 ~4 E# h0 Y1 @' i
  9715.     )) h$ q- u* k( @! Y- c- @$ `
  9716.     ecolor
      E8 L$ e$ q8 K- w
  9717.   ). K5 L' g, `3 `/ B7 K
  9718.   ;;
    0 K. W1 ~) R' y
  9719.   ;; Function to set the color tiles.
    2 _2 y2 ?6 q* \
  9720.   (defun setcolor()
    % E) q/ F+ }7 ~: u3 v5 p: A0 g7 K
  9721.     (cond
    " d3 ~+ g5 g, b. }
  9722.       ((= 0 ecolor)# u; Z" L, a# ]0 w
  9723.         (set_tile "t_color" "BYBLOCK")0 J2 i+ L8 I5 x" D& q8 N
  9724.         (col_tile "show_image" 7 nil)    ; show BYBLOCK as white, Z9 c. }) Y/ a" U
  9725.       )( P2 F$ v! p1 i9 |; i' X0 D& d
  9726.       ((= 1 ecolor)
    8 \' `4 h, m6 `/ k; O8 z3 e
  9727.         (set_tile "t_color" "1 red")3 w) G9 u. }/ I" }" J' H
  9728.         (col_tile "show_image" 1 nil)3 j6 r  X4 e1 i/ k. U+ F% x
  9729.       )
    ) g+ Q- `8 D) n3 h* H, O9 E
  9730.       ((= 2 ecolor)
    . d2 R' P; |" f$ V8 ^
  9731.         (set_tile "t_color" "2 yellow")2 I4 `% F2 _, x, P& k7 g9 R! d7 e7 w
  9732.         (col_tile "show_image" 2 nil)- [2 L: I8 \) E, x4 ~
  9733.       )
    / ^; J/ p+ M$ L5 ]
  9734.       ((= 3 ecolor)
    ' o$ }$ I# g# {: K) o
  9735.         (set_tile "t_color" "3 green")
    ( J4 j. P# x- }) F4 z/ u$ @; }% I
  9736.         (col_tile "show_image" 3 nil)
    & ~2 Q4 X: _9 ?
  9737.       )
    : C1 b6 C- ]. k8 Q+ L0 U
  9738.       ((= 4 ecolor)
    % J. x: ^! }  a3 u- h
  9739.         (set_tile "t_color" "4 cyan")( v- k( @0 g# f7 Z, |- n+ }9 [! l
  9740.         (col_tile "show_image" 4 nil)
    9 x' `# s; q8 G8 v% q! V
  9741.       )
    3 B2 p9 v& ?4 a1 D8 Z5 p( S$ |$ ?3 w. L
  9742.       ((= 5 ecolor)' Z  X. f* b1 j: Q
  9743.         (set_tile "t_color" "5 blue"). ]+ J8 L5 g# G/ Z( ~* q) J
  9744.         (col_tile "show_image" 5 nil)
    5 d* ~- h$ l' F+ K  o& \* j/ v
  9745.       )- E! V% G. s. r1 g2 Y9 q
  9746.       ((= 6 ecolor)
    & o% E) H6 t% V9 D+ R3 P5 ~( c
  9747.         (set_tile "t_color" "6 magenta")( D, N! i  n4 c7 f
  9748.         (col_tile "show_image" 6 nil)
    0 U% P  y* s7 E; N
  9749.       )
      V5 i- x. x  G2 l- w
  9750.       ((= 7 ecolor)  ?+ |8 L( K0 h! |
  9751.         (set_tile "t_color" "7 white")2 h) ^1 A6 W) M' w4 E0 M
  9752.         (col_tile "show_image" 7 nil)
    : I& Z# d7 s' Z# e
  9753.       ), S  i# Q+ s5 @# T8 h! F* G; b, F
  9754.       ((= 256 ecolor)
    ( e; ?# |8 `6 ~
  9755.         (set_tile "t_color" "BYLAYER")4 \$ Z0 A% h! ]7 W7 v. k
  9756.         (col_tile "show_image" (bylayer_col) nil)
    ( j6 Z9 v# R1 |# {  h4 w0 a# n
  9757.       )3 Y+ I" ]4 |- Q' F  o
  9758.       (T  A. y+ S8 {; f% }3 Q. x
  9759.         (set_tile "t_color" (itoa ecolor))* a3 W2 `" [' k/ X$ t% T
  9760.         (col_tile "show_image" ecolor nil)
    $ s$ }3 ?+ k1 }& O" ^
  9761.       )- r" p% Q+ f2 x, H
  9762.     )) e$ I. b5 g+ @" H7 d
  9763.   ), G# B( d5 t% ]
  9764.   ;;9 G0 c: ^/ c9 `6 T( \( @0 G
  9765.   ;; This function pops a dialogue box consisting of a list box, image tile, and
    & S9 P9 o; L) I- C7 d: s
  9766.   ;; edit box to allow the user to select or  type a linetype.  It returns the
    / I6 ~% c( B4 ^7 W* f
  9767.   ;; linetype selected.! e, t% ]6 K' a: q  a
  9768.   ;;
    7 U$ Z9 V! m9 ]; O5 `" [0 J
  9769.   (defun getltype (/ old-idx ltname)
      N0 t6 D5 h3 K* K- ]* l
  9770.     (if (not lt-idx), J" x( D7 x* A! |, I! o
  9771.       (progn
    3 z# K! l$ J( m) z9 F- l
  9772.         (make_lt_lists)             ; linetype lists - ltnmlst, mdashlist* x* A6 N( @9 n- E5 g, Y' W% `$ D
  9773.         (cond6 o% o$ w3 P  B1 l2 I7 i4 H
  9774.           ((= eltype "BYLAYER"). T1 b4 Q* U+ |' |' r9 g7 K+ f1 R$ d5 \
  9775.              (setq lt-idx (getindex "BYLAYER" ltnmlst)))
    ! ^+ _, ?4 b- \( N; z
  9776.           ((= eltype "BYBLOCK")
    1 c2 O- A9 g2 \& L* W6 |7 [" B
  9777.              (setq lt-idx (getindex "BYBLOCK" ltnmlst)))5 i6 t# \- W/ U, s- i; L
  9778.           (T (setq lt-idx (getindex eltype ltnmlst)))
    / e" V: ]7 s& n4 ?5 J2 x% M+ [: K
  9779.         )5 l- H, E+ |$ _5 C& j
  9780.       )  u7 D/ i' y' A- l: `$ {
  9781.     )
    : I) @2 g: ?7 b
  9782. 8 |6 p4 y2 X+ o6 A0 i% T. m
  9783.     (if (= (get_tile "error") "")4 Q& M/ c8 K/ ]* F5 M+ z+ }
  9784.      (progn
    2 `5 N7 k" P5 G; d
  9785.       (if (not (new_dialog "setltype" dcl_id)) (exit))
    0 k( `5 f3 m( c  B
  9786.       (start_list "list_lt")
    % X' u# `$ K( g; e) R1 a% B
  9787.       (mapcar 'add_list ltnmlst)  ; initialize list box! T; H' x& u; X$ i
  9788.       (end_list)
    ( _: Q$ M# F% A+ ^/ p
  9789.       (setq old-idx lt-idx)- d0 p, b5 b6 R% w; Q. S" P" X
  9790.       (ltlist_act (itoa lt-idx))* ]! x1 e6 X2 j; g4 b
  9791. " s* v. T7 T7 C  ]9 X
  9792.       (action_tile "list_lt" "(ltlist_act $value)")
    6 j6 t* ~! B; n* v
  9793.       (action_tile "edit_lt" "(ltedit_act $value)")/ F* [1 f3 S/ Z& b! ]
  9794.       (action_tile "accept" "(test_ok)")9 x0 t! k+ y3 g/ W9 {0 d" _: M; W6 L
  9795.       (action_tile "cancel" "(reset_lt)")1 _! n; ~& ]' g. ], F: |5 j- P
  9796. , n6 h4 T# |: Z
  9797.       (if (= (start_dialog) 1) ; User pressed OK
    . F% i' h! i4 w  K$ G9 G9 r3 V
  9798.         (cond
    4 A+ E% A( F* {" o; `( f2 n
  9799.           ((= lt-idx 0)3 M, z; V+ I2 C3 U. {
  9800.             (set_tile "t_ltype" (bylayer_lt)): E# Q+ t2 p& D' m* m. F
  9801.             "BYLAYER"" F' `7 i0 e1 u* J- M8 u
  9802.           )) |! E& X+ ?5 I; P, ]" K
  9803.           ((= lt-idx 1)! V0 p4 z! ]! f9 M( }# I' j
  9804.             (set_tile "t_ltype" "BYBLOCK")
    5 M7 R3 u) a6 Y: _: l
  9805.             "BYBLOCK"/ r4 z' E: r3 O( i/ e
  9806.           )
    . e& a- p& R1 C5 g& u, ^
  9807.           (T  (set_tile "t_ltype" ltname) ltname)
    - T( o, m& J2 V  G
  9808.         )
    * B& B# @5 V; C* t  u* c
  9809.         eltype' Y( F3 w, I3 v1 D" A
  9810.       )
    ( o6 R) i% y- B" X! h
  9811.      )% r# P& y7 w3 u$ ^! j$ s
  9812.      eltype
    0 y( D- j. i0 {; w( V9 f
  9813.     )8 m/ W, ^0 J/ p/ y) x0 z
  9814.   )  |% i: o! M/ I
  9815.   ;;
    . E2 b! n! o2 u3 F# i* c
  9816.   ;; Edit box entries end up here9 n- Y/ g; h2 X# h" u
  9817.   (defun ltedit_act (ltvalue)% R/ u0 S+ \: b* {
  9818.     (setq ltvalue (xstrcase ltvalue))
    4 B  X0 ^. r- G+ s
  9819.     (if (or (= ltvalue "BYLAYER")" j! D" {0 G8 C$ b: I! j
  9820.             (= ltvalue "BY LAYER"))& i2 ~1 [4 N/ T3 N. @! _
  9821.       (setq ltvalue "BYLAYER")
    6 \1 `0 h/ S6 o2 t
  9822.     )
    / a9 P4 t$ S( F% v4 S! T& a+ ?; g9 H
  9823.     (if (or (= ltvalue "BYBLOCK"), h: @* s) S! g6 o6 O; P' V8 G0 u9 E
  9824.             (= ltvalue "BY BLOCK"))3 R$ F) P4 C& G" u3 l
  9825.       (setq ltvalue "BYBLOCK")
    , T% E, E  Z4 r! L& c6 x) B, l
  9826.     ), E& c( T9 o- d4 n4 k1 d" H
  9827.     (if (setq lt-idx (getindex ltvalue ltnmlst)), }$ m. p6 w0 Y' J3 O' }3 A
  9828.       (progn
      d7 U* i0 T6 K; I4 Z
  9829.         (set_tile "error" "")9 I' ]" y2 }! d6 b
  9830.         (ltlist_act (itoa lt-idx))
    ( B+ J; p( `9 W8 s
  9831.       )
    - R1 h1 T) I/ d9 U3 d# a
  9832.       (progn5 `0 N: [/ T8 N
  9833.         (set_tile "error" "Invalid linetype.")
    . l% v! p$ y+ \  p/ g
  9834.         (setq lt-idx old-idx)
    6 ^6 _4 J4 P7 d$ @# x7 F2 X2 ]" f" Z: Z
  9835. ;;        (mode_tile "edit_lt" 2)4 c. \: M8 I6 ]+ Q9 z- z! O9 A0 |
  9836. ;;        (mode_tile "edit_lt" 3)
    $ y6 C0 {+ r4 E0 M* Z
  9837.       )
    , c( y; O" K% C9 j3 u0 D
  9838.     )
    9 b% L) E  M8 t. P6 K/ R$ O) K
  9839.   )* U$ ]6 c2 ?$ Q" \6 j5 A$ [% [5 y
  9840.   ;;- B8 V% i4 P2 t2 R7 _) q! o/ a* _6 {, w
  9841.   ;; List selections end up here.  Update the list box, edit box, and color
    % }, \8 t, g/ t
  9842.   ;; tile.) B$ d* _; r' O8 y4 X. C" K
  9843.   ;;
    , k7 o  b' F4 s9 z& Y( {& z
  9844.   (defun ltlist_act (index / dashdata)1 n  _& u; z6 l. a; |
  9845.     (set_tile "error" "")
    - K- @1 X6 H; x  Z% G
  9846.     (setq lt-idx (atoi index))
    6 Z' }# J/ [% w' `7 q
  9847.     (setq ltname (nth lt-idx ltnmlst))7 a; `1 k; `6 c* |9 P3 a
  9848.     (setq dashdata (nth lt-idx mdashlist))  n) r: U+ z2 ^& Y- F$ d
  9849.     (col_tile "show_image" 0 dashdata)( H. ]& }3 d9 W5 h- p" v& V8 ~
  9850.     (set_tile "list_lt" (itoa lt-idx))
    ( [7 Z8 n# D( [6 c' N$ m
  9851.     (set_tile "edit_lt" ltname)8 O. t8 t4 Q% J) q6 b. d% ^  Q
  9852.   ): r) P4 ?( ?5 b) M* B) Z9 A5 A
  9853.   ;;6 ~) R% }4 e- m2 \
  9854.   ;; Reset to original linetype when cancel it selected
    * z, x" J" r9 z, i
  9855.   ;;7 f: P& V( L( m8 b
  9856.   (defun reset_lt ()
    $ V: T- f, r. G7 J
  9857.     (setq lt-idx old-idx)
    ; ~6 t( r  x( d  b8 b4 G1 g
  9858.     (done_dialog 0)% j8 B  ~. Q8 i+ w( c. {
  9859.   )
    9 }( B% T$ W2 Z
  9860.   ;;% B$ x2 }: O8 K6 P# L
  9861.   ;; This function pops a dialogue box consisting of a list box,image tile, and
    $ S5 J; C" G6 Z& E: E9 D+ K
  9862.   ;; edit box to allow the user to select or type a layer name.  It returns the
    " ?6 ^2 c, e$ E5 l
  9863.   ;; layer name selected.  It also has a button to find the status (On, Off,# Q% T. [8 t0 B8 ^
  9864.   ;; Frozen, etc.) of any layer selected.( ^) ]+ G0 r% ]1 J/ k$ x( V
  9865.   ;;! J& Z# X/ q4 g" o2 \: s6 P
  9866.   (defun getlayer (/ old-idx layname on off frozth linetype)
    6 M5 p0 a7 Q; ?& T/ X8 M# R; O9 j
  9867.     ;; Create layer list the first time the layer
    8 B& }6 P$ I1 k  b" ]/ R/ f1 V0 i
  9868.     ;; dialogue is called.$ w' C- y7 x/ Z  }' o# T
  9869.     (if (not lay-idx)
    # @% c  Y# h% u. P, v7 h; b
  9870.       (progn- u  x2 A1 P& A! i# `
  9871.         (make_lay_lists)
    " X, X! U6 h2 w8 G6 O
  9872.         (setq lay-idx (getindex elayer laynmlst))
    + a% {1 F8 v# @8 f- x
  9873.       )" I3 d. S" U" g, l) g( f8 L1 U8 H  Z
  9874.     )  J) r& l' c9 ?) G" O
  9875. 5 g" S$ I+ u9 a
  9876.     (if (= (get_tile "error") "")
    , G8 z$ A5 r: ~
  9877.      (progn
    3 M$ F% M2 a0 h  k, A* e8 K
  9878.       (if (not (new_dialog "setlayer" dcl_id)) (exit))/ u! l" @/ Y4 r
  9879.       (set_tile "cur_layer" (getvar "clayer"))
    ; d1 x2 a6 y3 o0 \+ W3 \# D  V
  9880.       (start_list "list_lay"), v9 y# t  ?' I4 U" Q
  9881.       (mapcar 'add_list laynmlst)  ; initialize list box8 c3 `# G6 S; h1 N. F8 A& S
  9882.       (end_list)
    ( Z2 g2 w! e1 l- p( J
  9883.       (setq old-idx lay-idx)5 [/ T5 \) Q2 a1 ?3 s- i& V
  9884.       (laylist_act (itoa lay-idx))
    ; e% {/ g9 c5 |# ^# ^
  9885.       (action_tile "list_lay" "(laylist_act $value)")# a' k. h" s8 S# h
  9886.       (action_tile "edit_lay" "(layedit_act $value)")
    3 x$ D3 l4 u3 Y% |/ \
  9887.       (action_tile "accept" "(test_ok)")
    ! I+ ?4 S. G* T" F7 |; G2 S; v
  9888.       (action_tile "cancel" "(reset_lay)")
    + ~' ]2 K4 W8 [6 I, k5 i
  9889.       (if (= (start_dialog) 1) ; User pressed OK. a0 I' k' a8 Q5 `/ `
  9890.         (progn$ Y6 L5 [) O1 C# I6 I
  9891.           (set_tile "t_layer" layname)
    : l5 q- }. W2 M- \
  9892.           (setq elayer layname)" c4 U8 ?" f1 M
  9893.           ;; If layer equals bylayer reset color tile" I$ E! p+ Z8 B6 S( X0 W
  9894.           (if (= ecolor 256)( o: a, W" g: k) M0 Y6 R8 H: T
  9895.             (col_tile "show_image" (bylayer_col) nil)9 r# ^2 g5 K2 ^! }( O
  9896.           )6 @$ B$ P& ?) o5 w. p
  9897.           layname& U* P2 p7 {  @! p
  9898.         )# l/ P; x& Q& M" v3 }( b
  9899.         elayer
    $ L8 t* m# C! n0 D0 s; G
  9900.       )7 n8 t+ v. r: Z+ P
  9901.      )
    6 L' i" @# J$ ]% A8 G# n
  9902.      elayer
    4 {* [' e: r, B* z
  9903.     )
    * l5 g1 N7 ]+ s
  9904.   )
    $ b9 C8 D/ c7 h9 Q& w
  9905.   ;;) K' x" c) w' e
  9906.   ;; Edit box selections end up here.  Convert layer entry to upper case.  If' }! H0 y" U; u* d* Z1 Q
  9907.   ;; layer name is valid, clear error string, call (laylist_act) function.
    ; v1 p0 N6 N  O, ~
  9908.   ;; Else print error message.
    3 l; k9 n) s; Q$ S+ y- T% @
  9909.   ;;6 Y; e4 u3 j- w3 T( h
  9910.   (defun layedit_act (layvalue)
    # }, u5 r, h* f  G$ y1 x3 h
  9911.     (setq layvalue (xstrcase layvalue))
    / r. Y& \9 C2 k5 y. H/ [5 n
  9912.     (if (setq lay-idx (getindex layvalue laynmlst))3 b& Q9 K" [2 D4 j9 @
  9913.       (progn3 i3 m2 v( ~# }# j8 N7 N* n0 {
  9914.         (set_tile "error" "")
    9 z' D& D# ^2 h" }7 U; H
  9915.         (laylist_act (itoa lay-idx))1 m4 X% u. I0 }0 z& j& ?2 m/ p! P
  9916.       )
    ) [" ^/ v0 o1 Y4 |8 w
  9917.       (progn- z$ M9 M4 y3 {9 ]5 c
  9918.         (set_tile "error" "Invalid layer name.")8 _. N& w& P1 o+ `0 p+ R
  9919. ;;        (mode_tile "edit_lay" 2)
    4 H5 D( E0 y: e2 j7 K4 y
  9920. ;;        (mode_tile "edit_lay" 3)/ q/ q9 V& R+ {2 f& d
  9921.         (setq lay-idx old-idx)) t* Q0 l# A$ [
  9922.       )
    8 P, @2 s6 g" w
  9923.     )
    5 E1 q# U* P0 U" V* B3 \* J, [
  9924.   )
    " G- ~+ I/ O+ Q2 `% f, f2 v
  9925.   ;;
    5 Q) y' \) d, {( ]. D7 B9 A
  9926.   ;; List entry selections end up here.
    % R$ E' y9 u/ W# i& ^* v
  9927.   ;;* f: B  I0 A+ M& q4 m
  9928.   (defun laylist_act (index / layinfo color dashdata): w" j  w  j3 ?9 A# m
  9929.     ;; Update the list box, edit box, and color tile.
    * O1 r3 {# U* O9 r+ D4 y1 [& O
  9930.     (set_tile "error" "")
    4 S' ~; k$ G/ T& J' E
  9931.     (setq lay-idx (atoi index))( ?0 F* a* p9 P4 t5 g+ ^% J
  9932.     (setq layname (nth lay-idx laynmlst))* t+ {, @5 n5 r: l* i4 [
  9933.     (setq layinfo (tblsearch "layer" layname))
    ( U" J5 N: P: f% D! n* Q0 f1 @
  9934.     (setq color (cdr (assoc 62 layinfo)))0 f  T% }* l/ `3 H6 M# E1 }
  9935.     (setq color (abs color))7 V$ F7 L; e  m7 _/ ?" g
  9936.     (setq colname (colorname color))+ U0 q, w/ W, I' }
  9937.     (set_tile "list_lay" (itoa lay-idx))
    # w, _& e$ X- [* u0 E
  9938.     (set_tile "edit_lay" layname)
    * K8 f' Q# M/ I% R
  9939.   )6 I0 o, a! A3 p8 o9 m
  9940.   ;;
    : p8 {) P9 ~% i) {* t6 p0 g$ F. S
  9941.   ;; Reset to original layer when cancel is selected.
    ) }# q2 Y: f# \0 w5 s. E
  9942.   ;;
    , q9 ?4 W2 k* l
  9943.   (defun reset_lay ()( q9 P1 J2 Q7 H8 V( A- o1 o* I! T
  9944.     (setq lay-idx old-idx)
    ) L4 `' y+ a2 f8 C( v
  9945.     (done_dialog 0), Q( e! ]6 k4 s9 `
  9946.   )9 |: J& q! u2 |( j3 C: D! |
  9947.   ;;
    # \( j- C' b: E9 s! x) F7 I& @
  9948.   ;; Checks validity of thickness from edit box.' N2 l" m8 Q8 p1 u6 l/ A: u" N
  9949.   (defun getthickness (value)
    ' f: w+ y& D: e6 F) }
  9950.     (setq ethickness (verify_d "eb_thickness" value ethickness))
    ) I! k( d7 R2 e
  9951.   )0 O  g: K$ N- A. `7 Q
  9952.   ;;; a- Q# w! S4 j# W& t: A6 ^2 u
  9953.   ;; Copy of (getthickness) for ltscale.  If more, make this function
    0 A& y% T+ {* Q! L) C: {
  9954.   ;; generic.5 A: X# e$ M9 m: G1 \$ Y
  9955.   (defun getltscale (value)
    - W: y) D, T8 b& ?1 D+ P
  9956.     (setq eltscale (verify_d "eb_ltscale" value eltscale))! ~: `1 b, I$ _- a' [3 l( I  D
  9957.   )2 ~: ^8 Q: P& k) I% S
  9958.   ;;
    ' U% Q8 R; X2 b9 V, B/ N0 I& x1 W
  9959.   ;; This function makes a list called laynmlst which consists of all the layer
    ' `6 }! ~! `8 N
  9960.   ;; names in the drawing.  It also creates a list called longlist which3 h! U. j+ V: h
  9961.   ;; consists of strings which contain the layer name, color, linetype, etc.
    " x; f- n, Q. U3 k* t
  9962.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the
    0 ]/ o) ]" P; h- A* Z
  9963.   ;; same.
    2 V" f' c# Q! c  J4 s
  9964.   ;;& c1 }) j# h$ E0 `) G
  9965.   (defun make_lay_lists (/ layname sortlist name templist layer_number)
    * [. B7 Z0 j  j2 \* y' K# p
  9966.     (setq sortlist nil)
    ! }4 C0 ]" l; y* }, J" z. ^
  9967.     (setq templist (tblnext "LAYER" T))
    , d& I' U' V% ]
  9968.     (setq layer_number 1)
    3 G* x: U+ B/ E' Y+ F% u, D' L
  9969.     (while templist" i: V; i! m& [- z1 i# |  {3 b
  9970.       ;; No xref dependent layers, please.; z5 B6 z7 L9 s7 D
  9971.           (if (/= (logand 16 (cdr (assoc 70 templist))) 16)( `* M7 O& R# @; y% A' p# T) ?$ i! ?
  9972.             (progn
    * o  p* x. P  n" @# d
  9973.               (setq name (cdr (assoc 2 templist)))  h3 i' w$ y$ ]
  9974.           (setq sortlist (cons name sortlist)): u( W: [. ]2 W( N
  9975.         ). t4 K. c5 }1 s* d+ N
  9976.           )  ^4 K4 b' s4 r' t
  9977.           ; Get the next layer.
    2 w: t' {% A0 w
  9978.       (setq templist (tblnext "LAYER"))+ q0 Y1 n; L" h; o! j6 y
  9979.       ;; Not dead message...: z7 ?' G/ I1 q/ `
  9980.       (if (= (/ layer_number 50.0) (fix (/ layer_number 50.0)))7 y5 e+ R" C  d) C: E
  9981.         (set_tile "error" (strcat "Collecting..." (itoa layer_number)))
    % s% D$ U  U2 e4 Q3 m
  9982.       )" k. q* v: }& n- j; W) L
  9983.       (setq layer_number (1+ layer_number))
    # k- N2 t0 b% k8 N" }& o
  9984.     )9 {6 N9 I6 D* i0 o2 b. Z* `$ q6 ^1 H
  9985.     (set_tile "error" ""), t, R8 h: U* I1 {8 P' T+ M: T; D
  9986.     (if (>= (getvar "maxsort") (length sortlist))
    ) `; e" W  d( }' b! ~) a8 S- L% F% q
  9987.       (progn
    " Q$ q( T3 e% Z" z: v* E
  9988.         (if (> layer_number 50)
    1 X* Q- K, R& ^  m2 Q# ~/ B
  9989.           (set_tile "error" "Sorting...")8 H5 {. R8 a5 g; b; ~6 [9 b
  9990.         )
    # E9 C3 T) \! V, A
  9991.         (setq sortlist (acad_strlsort sortlist))
    $ g8 [6 g7 b' `( E! x% N* @! j1 U  g
  9992.       )
      E# y& Y# _: f% @; u; a
  9993.       (setq sortlist (reverse sortlist))
    5 W0 _5 o. b4 p6 E
  9994.     )
    9 V4 D5 V( d: q2 c# `
  9995.     (set_tile "error" "")$ C8 z8 Z; H' j0 T" `/ v8 h5 Z
  9996.     (setq laynmlst sortlist)6 w# H4 M( h  R- u1 o
  9997.   )9 p: @9 f# q1 z% ?& t' i
  9998.   ;;5 {7 }8 D- m8 M1 Q
  9999.   ;; This function makes 2 list - ltnmlst & mdashlist.
    , n9 f' u. ^6 N: i
  10000.   ;; Ltnmlst is a list of linetype names read from the symbol table.  Mdashlist
    ; a: M  p% Y) x" \
  10001.   ;; is list consisting of lists which define the linetype pattern - numbers/ w, N. l2 \3 X6 p
  10002.   ;; that indicate dots, dashes, and spaces taken from group code 49.  The list
    ' L* Q  n2 G% I4 d6 b
  10003.   ;; corresponds to the order of names in ltnmlst.
    8 q$ A( c: U: l- `" x( H" a) m
  10004.   ;;% t9 W  Y! u. B, R( t! G
  10005.   (defun make_lt_lists (/ ltlist ltname)! |3 ]/ p" m8 b& _$ p, g' F$ O
  10006.     (setq mdashlist nil)
      L$ l- b' u/ V; z" z: Z
  10007.         (setq sortlist nil)
    / J8 M! ]. E3 l$ {# A: X/ q- j
  10008.         (setq ltype_number 1)
    9 l& A- d+ f. y. ?5 k
  10009.     (setq ltlist (tblnext "LTYPE" T))
    9 x- O( R0 U5 R" G" _) t" W
  10010.     ;;(setq ltname (cdr (assoc 2 ltlist)))7 @: `$ o. B3 }- j: ]* t4 n+ D3 S' e" {2 z
  10011.     ;;(setq ltnmlst (list ltname))
    - V. m/ u* c. a4 S  d8 D
  10012.     (while ltlist9 Z! E4 {5 g+ ^- n9 v
  10013.           ;; No xref dependent linetypes, please.+ s5 d3 j; F5 m/ r) _
  10014.           (if (/= (logand 16 (cdr (assoc 70 ltlist))) 16)
    7 K9 o5 y" F2 t
  10015.             (progn
    & M  f8 Q  S0 s& t0 v1 N3 R% _. ]
  10016.           (setq ltname (cdr (assoc 2 ltlist)))
    , I; v: r" T( K$ Z
  10017.           (setq sortlist (cons ltname sortlist))
    % `; q$ |* ~1 A; v- I
  10018.             )
    * J$ F0 |# @  @( R% j9 e
  10019.           )& N8 T' b+ R5 r  }: K
  10020.           ;; Get the next linetype.
    - c) Z8 |7 E4 ?6 ~$ u7 w) i  ^
  10021.           (setq ltlist (tblnext "LTYPE"))' q2 P/ B+ a- r6 N' T  K# M) z

  10022. 2 J4 U- O. c5 M1 @4 b3 j
  10023.           ;; Not dead message...
    1 O! ~% k0 _/ |' Q4 r1 S
  10024.       (if (= (/ ltype_number 50.0) (fix (/ ltype_number 50.0)))
    / N6 P9 I1 M2 f- ], Q& p
  10025.         (set_tile "error" (strcat "Collecting..." (itoa ltype_number)))
    5 E9 q  }$ F6 [) @3 y. W1 Y. h5 r# F- G
  10026.       )
    , r: C: a# \+ Z) D( z) I: q9 L  g
  10027.       (setq ltype_number (1+ ltype_number))' S0 t$ H2 o& @4 M" U% m- O9 P
  10028. 1 D* N* d7 X  A! w
  10029.     )% i% {2 o5 L; t( q# i1 ]

  10030. + v' @2 r" J. N: Y- ~
  10031.         ;; Remove Collecting message.
    , |& z6 n% F& H5 Q: e, F: `4 i
  10032.         (set_tile "error" "")
    + J5 U! t7 L0 [" {1 h

  10033. 5 S* ~% O; R0 K9 _+ R
  10034.     ;; Sort based on maxsort.% [6 Z& C0 h; l, |$ G
  10035.         (if (>= (getvar "maxsort") (length sortlist))
    ) k4 {9 }' S* T7 o8 j
  10036.       (progn
    5 K3 E% g& {5 C
  10037.         (if (> ltype_number 50)2 K* D7 }; V0 p) {, r/ m' g# c
  10038.           (set_tile "error" "Sorting...")/ z8 G6 C! P2 ~; ]: [; p
  10039.         ), S4 c& C% C! v4 a
  10040.         (setq sortlist (acad_strlsort sortlist))
    3 O* D* O# D+ M! G7 r3 g% |
  10041.       )( K: e1 d  g% t: s
  10042.       (setq sortlist (reverse sortlist)). ^% e3 [$ I' Y% P+ Y& K5 @9 W
  10043.     )
    " n/ o& |7 M' I) y4 ^- \0 j1 p' V
  10044.     (set_tile "error" ""), J8 _/ t# E, C% `1 x! s1 @
  10045.     (setq ltnmlst sortlist)
    / g7 S* v9 q6 ^; S

  10046. + w8 s' l& @5 r4 i
  10047.     (foreach ltname ltnmlst- }: ^' T0 W/ f+ n# T
  10048.       (setq ltlist (tblsearch "LTYPE" ltname))( [5 P1 ]% W$ E$ ~. A
  10049.       (if (= ltname "CONTINUOUS")3 \, ], I5 ^0 p, j- w
  10050.         (setq mdashlist (append mdashlist (list "CONT")))
    % S! r8 N- o4 K4 g7 w) p
  10051.         (setq mdashlist7 f7 U( a. Q7 J" m: d7 `, |* W  Z
  10052.             (append mdashlist (list (add_mdash ltlist)))3 e3 T2 ~6 r8 Z7 K- ]3 M% s7 e
  10053.         )
    2 Y- p, a: G  _+ d: }
  10054.       )7 }3 @1 u6 @/ [' s& d# g
  10055.     )- q* {9 v4 x3 `3 v* j  x2 M) a
  10056.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))
    ; z4 l# v4 d0 e$ c. g
  10057.     (setq mdashlist  (cons nil mdashlist))8 S3 p7 z4 h3 X! t5 r# m
  10058.     (setq ltnmlst (cons "BYLAYER" ltnmlst))# l! p! ]* s+ }4 G& W4 _
  10059.     (setq mdashlist  (cons nil mdashlist))1 {: h7 S% l- j0 u- j; F4 W
  10060.   )
    % O2 }; y" Q; I8 K) P8 g
  10061.   ;;$ B( K7 Z1 f) m
  10062.   ;; Get all the group code 49 values for a linetype and put them in a list2 {* W0 k$ d& P2 H. z
  10063.   ;; (pen-up, pen-down info).7 `9 f! ?* h7 t" \, F5 ~4 S
  10064.   ;;
    4 o7 F2 m0 m1 [4 H$ h
  10065.   (defun add_mdash (ltlist1 / dashlist assoclist dashsize)
    7 T) y" A: u  x) T
  10066.     (setq dashlist nil)
    $ ~5 O& n3 `% x* d
  10067.     (while (setq assoclist (car ltlist1))" U' l* V! A: {& K8 X$ F7 r
  10068.       (if (= (car assoclist) 49)2 O! [  n9 s5 U( v3 R: P: R; ^0 v
  10069.         (progn
    3 J, X1 u+ ~# V8 I4 p
  10070.           (setq dashsize (cdr assoclist))8 N% u/ H5 t  w' a# v2 ~& h( p& x
  10071.           (setq dashlist (cons dashsize dashlist))- }8 d* |. P0 G$ i6 a% g8 i
  10072.         )
    ( |# J3 s0 m% F' h7 g
  10073.       )' G2 n9 g2 R$ t  q4 D
  10074.       (setq ltlist1 (cdr ltlist1)); s6 C! a1 f& U0 @+ ^8 d
  10075.     )
    1 ^' G8 F" e. A3 C. N
  10076.     (setq dashlist (reverse dashlist))
    8 d$ x. t; r# I: e- C- l. g+ B6 F1 [
  10077.   )
    # a8 _$ v( @( n, E; h& P' \
  10078.   ;;) p6 b: I9 O' M( m3 E
  10079.   ;; Color a tile, draw linetype, and draw a border around it
    4 _" m/ U$ T# O7 {2 t  L* W/ b
  10080.   ;;
    ' F; J$ E, L$ x' Z  }2 b
  10081.   (defun col_tile (tile color patlist / x y)" `/ E4 y$ X; e9 [7 n) V* g
  10082.     (setq x (dimx_tile tile))
    1 D" I$ X8 B0 D+ e, U3 U* A7 c* v
  10083.     (setq y (dimy_tile tile))7 C4 U/ g$ W3 Q2 V4 I  T# ?; R4 g( z
  10084.     (start_image tile)7 ?1 `7 W+ r: i! c2 m3 H1 h: ^+ D
  10085.     (fill_image 0 0 x y color)
    / q; L& g) W: [
  10086.     (if (= color 7)
    / D3 c" q* C; Y3 ~
  10087.       (progn
    2 r2 y# C) X  e" b
  10088.         (if patlist (drawpattern x (/ y 2) patlist 0))1 Y  z9 A3 l9 C+ T. o3 c
  10089.         (tile_rect 0 0 x y 0)
    . K. U( V7 m/ M/ o
  10090.       ). b) ?6 A' ]* h5 H- J$ I  Z
  10091.       (progn) X* F5 R+ v1 G: k# V
  10092.         (if patlist (drawpattern x (/ y 2) patlist 7))
    ' o* X; c: W+ ~
  10093.         (tile_rect 0 0 x y 7)
    ' a" L- q3 Z! [; |5 |* t
  10094.       )- S( W) d7 v3 Q! b4 J
  10095.     )
    ) C, u3 r/ E2 P: p/ H' o3 Y
  10096.     (end_image)
    , _3 A4 K* n1 |4 f2 E4 a
  10097.   )
    + r2 F3 Y% p; T8 ~4 q% M
  10098.   ;;1 O- F  S* g. ~) l* g
  10099.   ;; Draw a border around a tile& `2 S2 N3 y/ E- C* _: j; x6 C
  10100.   ;;
    * G( ^/ N" P5 r' U) Y
  10101.   (defun tile_rect (x1 y1 x2 y2 color), B  c, ?; U5 q8 M: k
  10102.     (setq x2 (- x2 1))
    * _) c/ U  D# M; ~9 e9 ~& A
  10103.     (setq y2 (- y2 1))# G2 L& r3 T+ ?% R. T
  10104.     (vector_image x1 y1 x2 y1 color)
    ) y; W# ~& g# ?% x* o6 o0 t
  10105.     (vector_image x2 y1 x2 y2 color)  ~4 p8 Q) a5 }! S: o5 d4 y% p6 _3 o
  10106.     (vector_image x2 y2 x1 y2 color)
    , F. l1 u7 R3 [& J! F, H
  10107.     (vector_image x1 y2 x1 y1 color)
    ' B% @4 f/ u: `0 m; _8 m- t! U
  10108.   )4 {; N9 D6 h' {
  10109.   ;;+ P9 Q- K# M( y/ |/ g
  10110.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image
    ) p1 S' I7 @2 m1 |
  10111.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a: C4 l' g8 Y' U
  10112.   ;; list of numbers that define the linetype, and color is the color of the
    9 O2 m; p8 j5 {
  10113.   ;; tile.
    ! J/ G9 [7 k$ y
  10114.   ;;
    # S3 u. P* j- S0 U3 V* h
  10115.   (defun drawpattern (boxlength y2 pattern color / x1 x2( x! {8 U0 t  r7 O3 I( j/ a
  10116.                       patlist dash)
    $ I, R! [8 j, \' c/ s$ H6 @
  10117.     (setq x1 0 x2 0)7 v" ~' N$ j. m* n) o
  10118.     (setq patlist pattern)& q( N: M! p  S  W' g" I: A0 M
  10119.     (setq fx 30)) w' ^& [% D5 P* l/ o
  10120.     (if (= patlist "CONT")4 U/ j" y+ F  ~7 d
  10121.       (progn (setq dash boxlength)
    % B! j, f% y7 @2 z6 l8 r* ]8 F
  10122.         (vi)
    / f7 t, g; k1 C2 R- L$ X, v
  10123.         (setq x1 boxlength)  F5 M+ ~& f4 F8 T1 `6 p! l6 x
  10124.       )% D; d' B. Y! N2 W# }: S: M# y
  10125.       (foreach dash patlist
    $ r$ t. |4 V) {) s
  10126.         (if (> (abs dash) 2.5)$ G% a! b. |/ s6 |% U9 E$ ]
  10127.           (setq fx 2)0 n! v3 W, x# B
  10128.         )' C0 o# l. ]+ I& ^. z! W9 ~" }2 z
  10129.       )
    ( J9 }: T- h2 B4 F) ^6 e2 W
  10130.     )4 r; i) m1 S9 Z! H$ l- ]; M
  10131.     (while (< x1 boxlength)! H/ @" {, }9 J0 i! v! K
  10132.       (if (setq dash (car patlist))3 w. x# i6 S) \) C
  10133.         (progn, [9 {3 w& V! e, }& V; l& Z) J$ k
  10134.           (setq dash (fix (* fx dash)))
      p1 J# }1 O4 b
  10135.           (cond
    ! a0 y6 H3 ]) ]7 t
  10136.             ((= dash 0) (setq dash 1) (vi))
    + F* d" f4 A4 @" i
  10137.             ((> dash 0) (vi))
    ( ]+ q! B1 e$ X- V6 E  L8 S
  10138.             (T
    8 X  v1 O- N1 l
  10139.               (if (< (abs dash) 2)
    6 |3 [) s" z7 V2 D3 J0 Z" ^; B
  10140.                (setq dash 2)
    0 T% ]: ~9 g  L. b
  10141.               )
    * w2 B& E5 Q  h
  10142.               (setq x2 (+ x2 (abs dash)))5 F/ C. I. _$ U0 u8 U. W4 F
  10143.             )/ l5 c3 y+ d: l6 E# D
  10144.           )+ E. l7 l0 J6 q$ c# b' J
  10145.           (setq patlist (cdr patlist))1 l+ x6 A2 Q$ Z% V1 j" N+ W" f1 C! j
  10146.           (setq x1 x2)( v5 {  M! L# m% R. W& v
  10147.         )6 D5 F5 X% |* m
  10148.         (setq patlist pattern)
    % |* S+ e( o( V" d; g
  10149.       )
    " [( F1 o, F* B  C
  10150.     )5 [( F! M( T# p0 C
  10151.   )' P* K6 N, h7 i6 t' R
  10152.   ;;: y3 L& u6 T4 r: L$ }8 L
  10153.   ;; Determain state of xclip
    + t. }- ?; d7 o, j+ k' F
  10154.   ;; Returns the group 71 value of the spacial filter dictionary.
    " k2 |* o/ U9 {% Y& C
  10155.   ;; If the entity doesn't have a spacial filter dictionary, this
    + J) i5 i& [3 _" g% ~$ [: O
  10156.   ;; returns 0. If it does it will return 0 or 1 depending on the- B1 E2 q# `% b  X( l1 E) S( R
  10157.   ;; current setting of the state of the clipping visibility.. G  Z* t* q" O7 h
  10158.   ;;
    " j9 W$ m/ Y: E0 C% A* m
  10159.   (defun xclipon(elist)
    & L- h6 ]) b- O4 l! j) i! p( ^- {
  10160.     (setq hasclip T)1 K1 ^# s/ t0 J7 L! J# J
  10161.     (if (/= (assoc 360 elist) nil)
    8 t# ~7 u" I' @# c
  10162.       (progn
    ; q9 b5 E1 n% h, c
  10163.         (setq tmp (entget(cdr(assoc 360 elist))))4 [% x8 p: e/ h5 k
  10164.         (if (/= nil (assoc 360 tmp))& @$ g, c* B" v- d1 E9 P* {
  10165.           (progn5 g1 r4 r% V4 E% q# m+ u/ {
  10166.             (setq tmp (entget(cdr(assoc 360 tmp))))
    . q: Z9 `) q7 F% o( ]
  10167.             (if (/= nil (assoc 360 tmp))
    + {! O" R/ @& i3 j
  10168.               (progn# j  w  r% ~; j$ ?& j- H! u
  10169.                 (setq tmp (entget(cdr(assoc 360 tmp))))
    7 t& G+ ]/ M( l' g
  10170.                 (if (/= nil (assoc 71 tmp))
    ! J' _( T% v* ?' }; z
  10171.                   (cdr(assoc 71 tmp))9 _; U6 e6 E9 [4 q8 O
  10172.                                   (progn
    ' I# s' D* V# b1 \+ b: Q
  10173.                                         (setq hasclip nil)
    ; x- N; G5 b) I! Y8 J
  10174.                                         (eval 0)
    ( ^! N% V' P  X0 N: m$ |) e
  10175.                                   )4 C2 v9 [/ g/ y4 Q9 O" i
  10176.                 )( A7 S, a" @2 y' m" b& l" V" `, Y- u+ v
  10177.               )7 @! X( b( }; d& N
  10178.                           (progn
    : `9 o' n! k; s/ G
  10179.                                 (setq hasclip nil)+ T' `/ W' g5 e( _; [
  10180.                                 (eval 0)
    + o- ]5 }! d! k- ^! S
  10181.                           )% w' ^0 u  W) u% y
  10182.             )- \- Y, D7 c5 X: r3 L$ z! D5 f
  10183.           )5 f9 c3 x" g, `8 m3 W- w( l" R
  10184.                   (progn 8 [$ J0 i5 V. x8 I
  10185.                         (setq hasclip nil)
    $ d* Y2 |# }6 S% }, z! h
  10186.                         (eval 0)- m) T/ N0 {* p! o
  10187.                   ): m2 Y; \$ i# h- j; W# M& W
  10188.         )6 V+ u, {9 ?: N
  10189.       )% k* R9 M* O7 X3 r  I
  10190.           (progn ! e2 e( |+ y+ u% F% S, Q
  10191.                 (setq hasclip nil)# p# z- Y3 M6 y, X. y4 v/ R% R# a8 i
  10192.                 (eval 0)+ [: ^: _9 L9 ]4 P4 q5 ]
  10193.           )/ p' h3 D7 F9 A7 ^* p$ I" ]
  10194.     )
    + L# ?' A& j, U9 h; y! U4 W
  10195.   )
    / _! i( y+ s& p1 n! K
  10196.   ;;
    . o  S6 g' X, \$ |) v0 r
  10197.   ;; Draw a dash or dot in image tile
    5 P9 _5 Z$ [# j6 y& o' C( s
  10198.   ;;/ i+ `4 X/ }- x# _/ \- n6 H
  10199.   (defun vi ()
    8 x4 b, ?( S5 j1 Q7 m8 Y' u
  10200.     (setq x2 (+ x2 dash))+ ]/ G. T9 [% m1 @7 @# z
  10201.     (vector_image x1 y2 x2 y2 color)5 C& G. C" x1 A, W2 B8 Y
  10202.   )) v1 |  [( q1 E- y. f
  10203.   ;;
    1 ?3 i5 O. N/ C  ~- ^
  10204.   ;; If an item is a member of the list, then return its index number, else
    5 |/ U5 i! |* i% t' W
  10205.   ;; return nil.* x) s0 q6 b& I7 r4 \( u; w
  10206.   ;;( F$ M* W( j7 o! a; I! M, x
  10207.   (defun getindex (item itemlist / m n)
    / \7 B+ o4 }6 C/ ^6 |3 Q7 m# r8 L9 O
  10208.     (setq n (length itemlist))* N6 l4 d( J1 s. j9 y4 s
  10209.     (if (> (setq m (length (member item itemlist))) 0)9 e. ~0 q& S5 {. ?) y0 u
  10210.       (- n m)- k  c0 b7 I$ _2 G4 V* Y$ x
  10211.       nil. n* l8 k1 v+ a
  10212.     )
    ) i7 v/ S$ T1 @1 x5 i0 M
  10213.   )
    " S4 r& I) }$ K( B3 E
  10214.   ;;" ]. E) g; ^- H
  10215.   ;; This function is called if the linetype is set "BYLAYER". It finds the
    % C2 j5 p& Q; ]4 E1 E
  10216.   ;; ltype of the layer so it can be displayed  beside the linetype button.3 p+ w$ s  p+ D5 Z% I+ d
  10217.   ;;
    3 E8 m" A0 P3 h8 ]% s. h1 n1 I
  10218.   (defun bylayer_lt (/ layname layinfo ltype)
    ! C" Q/ ~  }, j' |4 B" o( H- i
  10219.     (if lay-idx5 |8 s5 H$ O) g$ ^6 R
  10220.       (progn' Z: }3 g  d0 E& o! c. n
  10221.         (setq layname (nth lay-idx laynmlst))
    6 c: N! V) j4 |
  10222.         (setq layinfo (tblsearch "layer" layname))
    6 C1 R% C) N2 K) N* K$ o; U
  10223.         (setq ltype (cdr (assoc 6 layinfo)))+ n8 s( m& j1 L% \! ?# j
  10224.         "BYLAYER"- v3 W( e) W; ]) i; e
  10225.       )  E7 W6 `3 n$ T" Y
  10226.       "BYLAYER"6 B* l# K2 ?; E& o% e
  10227.     )* f* x0 ]# ~# x
  10228.   )! F, S6 I% K4 T
  10229.   ;;/ W. _6 s, f9 Q5 ~7 C
  10230.   ;; This function is called if the color is set "BYLAYER".  It finds the color
    $ s1 M5 _! b2 v9 Z* a
  10231.   ;; of the layer so it can be displayed beside the color button.0 r! y: ]4 L) m" E/ l5 l, a  I2 ]
  10232.   ;;( a* l. V. J8 ~% x2 `$ W
  10233.   (defun bylayer_col (/ layname layinfo color)6 o; m( A5 c& \& @+ d  D1 z
  10234.     (setq layinfo (tblsearch "layer" elayer)): |) B5 W1 V3 h( |6 F
  10235.     (setq color (abs (cdr (assoc 62 layinfo))))$ v: t/ J4 N) Z9 u
  10236.   )  I- z! }* n9 `' R9 X
  10237.   ;;
    8 \- F7 s& }! j8 [# X6 d& j) Q0 l
  10238.   ;; Used to set the color name in layer subdialogue.. A) b; h( n5 T; E1 p5 q$ _. D
  10239.   ;;! P5 v- m+ H- q  A
  10240.   (defun colorname (colnum / cn)
    , u* X4 O( I0 l" Y# |  h! w# l
  10241.     (setq cn (abs colnum))
    # d4 ]% s0 ^% d3 P) }
  10242.     (cond ((= cn 1) "red"); ~4 z4 g9 r/ Z7 [
  10243.           ((= cn 2) "yellow"): r9 N: b& y& q! G6 z& M, F; S
  10244.           ((= cn 3) "green"), E* Q9 r) e8 Y/ o5 D$ n2 U
  10245.           ((= cn 4) "cyan")' S+ C! N  @( y
  10246.           ((= cn 5) "blue")% M- N9 S) Y3 e) I& H  M( R6 T6 u( g+ y( K
  10247.           ((= cn 6) "magenta")
    0 b! I) H; e& D% |9 S
  10248.           ((= cn 7) "white")% A7 e" X4 @# K
  10249.           (T (itoa cn))
    7 p" J3 N  R5 C, \( U# w  }
  10250.     )$ |( P% j0 m1 j! M% e8 R
  10251.   )% F8 ^. h, q% @3 b, k
  10252.   ;;
    4 T* G, ~; f  h) o: y5 V) g4 G$ Y
  10253.   ;; If their is no error message, then close the dialogue.
    . D, l* U5 Z8 f( F
  10254.   ;;0 K$ V( P, R3 c; ?! {: H! l
  10255.   (defun dismiss_dialog (action)
    " ?- K+ \. m' N/ T
  10256.     (if (= action 0): s" }! o* b7 I6 O  T6 R
  10257.       (done_dialog 0)
    9 x% V4 ^( G0 `8 s6 C: @& @
  10258.       (if (= (get_tile "error") "")
    # T- a1 U0 V2 z
  10259.         (done_dialog action)
    $ }! |7 b3 B: Y. ?1 x- `- M
  10260.       )
    ( R. Y1 }9 f! v& R2 I0 y
  10261.     )  c2 @7 p" w+ p+ \
  10262.   )! i3 u# a8 v" C: R

  10263. 2 ?6 B- ~( J' W/ H5 E
  10264.   (defun test_ok ()- [/ Y: z  K( O2 H7 t! U) E
  10265.     (if (= (get_tile "error") "")
    ; s6 t& w: N7 \
  10266.       (done_dialog 1)
      d3 C4 T$ N: T( x
  10267.     )8 I3 u7 y' A+ g/ B
  10268.   )& I' g# ^8 J2 m, |$ m; A" Y
  10269. : h( l" A& i/ @1 g
  10270.   (defun cancel ()
    ' @  G% p& V1 z9 j" m! a$ H
  10271.     (done_dialog 0)* D  f( y) s+ Y# m4 O: X
  10272.   )2 v9 N" o% b. A" g' C3 [

  10273. 4 N! Y0 P) o; F$ y0 g7 w
  10274. ;;; =======================================================================
    % A4 G' v% g7 O$ T6 d% T/ c1 x1 ^7 T
  10275. ;;; SETUP layer and linetype lists for application, and initialize all
      B" @" J) p, H, R  T7 q
  10276. ;;; program variables.
    $ t. S# c1 y9 Z* }" o- d7 j
  10277. 0 |5 o2 E1 ^5 z3 B
  10278.   (setq elist       (entget ename)5 e9 f1 O4 {% Y" O. x' x
  10279.         old-elist   elist6 ?) N# |7 q& Z- u
  10280.         modlist     elist% `% t3 A( E1 n/ m
  10281.         etype       (strcase (cdr (assoc 0 elist))); c: \' K8 ?$ ]' O9 I- I
  10282.         ecolor      (cdr (assoc 62 elist))
    3 P) P4 C, e0 D, r
  10283.         elayer      (cdr (assoc 8 elist))! O/ m$ o) e1 d" y
  10284.         eltscale    (cdr (assoc 48 elist))
    3 g2 a, W# r) M$ D
  10285.         ethickness  (cdr (assoc 39 elist))0 p4 `+ A1 ?  v* s5 L
  10286.         eltype      (cdr (assoc 6 elist))
    5 Q0 Y& e" }( ~, B, T% z
  10287.   )7 ~7 K. N: b0 p1 {& ?" m$ u$ @
  10288.   (if (= (assoc 210 elist) nil)
    3 J! D1 X- A, Q
  10289.     (setq extru (list 0.0 0.0 1.0))
    # Y. n) a5 L* E) Z! L! X
  10290.     (setq extru (cdr (assoc 210 elist)))9 p. y1 c& y( U" b0 [/ [' M' D
  10291.   )
    - \9 F- K6 ]* T2 w! |! g3 r6 z
  10292. ' R' x6 _0 i4 b6 y
  10293.   (if (not ecolor) (setq ecolor 256))! `) K: t4 E. D
  10294.   (if (not eltype) (setq eltype "BYLAYER"))9 @) q% l* g) M3 a$ N- ~. c1 c
  10295.   (if (not ethickness) (setq ethickness 0))
    " Y6 O# m: k1 Z6 g/ Z" H0 b
  10296.   (if (not eltscale) (setq eltscale 1))  f( I, m: R" Y8 E# A  Y. h
  10297. ) ; end ddmodify_init0 g8 F" q# t) H+ s
  10298. : K3 I5 t8 R: R, c; X
  10299. ;;; --------------------------------------------------------------------------
    4 b9 F6 Q! B- V: P
  10300. ;;; Function: DDMODIFY_SELECT% B9 }" ^3 n* C6 K3 W% \
  10301. ;;;
    1 i9 ?0 L" K# s# F1 ]% z
  10302. ;;; Object aquisition function.
    % p- I  A9 @: l5 g+ y5 @1 k" C
  10303. ;;;' H8 S5 \& I; n+ T' f8 R1 s3 B
  10304. ;;; (ddmodify_select)3 j! T2 L: G0 H# }0 E1 O) N
  10305. ;;;
    4 o2 s" F# t- l& Q6 K! o
  10306. ;;; Obtains object to be modified, in one of three ways:
    8 W2 e/ ^( I% e2 r
  10307. ;;;* Q5 x. _, U( i/ c6 w2 _, T2 b+ y! q) _
  10308. ;;;   1 - Autoselected.2 l) g- g' V4 L9 B( {' a) S+ T# {, O
  10309. ;;;   2 - Prompted for.
    ) d7 v2 M2 T9 n. e1 x0 y- z4 \/ T5 i
  10310. ;;;   3 - Passed as an argument in a call to (ddmodify <ename> )1 K1 b6 w, h( W$ ?  Q
  10311. ;;;
    ( _# S( \0 D) a9 R
  10312. ;;; The (ddmodify_select) function also sets the value of the
    % ^% k$ P8 N- [2 l$ c% w1 V
  10313. ;;; global symbol AI_SELTYPE to one of the above three values to( w: _8 a1 a. O3 N3 U* r3 h: B
  10314. ;;; indicate the method thru which the object was aquired.
    % _2 U! `( Y/ m$ O6 }
  10315. ;;;
    8 j. G" p% |: c( j% P2 U0 `
  10316. ;;; This value can be useful to applications that want to RESTORE
    # D/ I. Z3 }7 P
  10317. ;;; an object that was autoselected to its previous selected state. ?! r% ]  q4 T1 N8 W- o, }
  10318. ;;; when they terminate, although there doesn't appear to be any
    7 h) B  @5 ]6 n) w3 H
  10319. ;;; way to do this right now.0 ^& l  V) v$ l1 ]* d
  10320. 4 e. _$ ^+ \" o% @7 r
  10321. (defun ddmodify_select ()
    ( L$ `5 I* M% c6 l
  10322.    (cond
    , d: B; u& v0 h7 P1 l6 C. X% p
  10323.       (  ename                             ; (ddmodify) was called! q0 i) `+ O! k9 O/ ]
  10324.          (cond                             ; with an <ename> argument3 k  ?. H1 Q1 i* J+ r
  10325.             (  (entget ename)              ;   If object is non-deleted
    + p" N' U% z# t$ ]
  10326.                (setq ai_seltype 3)         ;   then return its ename.0 m$ j& R" |% v' I
  10327.                (ai_return ename))))
    2 \3 K7 ~9 o1 I/ ~7 Z
  10328. 0 S& V' {( \+ ~0 j* _
  10329.       ;; return auto-selected , see ai_utils.lsp5 U! L- s# A$ R) b; L0 d
  10330.       (  (ai_autossget1 "\nSelect one object to modify: "))% k# {( W7 A% i2 }3 i" B

  10331. 3 ^3 H8 T/ [. @* r8 s
  10332.       (t (princ "\nNothing selected.")
    . w" K7 V# Y2 X0 _3 {
  10333.          (ai_return nil))
    ; S) _$ o# F4 @* C( e5 v1 o7 b
  10334.    )
    ) Z) C5 G+ @- F* B2 s
  10335. )
    ' c! y* \- e* @  P) K$ J
  10336. + r2 X% ~- t4 A1 _
  10337. ;;; ============= Command line interface function =======================& u3 D" O+ `4 p1 Z0 P9 ?

  10338. 5 `1 Z! ~4 _; @: N3 t" n$ O3 t
  10339. (defun C:MMO ()
    & \+ I' j) M& K. J1 `, Y
  10340.    (ddmodify nil)1 O3 O4 R3 x6 r7 J; ~3 Y9 F/ j) R
  10341.    (princ)
    3 M  j% g* `* c4 L/ c, T# I
  10342. )
    ' I( F  ^3 K! d1 L/ ^2 J
  10343. 5 L* R4 t) l0 l) f# n
  10344. ;;; ================== (ddmodify) - Main program ========================
    " Z$ W  c  {& M$ T  n. \: R! d; M
  10345. ;;;5 w5 D/ p; ^& w% _* _
  10346. ;;; (ddmodify <ename> )
    8 S. P2 X, [1 e. q5 Z9 U! F: B
  10347. ;;;
    $ t: J' Z8 k  G5 t" t
  10348. ;;; Main program function, callable as a subroutine.& R; A, l8 j3 M6 {8 P  b5 l9 d
  10349. ;;;$ i- y. N1 d4 G3 U6 O) f( E
  10350. ;;; <ename> = object name of the object to modify./ R" H; ^1 B3 B! Z* ]
  10351. ;;;
    & ?+ v5 L" V: A4 L' _$ ^
  10352. ;;; If <ename> is nil, then user is prompted to select! @" i/ Q( m; Y7 @5 P
  10353. ;;; the object interactively.
    4 o) z; Y; N, F: @
  10354. ;;;# x6 y7 z! }) [' n
  10355. ;;; Before (ddmodify) can be called as a subroutine, it must
    7 D" `; ^; J+ c6 C" H4 F" x. Z
  10356. ;;; be loaded first.  It is up to the calling application to
    / i4 k) @- l$ G+ V
  10357. ;;; first determine this, and load it if necessary.. V! |4 B6 S" G

  10358. 9 c6 \) A# a; n, Q' `

  10359. ! t6 z7 e; d  d# H' Z9 g
  10360. (defun ddmodify (ename /8 a$ Y: L4 I- T7 I. p# e9 F
  10361. 2ndpt              ell_calc_area            move_pt1               templist- T. i$ O/ Y9 {% [) r. v
  10362. add_mdash          ell_tile                 n                      tempmod& h8 c& w& x5 O1 q3 O+ i8 v2 q
  10363. alipt              eltscale                 name                   tempst_ang8 C# x' i/ b- P, H# x. r7 V. A* q
  10364. ang                eltype                   newpoint               test_ok
    0 j  g& g( G' r( k# g
  10365. arc_calc           emod                     next                   text
    % U1 H+ `& q. X5 s$ x
  10366. arclen             end_ang                  next_vertex            th-value
    3 o) E; K: b; Z5 q- g" x
  10367. assoclist          endpt                    obl                    tile3 b3 j- Z& ]5 i$ b
  10368. atprompt           errchk                   off                    tile_rect
    / m; H3 F8 `6 ]& k% _8 {
  10369. attag              ethickness               old_majrad             tilemode
    0 U; c* J9 P1 ~" {2 F
  10370. attprompt          etype                    old-closed             totang1 w! R! P6 q2 T
  10371. bit                extru                    old-closedm            tstyle
    & {1 W1 M0 r! {" A7 Z" V
  10372. bit1               fchk                     old-closedn            u
    / ?/ V  k6 l; ]0 H6 o
  10373. bit-10             first-10-rec             old-elist              undo_init
    ; t# R! E5 A7 q/ S, z5 g+ m. m
  10374. bit-11             first-10-time            olderr                 upsd8 ^, c7 R- t7 n+ S8 B5 A2 O& |
  10375. bit2               first-11-rec             old-fit                v
    ) [3 y# j' i+ z6 `/ S) ?. u
  10376. bit3               first-11-time            old-idx                va! R- R' J* \! i2 X. }' H4 M: `) M
  10377. bit4               fit                      oldlist                value4 l0 _0 l' X9 c* D
  10378. bit70              frozth                   old-spltype            ver_4% {6 t' n! d! ~
  10379. bit-70             f-vis                    old-u                  ver_ang13 u* P/ \/ c+ b3 H* d) x
  10380. bit75              fx                       old-v                  ver_ang25 {7 R7 _! g# E6 D
  10381. bk-up              get_color                on                     ver_col' V, F, Z# D" ~5 e+ R  }+ ~
  10382. bkwd               getcolor                 onoff                  ver_colsp
    0 V: K. C0 R: |* ^. _' f: ?1 N
  10383. boxlength          getindex                 on-off                 ver_eangle
    7 _; }2 o, L! L, b
  10384. bylayer_col        getlayer                 patlist                ver_hght4 @- v( H8 Q6 i6 X3 I$ P
  10385. bylayer_lt         getltype                 pattern                ver_majrad; s5 |+ w) `1 U
  10386. calc               getthickness             pltype                 ver_obl: ~3 u* W' m' d( V# ]
  10387. cancel             globals                  polytype               ver_pt1% E2 Y: |1 Q; C$ U3 \& t
  10388. cir_calc           ha                       pre                    ver_pt24 M  h' y7 P  {9 F6 _# q
  10389. closed             ha-prev                  proplist               ver_pt3
    / c) y6 f, u2 C+ P5 z4 ~
  10390. closedm            help_entry               pt                     ver_pt4
    3 _+ j% ~1 s# k1 k2 Q; y# C
  10391. closedn            hght                     pt1                    ver_rad* {: i2 @% f# G# F, I" T. O# r
  10392. cmd                icvp                     pt1_eq_pt2             ver_rot
      ^' y' L  O# |" j+ Y! k
  10393. cn                 image_add_vector         pt2                    ver_row
    ) {5 _: o7 T/ @) Z
  10394. cname              image_clean_variables    pt3                    ver_rowsp( H7 n4 G9 {! O7 w* v8 {; L5 \$ p
  10395. cntl-pt-indicator  image_cross_product      pt4                    ver_tag( y1 |! h2 W$ E
  10396. code_71            image_disp_opt           ptype                  ver_u0 l$ N% \/ e9 s; D
  10397. col_tile           image_dot_product        radius                 ver_v% t+ P+ R1 X4 j( q- E
  10398. col-idx            image_normalize_vector   rational_spl_flag      ver_wid! |# o* g5 L1 P: c
  10399. colname            image_rotate_vector      reset                  ver_x1
    ( G; f  D: m8 \! C1 d
  10400. colnmlst           image_scale              reset_flag             ver_x2& g/ d" T: v7 T/ ?6 A; p
  10401. colnolst           image_scale_vector       reset_lay              ver_x37 d' g# c6 S# K% f
  10402. colnum             image_update             reset_lt               ver_x4
    $ _" T3 e0 r- T! B, r# d
  10403. color              index                    reset_uv               ver_xline_pt12 c' i- K: ^  t# c3 Y4 v6 m9 a
  10404. colorname          inv                      rot                    ver_xline_pt2
    / p' `; @/ P- {6 \" H
  10405. colorno            item                     rows                   ver_xline_x1% ~5 \+ K0 [3 @# W, Y  v$ R$ R
  10406. col-sp             item1                    row-sp                 ver_xline_x2
    6 [1 k% p3 j2 J/ N
  10407. columns            item2                    rrat                   ver_xline_y1
    / D1 e- Q5 g6 M
  10408. con                itemlist                 s                      ver_xline_y2; F) P; w' ?$ I3 }8 I
  10409. coord              jlist                    set_action_tiles       ver_xline_z1
    . b+ G2 H0 }9 C- r* L$ K/ k2 j
  10410. ctr                jlist_act                set_just_idx           ver_xline_z2
    6 |2 J% c3 v) \
  10411. cur-10-rec         just-idx                 set_tile_bk-up         ver_xscl
      }; J3 U6 m$ a2 o. d
  10412. cur-11-rec         layedit_act              set_tile_cntl_pt       ver_y1
    & ?$ }9 d" Z/ @& V+ R
  10413. cvpname            lay-idx                  set_tile_data_pt       ver_y2: A- r* I; {  F" c+ [8 a( w: b
  10414. dash               layinfo                  set_tile_dirv          ver_y36 h3 r* z3 Q  ~' G; H0 ^% K& T  ~3 f
  10415. dashdata           laylist                  set_tile_edges         ver_y4
    ( B2 K. \/ H4 V+ F
  10416. dashlist           laylist_act              set_tile_endang        ver_yscl
    * T6 y% x% S- j8 E# l0 s/ `9 [* R
  10417. dashsize           layname                  set_tile_hght          ver_z1
    ! O% d3 o7 ?( J4 ~
  10418. data-pt-indicator  laynmlst                 set_tile_icvp          ver_z2
    ; Y1 D7 z3 M' f# `) `
  10419. dcl_id             layvalue                 set_tile_just          ver_z3# X( \8 Y  W: m' }$ I  H
  10420. dd3dface           line_calc                set_tile_obl           ver_zscl
    + q& F3 u$ T9 n2 x
  10421. dd3dsolid          linetype                 set_tile_prompt        verify_a* p1 F) B- z6 S3 ^; X
  10422. ddarc              list1                    set_tile_props         verify_d  \# v& T. e4 \5 i. Z/ e
  10423. ddblock            longlist                 set_tile_pt1           verify_i: ?3 J: w+ y0 K/ W
  10424. ddbody             ltabstr                  set_tile_pt2           verify_xline
    ' h$ {- I7 U% a8 n- C% k
  10425. ddcircle           ltedit_act               set_tile_pt3           vfy
    % m5 d$ k6 G9 ]
  10426. ddellipse          ltidx                    set_tile_pt4           vi
    & l3 J* W$ q3 i/ a) m* ~* \: o
  10427. ddgetprompt        lt-idx                   set_tile_rad           vlist7 e# I9 w( S# K! M
  10428. ddgettext          ltlist                   set_tile_rc            vname$ c+ q; a0 V: h! j8 V% n
  10429. ddimage            ltlist_act               set_tile_rot           vpf: U/ q& H& ]- T3 G! X
  10430. ddimen             ltlist1                  set_tile_scale         vpid
    $ l( a8 |: u% R. i
  10431. ddleader           ltname                   set_tile_spline_props  vpldata6 i$ Z7 E1 S. y) D* n# K5 Q0 L( k
  10432. ddline             ltnmlst                  set_tile_stang         vpn0 ?; |( D3 H  Z, m# c" X; G- i& a
  10433. ddlist             ltvalue                  set_tile_style         vpt. S, a) e+ e; ^! {: \
  10434. ddmline            ltype                    set_tile_tag           which_tiles/ C' i% C( q( b$ Y; g! j* z
  10435. ddmodify_err       m                        set_tile_text          wid# V7 A* m! s& G1 ]6 U* S
  10436. ddmtext            majrad                   set_tile_vpt           x
    9 A0 f/ j) ]& q6 b5 X; X/ c
  10437. ddpline            make_lay_lists           set_tile_wid           x1
      ]' `* x6 q5 j* \
  10438. ddpoint            make_lt_lists            set_tile_xline_pt1     x2
    9 B' g2 |; P& C; j0 O
  10439. ddray              mdashlist                set_tile_xline_pt2     x3
    7 E- p# d9 ^, S0 D
  10440. ddregion           minrad                   setcolor               x4, ]5 f  X, F( ~. Y. w) B) @8 z
  10441. ddshape            modify_3dface            shght                  xdlist
    + t  b  s% d0 k2 }) E1 S
  10442. ddsolid            modify_3dsolid           showpt                 xline_pt1
    ' f5 p  M8 U9 j; v- z
  10443. ddspline           modify_arc               size                   xline_pt2
    , P3 T+ J* C+ r4 B& C7 S6 Q
  10444. ddtext             modify_block             slist                  xline_x1
    / i/ ]7 j7 A6 U
  10445. ddvport            modify_body              sname                  xline_x2
    # q" p6 k/ y7 y: X9 O, C9 [7 q
  10446. ddxline            modify_circle            sortlist               xline_y1
    6 y2 F$ Z9 N% K$ G  d; V) l6 {
  10447. denom              modify_ellipse           spltype                xline_y2
    . `! d: L5 |6 ?
  10448. dialog-state       modify_image             ss                     xline_z1; X8 A( r5 ]8 K
  10449. dir_pt             modify_line              st_ang                 xline_z2: r/ a. H% s7 b, B; o4 V
  10450. dir_ptx            modify_mline             stpt                   xscale
    * u: x6 l' r( T& l* P* J2 G
  10451. dir_pty            modify_mtext             style_act              xx) {, T+ O  m: y) }
  10452. dir_ptz            modify_point             style-idx              y& f( `6 B  N7 q' F6 F9 {
  10453. dismiss_dialog     modify_polyline          style-list             y1
    8 j! I4 v. N8 \) q' V" @) Q
  10454. drawpattern        modify_prop_geom         tagval                 y2+ w  y. o3 X3 v5 |
  10455. echo               modify_properties        temp                   y3
    1 z0 s4 I7 }4 K4 O
  10456. ecolor             modify_ray               temp_color             y4
    6 @7 j6 V$ f5 E
  10457. edge1              modify_region            temp_dir_x             yscale5 b4 Y+ o. h% L4 b, i- K
  10458. edge2              modify_shape             temp_dir_y             yy- @# Z4 p) c( _5 [
  10459. edge3              modify_solid             temp_dir_z             z1
    " _7 q% _( U& p4 U+ ]( |
  10460. edge4              modify_spline            temp_xline_pt1         z2
    ( u6 H" N3 N8 z+ r5 N6 x1 @
  10461. edgetest           modify_text              temp_xline_x1          z3" I3 J/ O4 e1 C) o
  10462. elayer             modify_vport             temp_xline_y1          z4
    3 N# T( ]" r' A
  10463. elist              modify_xline             temp_xline_z1          zscale
    0 R4 N2 ?( Q9 f( Q3 s2 q
  10464. ell_calc           modlist                  tempend_eang           zz2 b; q  O/ E! ~
  10465. dir-idx            safe_ddedit              ver_MtextWidth         xcliponoff
    4 j, E: n3 X+ j- `, q
  10466. MText_style. O! _, f8 L( m# o
  10467.   )
    & i# P8 u1 |9 L6 u! [+ c8 Q8 B: I

  10468.   {- `& j9 ~9 Q% I5 T  |# {
  10469.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    . S8 t; `# h6 j& G* r/ C
  10470.         old_error  *error*            ; save current error function3 G. J9 ?) e; ~' U
  10471.         *error* ai_error              ; new error function
    % A- p1 x8 e% V3 T
  10472.   )' M0 [+ Z0 p6 P

  10473. 3 r% G: z- `. H0 x
  10474.   (setq old_pickstyle (getvar "PICKSTYLE"))          ; save old pickstyle, I4 J$ D6 q- m$ |  x; i
  10475.   (setq new_pickstyle (logand old_pickstyle (~ 1)))  ; turn off group selection9 b% ], h/ w& ]9 c
  10476.   (setvar "pickstyle" new_pickstyle)                 ; bit and set to new value! ^: j7 M7 q2 H, s

  10477. ' L; i* c7 a1 B
  10478.   (setvar "cmdecho" (cond (  (or (not *debug*) (zerop *debug*)) 0)
    % F4 r% a! B5 s3 i; i0 [/ H
  10479.                           (t 1))); Z  l: C9 ~8 U1 B
  10480.   (cond% D- s% u0 T! ]9 o3 y) n# D
  10481.      (  (not (ai_notrans)))                      ; Not transparent?
    1 L4 Y+ d' W7 P8 F7 ~
  10482.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?' e  p3 u; `0 D$ I
  10483.      (  (not (setq dcl_id (ai_dcl "ddmodify")))) ; is .DLG file loaded?* _5 l9 @* x- G. U1 i7 H- ?
  10484.      (  (not (setq ename (ddmodify_select))))    ; object to modify?
    " {/ h; ]% ^+ `* E9 |# S
  10485. 5 T$ r) X. Y- k! w6 |5 E* W
  10486.      (t (ai_undo_push)
    7 Y" p! X+ w& R! b
  10487.         (ddmodify_init)                          ; everything okay, proceed.! a# _2 n+ f6 X5 H! f
  10488.         (cond6 y7 R2 X2 v! Q
  10489.            ((= etype "LEADER")
    3 r7 I/ o4 C' Q/ V$ P
  10490.              (setq help_entry  "modify_Leader_dialog")/ Q2 @2 k4 o, _/ k& I
  10491.              (ddleader)" }& }& g( l" @6 w1 T- c# N* q4 u
  10492.            )
    / c1 o; O9 n# n2 n6 K
  10493.            ((= etype "ARC")' i* Y* V. M& a, I
  10494.              (setq help_entry  "modify_Arc_dialog")7 w0 Q* P( _, W1 e& f5 F
  10495.              (ddarc)4 u) _1 A' q# F" u
  10496.            )
    . {2 [7 m8 O! h, H
  10497.            ((= etype "ATTDEF")0 O2 j& W! G/ P
  10498.              (setq help_entry  "modify_Attribute_Definition_dialog")7 v7 u8 |' ^0 Q4 h  ?; Y
  10499.              (ddtext)' Y1 v4 Y0 }2 ]! K, a, n
  10500.            ); c7 q; O# C; B# ?5 ]( f
  10501.            ((= etype "CIRCLE")
      f; W0 \1 V/ _! a' r6 g, T4 x
  10502.              (setq help_entry  "modify_Circle_dialog")
    % C# p6 q$ a5 o; ?9 s. r
  10503.              (ddcircle)9 U4 P) X+ D+ F$ b0 u- k* q- ?" [
  10504.            )
    $ ^* R/ O& H2 o5 z# o# c
  10505.            ((= etype "ELLIPSE")+ K  W7 M# ~4 A5 u5 o# w( m; K2 b1 o
  10506.              (setq help_entry  "modify_Ellipse_dialog")
    ; C1 X1 c/ ?/ K1 _9 M
  10507.              (ddellipse)4 t7 P! C5 t$ l! b# h
  10508.            )3 s' }+ ~; {) b
  10509.            ((= etype "3DSOLID")0 o, e1 e$ K1 f6 V, X
  10510.              (setq help_entry  "modify_3d_Solid_dialog"): L, F1 E7 r  S
  10511.              (dd3dsolid)
    2 m; s! V& i! G: F4 x' T# k
  10512.            )( @  V- u8 R0 b" _, L
  10513.            ((= etype "BODY")
    ( i% k' p9 A- n( m$ e+ j/ A
  10514.              (setq help_entry  "modify_Body_dialog")
    ( e- @4 @# Z, J9 S; y5 n
  10515.              (ddbody)
      d1 D- _; K' k2 F7 a
  10516.            )& w( h* q* @1 u; N  N
  10517.            ((= etype "REGION")" h# s" @/ w: ~: ]
  10518.              (setq help_entry  "modify_Region_dialog")
    , s7 n$ h3 e) K3 e( {( `, F2 Y; {
  10519.              (ddregion)
    ! H" t% P1 d6 z) C' q! I
  10520.            )
    # v$ [9 E$ N) Q
  10521.            ((= etype "HATCH")# w0 n% x8 y1 y1 z3 \7 k
  10522.              (setq help_entry  "modify_Hatch_dialog")0 {. A4 Y# l" h+ |, O3 ^
  10523.              (ddnewhatch)/ D* y7 T5 e8 h* z) [
  10524.            )8 a6 j; g4 X6 |+ i, E
  10525.            ((= etype "SPLINE")0 S4 A7 D" D- i* C; ]8 Y2 K
  10526.              (setq help_entry  "modify_Spline_dialog")
    * B& ~1 @( b* M" F  K7 t
  10527.              (ddspline)
    ' i$ V1 @- j9 ^& S) P
  10528.            ); f( m; M7 n. P" a  @: q  O; x( n7 S
  10529.            ((= etype "INSERT")    ; see ddblock for help_entry
    5 U" l1 \; f7 k. l
  10530.              (ddblock)
    7 u; g5 m) x" z" ?5 |( b# T) D. u
  10531.            )) S. z" Y5 z9 c3 F; W- [
  10532.            ((= etype "LINE")6 f) R$ _6 H- b  l  ]
  10533.              (setq help_entry  "modify_Line_dialog"); u+ }8 |. I& c  ~, y' ]
  10534.              (ddline)1 l" E7 R& i6 T! Q6 J# T
  10535.            )
    5 W. I3 A6 K& f* G
  10536.            ((= etype "MLINE")3 ?7 S, J/ i6 P6 Q+ m( _
  10537.              (setq help_entry  "modify_multiLine_dialog")2 S# ^! u  S$ U1 y
  10538.              (ddmline): J3 K* {: s1 [8 u3 ]1 w
  10539.            )4 U6 \' w9 F5 u5 v; i0 r  o
  10540.            ((= etype "RAY")5 C2 _; A8 E: K
  10541.              (setq help_entry  "modify_Ray_dialog")3 U/ l) r, v* ^/ L
  10542.              (ddxline)
    & `3 E1 K' I' `" ^7 q
  10543.            )% F- R8 N) n$ h: f; ?) ~
  10544.            ((= etype "XLINE")6 F% K0 K0 r' p5 E
  10545.              (setq help_entry  "modify_Xline_dialog")
    ' e4 N* p$ A- A( B: x1 X/ R$ X
  10546.              (ddxline)
    # B! g5 B1 q" ]* t! Q6 h9 u% ~
  10547.            )8 ]# ]0 K0 U) w
  10548.            ((= etype "POINT")
    % [  E$ a) c7 h
  10549.              (setq help_entry  "modify_Point_dialog")- [9 G1 W7 D9 W$ u$ |8 P5 U& x
  10550.              (ddpoint)- P; n, w" d5 z  X% u9 P2 g
  10551.            )  Y: q# f% X1 D
  10552.            ((or (= etype "POLYLINE") (= etype "LWPOLYLINE"))6 a& b2 g( C* ~+ Q- i
  10553.              (setq help_entry  "modify_Polyline_dialog")* o# [/ U: e3 J" f( f3 ?& H* V" @% w# N
  10554.              ;; If a 2D pline, check to see if it is planar to the current
    8 W2 y% g% {4 L7 B5 @
  10555.              ;; UCS, reject if not.   To see if the pline is parallel,7 a  P* t6 S8 C( L* b
  10556.              ;; the 210 group (WCS) is added to the current UCS origin (WCS)
    8 d! d! s7 |3 Q9 m( f8 d8 T, N
  10557.              ;; and then converted to the current UCS and checked to see if
    # Z! [3 h" ]- T8 B+ X
  10558.              ;; it is equal to (0,0,1).) X4 Y7 g! M0 _# j% a+ x
  10559. ) K; T, R) u1 g5 A
  10560.              ;; Incase the 210 is default and not in the dxf list.: U" V$ t' A5 U9 ~, M/ u% ~( E
  10561.              (if (= (assoc 210 (entget ename)) nil)
    6 g$ ?+ d% s$ W+ @
  10562.                 (ddpline)
    , {/ ]. G8 r7 X
  10563.                 (progn
    ; S0 p9 K% t8 h/ e- B6 [( E
  10564.                     (if (and (zerop (logand 120 (cdr (assoc 70 (entget ename)))))
    ' l# t1 t9 n+ K: `, h
  10565.                             (not (equal '(0.0 0.0 1.0)4 U+ }# P4 V  b- ^7 n8 S+ B9 q
  10566.                                    (trans (mapcar '+- t6 q5 |8 U+ n3 k( L+ y0 F
  10567.                                              (cdr (assoc 210 (entget ename)))+ a1 t7 u/ U7 C! K- v
  10568.                                              (trans '(0.0 0.0 0.0) 1 0)
    7 B3 M% q8 w# U+ e( O
  10569.                                           )4 F! M: C4 p' F- @& B' s% h
  10570.                                      0 1) o2 {& n0 L' v" S
  10571.                                    )5 D  n# g5 @: h
  10572.                                    0.0000000001            ; fuzz6 m7 N. P  f! W% y5 K) n4 j
  10573.                                 )/ q- w9 y+ d3 h5 k  U) P) H
  10574.                             )
    + }$ V8 u& R7 E
  10575.                         )
    # r0 ~: n6 q; N! h+ a3 Q
  10576.                     (princ "\nThe 2D Polyline is not parallel to the current UCS.")
    ! U. d4 K6 l/ `" y3 j; Y
  10577.                     (ddpline)) y- @: @% M: J
  10578.                     )
    . F& b# R2 q0 X  L
  10579.                 )
    9 P3 @0 n! D  y: C3 S" B
  10580.              )4 i& |( D0 S! }& R) m7 c5 ^
  10581.            )
    ( B, ~  Q/ r; n% m; }6 \

  10582. ' c& F- t# k. Y/ Q# U6 |
  10583.            ((= etype "SHAPE")
    . |; {8 p; ~6 V" q5 p
  10584.              (setq help_entry  "modify_Shape_dialog")
    2 G  b+ Q3 D+ }
  10585.              (ddshape)9 ?! `, h3 L; c( Z% m
  10586.            )2 U8 D  U" Y1 p) x
  10587.            ((= etype "SOLID")
    3 G: f/ [: ~) R  _( \
  10588.              (setq help_entry  "modify_Solid_dialog")1 l0 X/ R5 q% ~- P- g
  10589.              (ddsolid)
    4 z. p  F' i, i9 c2 `
  10590.            )
    & A8 u- h& e2 F$ z+ a
  10591.            ((= etype "TEXT")5 o& q0 f  s! ?. L. q9 J
  10592.              (setq help_entry  "modify_Text_dialog"). r$ E$ ]) Q# R' z0 Q
  10593.              (ddtext)
    : v8 E' T. ~) |3 }; x
  10594.            )# ?$ l9 [5 S6 n2 Y! f; H  g# B. r
  10595.            ((= etype "MTEXT"). \8 R  q1 Y% b. a" `0 b
  10596.              (setq help_entry  "modify_MText_dialog")- t" }6 l( C$ I" \5 m' f, U
  10597.              (ddmtext)  {4 P4 M) S. _: U' ?! y
  10598.            )' c8 p7 [& s. o1 h- W
  10599.            ((= etype "TRACE")
    / R4 q2 `* _  w, S" E7 i! n
  10600.              (setq help_entry  "modify_Trace_dialog")
    # P8 }+ k) v1 ]
  10601.              (ddsolid)
    2 ]& a" W* [; Z# u3 c
  10602.            )) e3 o  D6 l# M, F3 C: D
  10603.            ((= etype "VIEWPORT")
    " g( c7 y( ?/ r) o  M& i! J* M
  10604.              (setq help_entry  "modify_Viewport_dialog")
    4 O9 ~" g9 [) d  x
  10605.              (ddvport)) ^  F, r! \# b
  10606.            )( A/ X! r/ T- Z2 [( N. b6 r
  10607.            ((= etype "IMAGE")- |. ?6 V+ s2 c- ~+ E
  10608.              (setq help_entry  "modify_Image_dialog")
    8 e# N3 }9 [. \& B; Z# X- b
  10609.              (ddimage)
    8 e$ `$ {& u( k9 l
  10610.            )
    $ W9 i) i: V8 m
  10611.            ((= etype "3DFACE")
    8 E+ {9 z6 l) o8 M; R
  10612.              (setq help_entry  "modify_3D_Face_dialog")) g  h- A# {* H+ ^( T! {; P0 z
  10613.              (dd3dface)
    ) H3 l' @+ U# }5 {" c* j* ]& i
  10614.            )1 R1 P6 r2 l6 ^1 B9 i. s
  10615.            ((= etype "DIMENSION")
    8 l& B3 o+ y; X
  10616.              (setq help_entry  "modify_Dimension_dialog")8 l; B* B- W0 H) W! _8 s9 H" c
  10617.              (ddimen)0 H+ Y( L# w& q0 M% S) O5 J
  10618.            )
    : P9 \/ {0 M4 W# U' O
  10619.            ((= etype "TOLERANCE")
    ; a& a, a& k( o9 B  y
  10620.              (setq help_entry  "modify_Tolerance_dialog"), x1 w. K. }2 o8 }
  10621.              (ddtolerance)  m$ d- [% b- ]; v
  10622.            )* t1 [+ d" n5 A( m
  10623. ;; Fall-through condition changed by MCAD for MDT 1.1 release.
    , R5 h& H+ w7 P* K9 Q
  10624. ;; This allows DDMODIFY to work on any custom object or any new object type( I! X, s7 _$ {$ n5 w: `
  10625. ;; that isn't specifically handled above by calling the more generic DDCHPROP.* Z9 e* S1 P2 U, s. |
  10626.            (t
    8 n9 o) \8 C0 `5 r
  10627.              (if (and (not ddchprop) (not (load "ddchprop" nil)))
    . {9 v1 [9 ]$ A
  10628.                 (princ (strcat "No dialog support for object type: " etype ".")))
    5 J2 e9 u5 O2 f& h5 m/ C
  10629.              (progn$ J& T; V. L* X. }2 q
  10630.                 (setq tempss (ssadd ename))
    # M# }  P& c# g
  10631.                 (ddchprop tempss). o0 [' C1 l$ Y, W' f" j
  10632.                 (setq tempss nil)+ h& O9 A0 n9 |( I
  10633.              )/ p" r5 I0 V# T! i/ t8 D1 j+ `
  10634.            )6 f1 o  q7 O" w
  10635.         )
    % A# J$ t+ e5 j, X5 P8 D9 W
  10636. ;; Previous fall-through condition.
    ( e0 b8 s# u: W! w( U: O' l
  10637. ;;           (t (princ (strcat "No dialog support for object type: "% H* A7 I5 C, t4 \! F: Y
  10638. ;;                             etype "."8 u2 q0 o6 i, u1 H7 c
  10639. ;;                     )
    ' _. j: j( W! j4 B( K
  10640. ;;              )6 ^. M0 b8 ]3 @# l4 m  f" Q
  10641. ;;           )2 D$ I, c9 L" O* E( ]$ W( q
  10642. ;;        )
    ' E; Y$ A" G2 Z0 ~* P( H
  10643.         (ai_undo_pop)1 y  _! r, |+ @8 @
  10644.      )
    % I5 {/ {( j+ x% ]6 J" B
  10645.   )
    + H" a. P+ H3 ^
  10646. & [  s# v$ X/ k6 [5 W3 A
  10647.   (if (eq new_pickstyle (getvar "PICKSTYLE")) ; if user didn't change pickstyle
    - y: O% v! N: E
  10648.       (setvar "PICKSTYLE" old_pickstyle)      ; transparently then set it back
    + V. c* r) W; {
  10649.   )                                           ; to what we started with( a3 T5 r9 v) C- |

  10650. ) C/ r" {  ~9 s7 S, d
  10651.   (setq *error* old_error)& \" T0 {2 [" Q) Z/ `3 @  n* [
  10652.   (setvar "cmdecho" old_cmd)& D8 e& X+ @* a8 v% k% O
  10653.   (if (not reset_flag)            ; if object was modified, then
    : b0 G  ~5 k! h' b+ |
  10654.       (ai_return ename)           ; return it's ename to caller" p* g8 l8 Q7 C- y. V4 f8 i
  10655.   )
    % a: h- ]# F" E, R+ C6 ]
  10656. )5 @/ B* \9 G- P1 N$ _" Q
  10657. + o5 j6 R  ?; f% G( f
  10658. (defun checkForLockedLayer (ename)! {& F( X% q3 J5 L, d5 V
  10659.     (setq layername (cdr (assoc 8 (cdr (entget ename)))))  T8 v6 @( ~7 z) L. H- F
  10660.     (setq layerflag (cdr (assoc 70 (tblsearch "LAYER" layername))))+ V8 S% d( O' U1 M6 z. W
  10661.     (if (= layerflag 4)
    9 }* k1 J: h- A, g4 H- C! j
  10662.         T  g: \  s' T  L% s
  10663.         nil% o( t2 b6 U' H9 o7 B0 t
  10664.     ): I+ V! Z: S) a+ Z
  10665. )( d/ @+ Z; t: J0 z
  10666. 2 r+ O7 D3 N, E; A8 C
  10667. (princ "  DDMODIFY loaded.  ")3 Y6 W* {% m8 c+ _3 H+ L
  10668. (princ)
    5 u# p; A6 t: F4 N, J& {& N( ^, ]) p
  10669. ;;;???;;;---------------------------------------------------------------------------------------
    ' Q3 n! w& J  _4 i' N3 S

  10670. 9 P1 a) F9 ?5 U" L4 B# k( z
  10671. ; Next available MSG number is    8
      F4 g9 G; [6 y% c7 u( q/ _( C
  10672. ; MODULE_ID DDUCSP_LSP_
    , R$ ^4 f, r- k) ?
  10673. ;;;$ e1 o4 U, u$ y
  10674. ;;;    dducsp.lsp
    $ ^# w: c+ S0 P3 `4 W
  10675. ;;;
    % L. {3 y. z6 @8 {6 y8 K
  10676. ;;;    Copyright 1992, 1994, 1996 by Autodesk, Inc.
    9 c& B7 P/ g: f
  10677. ;;;
    + N8 K7 ^, |* R2 [' K* H9 @
  10678. ;;;    Permission to use, copy, modify, and distribute this software1 M( `; f- Y4 E2 ?3 u
  10679. ;;;    for any purpose and without fee is hereby granted, provided
    ) K* D$ ~: b6 O6 e) x
  10680. ;;;    that the above copyright notice appears in all copies and
    + o5 P& b+ y1 ~) g/ Q
  10681. ;;;    that both that copyright notice and the limited warranty and. L( j( R. {/ a3 T
  10682. ;;;    restricted rights notice below appear in all supporting
    8 O2 x" Q3 T( L+ n* }  o& S  y
  10683. ;;;    documentation./ E( b1 B0 Y0 v% H  R" `8 `  k0 n
  10684. ;;;: b9 N1 ~) Z2 i9 K  W/ u
  10685. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.1 M  M# z3 L" Y8 A
  10686. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF9 K$ F% V7 k! X
  10687. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    8 g* L1 }0 ^1 v1 j6 A& J. w
  10688. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    ) }; ?* B" f: s% ]- S$ ~9 q
  10689. ;;;    UNINTERRUPTED OR ERROR FREE.
    ; l- ~# J; @* h. h; H* I8 @# c
  10690. ;;;+ G0 Q3 q+ K% s) X& o7 P
  10691. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to9 `# n* x+ V: x1 N% [0 H2 n
  10692. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer* P/ i) z( Y( q4 ~4 h
  10693. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    3 {( k: A, \/ H! }7 z3 U" d: I
  10694. ;;;    (Rights in Technical Data and Computer Software), as applicable.1 _, B* N; M) L' s
  10695. ;;;
    ( k% M5 R, U/ a' s
  10696. ;;;.
    ' l. U2 i1 q0 S2 C. L9 T, c; X
  10697. ;;;   C:DDUCSP - User Coordinate System presets dialogue.
    7 Z' {8 L  G8 S, O
  10698. ;;;     
    ! h% a) v( A% [6 E7 v  u
  10699. ;;;              Uses DDUCSP.DCL for the dialogue definition.  The# |4 x4 ]! i- c
  10700. ;;;              slide images are in ACAD.SLB.
    3 L( U: A9 _9 Z$ X9 J
  10701. ;;;6 H+ S" C- m9 C$ M- r# Z
  10702. ;;; ===========================================================================
    , S+ w. X( e$ S* H7 Q/ ^( _; P
  10703. ;;; ===================== load-time error checking ============================
      B% e! ?! E; S; ]6 D# `6 R* k
  10704. ;;;. T, @$ z7 w5 |3 O" {

  10705. ' @5 o( V* L; w! }4 ^- |' |5 c
  10706.   (defun ai_abort (app msg)
    . V" ~, l, N7 W$ N6 B  @9 z
  10707.      (defun *error* (s), ~# G9 l' j, x# A% Q
  10708.         (if old_error (setq *error* old_error))2 V/ U/ L6 d7 t4 v4 R% [
  10709.         (princ)
    5 V9 R: |5 ~" D0 ?9 `& ], A1 v8 a3 z
  10710.      )
    , |9 E: d  b5 F  e9 ?1 R$ h4 g
  10711.      (if msg
    ; s# f) a. f& _" @# E
  10712.        (alert (strcat " Application error: "
    , k" z; j  [+ ^+ ^; N& r. l
  10713.                       app' g% Y0 S7 s3 U$ l( D
  10714.                       " \n\n  "8 J$ W0 T. r# V2 z2 z: v0 i3 C1 n
  10715.                       msg
    ' m6 ?+ S9 P1 e9 M
  10716.                       "  \n"' }0 A2 X" B8 c; S, j! {( r% d( L
  10717.               )
    0 z+ B' N8 u$ T6 J) b2 M
  10718.        )
    " N; D7 x6 b+ z/ Q; r7 L1 Z
  10719.      )  ~- ]1 E# `2 I/ x
  10720.      (exit)4 ]1 [1 w2 K* Y, z  |
  10721.   )
    * E4 b4 n" @$ [/ A/ E
  10722. 3 x( x2 e! t, r0 b/ B# t4 ~+ i
  10723. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,; b' s5 ~' }8 ^
  10724. ;;; and then try to load it.8 f# |% h/ ^9 a( E) M% `4 E2 p
  10725. ;;;
    6 Q+ y) r3 K; N* ^/ z4 O
  10726. ;;; If it can't be found or it can't be loaded, then abort the
    # n/ T' ]  |# B6 j$ j9 d! A
  10727. ;;; loading of this file immediately, preserving the (autoload)
    : Y$ P/ V/ x3 @4 i+ H2 D
  10728. ;;; stub function.  e3 ~: J( a/ h. F8 y! O

  10729. ; V8 @- }0 m3 o5 ?& R. o
  10730.   (cond8 T$ h% l: [" F* _7 r, q
  10731.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.! s! z( D% X% Y
  10732. 4 N2 z) H9 @/ {3 s
  10733.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    2 U5 q) I% v$ E: F5 S
  10734.         (ai_abort "DDUCSP"/ J) _( \: o3 d4 A
  10735.                   (strcat "Can't locate file AI_UTILS.LSP.", W9 [+ o) Q6 M# r$ Y- y# h# u
  10736.                           "\n Check support directory.")))
    ) e( G( {8 y8 M, A, r

  10737. 3 n& o! q6 E4 G6 i1 C! C
  10738.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    : o, T" b2 l/ k% W
  10739.         (ai_abort "DDUCSP" "Can't load file AI_UTILS.LSP"))
    ( S# {9 X; N% |% F6 x6 ~/ x
  10740.   )
    0 X1 e/ W; c& R& ?( U; w
  10741. + n6 u1 Z9 A8 R9 j" `
  10742.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    % ~/ c$ v% D/ v# e- a
  10743.       (ai_abort "DDUCSP" nil)         ; a Nil <msg> supresses
    ; s" N8 D/ F0 [9 C  t2 C
  10744.   )                                    ; ai_abort's alert box dialog.5 D! p6 {( o% ?3 ~% }

  10745. , g: [# Y) B& E
  10746. ;;; ==================== end load-time operations ===========================$ H# p) L, X/ d7 r! L! r1 c

  10747. . M0 y3 @8 |) R
  10748. (defun ai_ucsp_start ( / program)' k6 w9 i+ Y/ O; e) M
  10749.   ;; Get program name
    - w/ p( o9 r( k- T6 I8 a: T
  10750.   (if (not (setq program (getvar "program")))
    * f) u0 P; @% A% g3 y
  10751.      (setq program "acad"): H! ?" |: d# ~$ a* o
  10752.   )
    9 x' z: ~9 X1 \* {* t
  10753.   (foreach v0 '("world" "left" "cview" "top" "front" 2 f0 f' ]9 M! ]2 O, \
  10754.                 "bottom" "back" "right" "prev")
    5 l7 j! E1 D8 j2 H; R+ B) x
  10755.     (start_image (strcat "ucsp_" v0))
    3 \& [8 q1 _! t
  10756.     (slide_image
    5 e( J  e: s/ V+ q2 I$ ^
  10757.       0 0
    . S) K0 I+ X8 A
  10758.       (- (dimx_tile (strcat "ucsp_" v0)) 1) (- (dimy_tile (strcat "ucsp_" v0)) 1)
    + ~$ T7 K; R# b  G* ]
  10759.       (strcat program "(u-" v0 ")")  k8 V& F7 g. |/ \3 i4 ~9 Z
  10760.     )# v4 g! G0 W) K, z8 N
  10761.     (end_image)( R% C& y/ ^5 z. }
  10762.   )( G( A0 y4 c( x: F) G" r. H
  10763. )
    & R4 ^5 J0 i6 e; Q

  10764. 3 [: t$ S# s' l8 P& a9 [
  10765. (defun ai_ucsp_set ()
    8 g9 K- G* ~# }6 L: z3 D" r
  10766.   (if ai_ucsp_sv
    $ F6 J  A1 E- F3 o
  10767.     (command "_.UCS" "_V")9 G5 ?/ B& j( z; U$ L! j
  10768.     (if ai_ucsp_prevs
    ! U, j* s( C% Q3 z
  10769.       (command "_.UCS" "_P")
    . ^3 C$ K) b( S
  10770.       (if ai_ucsp_chg, h1 a& z3 q" S4 k* t5 S! q# V
  10771.         (progn
    - V! B5 X- q0 c  J
  10772.           (if (/= ai_ucsp_a "*")
    7 S9 H8 `) j* n; q1 \$ l* ]
  10773.             (setvar "LASTPOINT" (trans (getvar "UCSORG") 0 1))
    6 I1 E0 s; K' c
  10774.           )
    6 c) ~: e, p! \, p. y. {) v7 ]/ t
  10775.           (if (< ai_ucsp_pick 6)+ |0 H4 n3 N# |$ T
  10776.             (setq ai_ucsp_set0 "@")
    1 o/ u) A  x9 j* H
  10777.             (setq ai_ucsp_set0 "*0,0,0" ai_ucsp_a "*")1 Q% C# |( p1 m, K$ ^
  10778.           )
    3 Y; Z& ]- q& e! l- k' d( D0 K
  10779.           (cond ((= ai_ucsp_pick 0)  v- u5 p) a2 b
  10780.                  (setq ai_ucsp_set1 "0,-1,0"! N. \' F% Y& k8 \+ h6 t
  10781.                        ai_ucsp_set2 "0,0,1"! I* p: Z" g6 K' ?; U) a0 S1 P
  10782.                  ). m# G: z) x% d/ G' O
  10783.                 )% p0 N2 S. B0 M9 \% ?* a/ M
  10784.                 ((= ai_ucsp_pick 2)) x" ?& M$ F7 R
  10785.                  (setq ai_ucsp_set1 "1,0,0"2 Q& P$ |5 K& O2 I( f
  10786.                        ai_ucsp_set2 "0,0,1"
    # V8 k: e- b% M9 d$ {. H
  10787.                  )5 ~7 f) y4 y1 k5 G
  10788.                 )* u" {: l9 n( ^0 S1 h; m9 f
  10789.                 ((= ai_ucsp_pick 3); e8 V* p# s, Z3 ]
  10790.                  (setq ai_ucsp_set1 "1,0,0"& T. m: N* N" \7 Y5 }4 a
  10791.                        ai_ucsp_set2 "0,-1,0"0 }6 {* _( ]+ \( E* D( f3 c
  10792.                  )
    ) v8 s! V4 ^* T% @3 K- w
  10793.                 )  H* d9 a5 e  \$ N2 \0 E
  10794.                 ((= ai_ucsp_pick 4)  J% h2 j" U  `) v
  10795.                  (setq ai_ucsp_set1 "-1,0,0"' ~( A+ W! t) c) ]
  10796.                        ai_ucsp_set2 "0,0,1"
      W3 o* L; Z3 @! p
  10797.                  )2 e+ T! ^0 t( C. g
  10798.                 )
    : M0 A) N2 ^( W) H( s+ n" }0 s# v
  10799.                 ((= ai_ucsp_pick 5)6 }3 J+ h; A8 a4 `3 D5 n5 f
  10800.                  (setq ai_ucsp_set1 "0,1,0"/ x% u% v" E3 R
  10801.                        ai_ucsp_set2 "0,0,1"' P, E+ E$ a$ z+ ~
  10802.                  )3 z2 K' B6 L& Q
  10803.                 )
    6 [3 J0 V  O$ b
  10804.                 (T
    3 n( a8 L8 ~6 a3 t  \
  10805.                  (setq ai_ucsp_set1 "1,0,0"2 m5 `0 t# ~& B
  10806.                        ai_ucsp_set2 "0,1,0"% h: G% I7 ^$ F; Z; W
  10807.                  )
    $ u0 [9 n& J" T- `
  10808.                 )
    ) z  b  P2 T, \- H2 n
  10809.           )- C" J  X) I6 }1 S) H
  10810.           (command "_.UCS" "_3P" ai_ucsp_set0 3 R) I% W8 [" ~
  10811.                    (strcat ai_ucsp_a ai_ucsp_set1)
    # e& H' ^1 H5 L- @7 a. s$ ?# u
  10812.                    (strcat ai_ucsp_a ai_ucsp_set2)0 @  ^# V; C3 H' Q
  10813.           )
    3 k0 Z0 E$ o. ^- {, q6 q" U3 N
  10814.         )
    9 I8 ]; d" K, ?% C
  10815.       )
    5 v9 E" l8 ^. y$ ?' Z
  10816.     )
    . F4 J' R- g7 s- s( ]" C
  10817.   )
    # j/ `8 l/ f3 `7 u) g" ]) x+ X
  10818. )
    * q: W2 g+ m' \# x! j/ O/ @$ V
  10819. / H  k! T! v( C# ^
  10820. (defun ai_ucsp_p (val currtile)3 Z& U( u; D, {. B
  10821.   (mode_tile ai_ucsp_currtile 4)
      m, t6 R* g! p
  10822.   (setq ai_ucsp_pick val4 n3 d5 C! o5 V7 |. _
  10823.         ai_ucsp_sv nil! V; i, v' _/ {0 {* S1 ~0 V% q
  10824.         ai_ucsp_currtile currtile
    + F; S* P4 ?* ^$ l
  10825.   )* r9 H) n9 C9 i! ]9 P1 E
  10826.   (if (/= val 1)
    . k1 g- {0 j2 X3 `# H, e2 K  S
  10827.     (setq ai_ucsp_chg T)' N' j- r& e5 L. `3 U, b/ }" x
  10828.   )9 V3 p3 d0 R1 x/ t
  10829.   (mode_tile ai_ucsp_currtile 4)
    " Q* z% R" O+ k: k* B% E2 ~
  10830. )
    3 ?0 `4 c! {9 i9 q( p1 x- _4 t
  10831. 6 y0 Q3 U, z, ~' m. u( I! t5 m3 n7 {
  10832. (defun ai_ucsp_swcs ()
    ! i7 n2 U# v. W3 X# N
  10833.   (mode_tile ai_ucsp_currtile 4)
    ) T( Q; u$ F* O# [
  10834.   (set_tile "ucsp_a_wcs" "1")# n0 F7 k6 K2 w
  10835.   (setq ai_ucsp_pick 6
    + M1 \, a! h; K1 c
  10836.         ai_ucsp_sv nil: m/ S' Z* w- G. w& [9 b) O( \5 `
  10837.         ai_ucsp_currtile "ucsp_world"
    / g1 d* z$ `3 |. k* ~3 P6 K
  10838.   )! y$ v/ L+ m/ e) r' {, u9 |: l! V
  10839.   (if (/= 1 (getvar "WORLDUCS"))
    * x% Z" o7 {3 A+ }" I4 M5 S: b3 s
  10840.     (setq ai_ucsp_chg T)
    # X) ^" b  F4 b/ T, |, P
  10841.     (setq ai_ucsp_chg nil)+ T" s, J. Z! Q; F
  10842.   )
    4 g  h0 O6 y! C+ G' F. N2 l6 W
  10843.   (mode_tile ai_ucsp_currtile 4)
    & {/ g% f+ A# C; l; |2 ]
  10844. )
    # S  ^$ l3 Q, J( r9 z3 P

  10845. 0 `; U! J5 U5 i  ^; P
  10846. (defun ai_ucsp_cview ()
    9 U  h  ~2 A1 E; R) q+ B, E  N
  10847.   (mode_tile ai_ucsp_currtile 4)
      R. e$ T3 f4 A0 h$ k
  10848.   (setq ai_ucsp_sv T * A1 _- g" E) z% p! d
  10849.         ai_ucsp_chg nil
    / G5 H9 K4 t$ A$ S
  10850.         ai_ucsp_currtile "ucsp_cview"* v, P' M' {: o" _6 K; I
  10851.   )
    ! [9 ]2 m, n8 o: z( O7 p- v% z' v
  10852.   (set_tile "ucsp_a_wcs" "1")
    ; j6 |4 B& B7 B- ]2 h
  10853.   (mode_tile ai_ucsp_currtile 4); k9 E9 Z' n8 o. S
  10854. )
    % W( \% G' y5 Y$ t

  10855. 9 @0 H$ m) w  {( B0 }) t
  10856. (defun ai_ucsp_rucs (typ)
    $ f' ~* w" s* O' F' X
  10857.   (setq ai_ucsp_a typ)
    # D. l- _" t8 N2 x1 X) q5 h
  10858.   (mode_tile ai_ucsp_currtile 2)2 `' {9 l6 G& R6 W: L3 A
  10859. )
    * ^7 W# e' d5 u. }: ~
  10860. ( H0 I, }: k( V
  10861. (defun ai_ucsp_prev ()
    % G- m/ R: s+ W" I* C
  10862.   (mode_tile ai_ucsp_currtile 4)3 ~% x. A8 l& T  g" u
  10863.   (setq ai_ucsp_prevs T
    & ]! b/ {) a( E' n! o
  10864.         ai_ucsp_currtile "ucsp_prev"# B" k! }5 ?8 [) G. m- T
  10865.   )" L# n! P+ _0 [- q- F9 c: j
  10866.   (mode_tile ai_ucsp_currtile 4)
    ( f! H; |! q/ S; e4 x
  10867. )) M* ^% R5 m. M" N, B7 j

  10868. 5 V4 Q/ J: X7 g' |& v8 R
  10869. (defun ai_ucsp_main ( / ai_ucsp_pick ai_ucsp_sv globals)0 f/ o. z( z( n" U  j
  10870.   (if (not (new_dialog "dducsp" dcl_id))
    ) R: Y+ I  j- B/ w3 ~
  10871.     (exit)" X1 O& j' t% ?% V0 x3 F8 t
  10872.   )
    . i6 R5 G& b1 T- U) C2 _9 W- P
  10873. 6 t! M+ F2 n  {
  10874.   (ai_ucsp_start)$ t; w1 A% W; _  E% j7 _
  10875.   (setq ai_ucsp_a "@"
    / M. I  R0 O: |3 F" Z9 z
  10876.         ai_ucsp_pick 25 ], T2 O  V. |4 W4 A9 Z9 t
  10877.         ai_ucsp_currtile "ucsp_top"
    4 c1 E, ?4 L, B% x; F5 ^
  10878.   )) M7 t* e# h6 d, t
  10879.   (if (= 1 (getvar "WORLDUCS"))
    3 a3 L+ P& Y( P: S# D1 l! l
  10880.     (progn- j; ?: P$ ?6 B3 E4 k
  10881.       (set_tile "ucsp_a_wcs" "1")
    + X8 `& b8 \/ X/ f( R& q
  10882.       (setq ai_ucsp_currtile "ucsp_world")3 n8 Z( \; L4 T( k
  10883.     )# B' b. U! p. |, T; e) C
  10884.     (set_tile "ucsp_r_ucs" "1")( B1 W  t8 t# @* ?) P
  10885.   )
    0 f" P( p6 Y7 M8 c
  10886.   (mode_tile ai_ucsp_currtile 2)
    7 x0 D% t0 H" E( j
  10887.   (mode_tile ai_ucsp_currtile 4)
    . n- J0 y; B! N3 q( ~/ @
  10888.   (action_tile "ucsp_world" "(ai_ucsp_swcs)")
    2 u/ m4 l4 W+ ~2 [5 U1 K. T9 N+ R9 }
  10889.   (action_tile "ucsp_cview" "(ai_ucsp_cview)")* a+ p8 A% f) i8 K# T" O5 i) J. Q
  10890.   (action_tile "ucsp_left" "(ai_ucsp_p 0 $key)")3 o5 B: O/ ?; _* N$ D/ i. z
  10891.   (action_tile "ucsp_top" "(ai_ucsp_p 1 $key)")
    ! [* k* {2 ^3 t$ n" I! B
  10892.   (action_tile "ucsp_front" "(ai_ucsp_p 2 $key)")
    $ V* z: [! [; C/ U0 b! @  u
  10893.   (action_tile "ucsp_bottom" "(ai_ucsp_p 3 $key)")
    1 ?8 d5 K2 t) \6 H4 D' e
  10894.   (action_tile "ucsp_back" "(ai_ucsp_p 4 $key)")" j* \8 p6 K1 P; h% U
  10895.   (action_tile "ucsp_right" "(ai_ucsp_p 5 $key)")
      V' ?) \- n3 x, V1 Q" o8 t6 \
  10896.   (action_tile "ucsp_prev" "(ai_ucsp_prev)")+ Y# H/ M- t% p+ I
  10897.   (action_tile "ucsp_r_ucs" "(ai_ucsp_rucs \"@\")")
    * F2 E1 Q+ \/ E2 s2 Q4 R3 x
  10898.   (action_tile "ucsp_a_wcs" "(ai_ucsp_rucs \"*\")")
    . b( r* E% u  f1 t
  10899.   (action_tile "accept" "(done_dialog 1)")! z& `  `" P9 u1 V! Z
  10900.   (action_tile "cancel" "(done_dialog 0)")
    7 ^3 U/ C8 [* W) x2 {
  10901.   (action_tile "help" "(help \"\" \"DDUCSP\")")4 O; K) \6 F3 M: D- Y
  10902.   (if (= (start_dialog) 1)
    . b: _" n5 ~( z, b
  10903.     (ai_ucsp_set)
    2 b1 x9 H+ F" v2 x
  10904.   )
    $ R, Z4 |- q: T- h( t+ A
  10905. )8 }( T( M/ |# ^* I5 V
  10906. ; o) D; ]6 m6 |: a7 u; [9 W; \
  10907. (defun c:UUS ( / app dcl_id old_cmd old_osmode ai_ucsp_prevs
    ' A" {( J, U% F" e" Y8 D1 v
  10908.                     ai_ucsp_sw undo_init)) c: A/ b6 _- j

  10909. 9 h5 h, {0 W; ?& N
  10910.   ;; Set up error function.: t3 B- `9 D9 f7 _- c# s
  10911.   (setq old_cmd (getvar "CMDECHO")    ; save current setting of cmdecho  R- Q9 ]/ H( h9 H2 @0 |5 L" _
  10912.         old_error  *error*            ; save current error function
    0 w- q. n5 Q; _+ {* U; [
  10913.         *error* ai_error              ; new error function
    6 D9 @* L" R/ c" }/ H" V9 Z
  10914.         old_osmode (getvar "OSMODE")  ; disable OSNAP for duration/ N3 A) i3 I3 g5 P  ~& w
  10915.   )+ c2 f8 [) E" Y& b  H2 A) r

  10916. ' {: r6 C6 q* j
  10917.   (setvar "CMDECHO" 0)2 E1 Q" ]- W9 Y6 ~. S

  10918. ) F) U4 Q6 [3 }
  10919.   (cond& t5 Z6 }3 L9 c
  10920.      (  (not (ai_notrans)))                     ; transparent not OK
    5 j6 ~. W% w6 y5 }& t' h* }/ w6 w
  10921.      (  (not (ai_acadapp)))                     ; ACADAPP.EXP xloaded?
    3 }! t/ v! b& _" \$ y/ W" p1 @
  10922.      (  (not (setq dcl_id (ai_dcl "dducsp"))))  ; is .DCL file loaded?
    ( t( d; {7 d7 O" w- Z
  10923.      (T (ai_undo_push)
    3 B  c: K8 j- w% ~6 O- _
  10924.         (setvar "OSMODE" 0)( C1 R7 ~, j  J7 v; A" ?$ e. a8 U
  10925.         (ai_ucsp_main)
    1 ?8 D( u3 {8 r; p
  10926.         (setvar "OSMODE" old_osmode), b" D. P6 R% a; k( S
  10927.         (ai_undo_pop)
    / H4 p" o4 |; t
  10928.      )$ m6 W6 W% V& U9 h" @( n, @% X
  10929.   )% |" o2 d. d4 r

  10930. - |4 h9 _; S# W  Y
  10931.   (setq *error* old_error)
    5 M2 u- u. a! S% s) x0 R. h9 ?1 P) T
  10932.   (setvar "cmdecho" old_cmd)
    / ^9 S5 O+ {$ J" W- Z& Q

  10933. ( S; u0 U7 Q- h; l. z
  10934.   (princ)
    $ m; C5 A* Z1 C, g' Y7 S7 D* @
  10935. )
    " q" Y" w) \; N5 D
  10936. / D3 g+ [5 \7 t
  10937. (princ "  DDUCSP loaded.  "). h, l4 \5 I3 h8 P6 i  Q, ]
  10938. (princ)
    4 Z8 w) J; s+ _  a. J' _
  10939. & c! j* X, F5 f3 l( G9 |% L  J
  10940. ;;;???;;;---------------------------------------------------------------------------------------
    2 H3 H; U3 S9 W7 ~0 l2 ], [6 f" I, G
  10941. ( O% n. T3 F5 C% L
  10942. ;;;----------------------------------------------------------------------------
    - n  x' @/ ^5 c/ |4 n, w: ?
  10943. ;;;4 B$ |, K7 `% L5 O
  10944. ;;;    EXCHPROP.LSP    # e: t+ D9 ?6 Y, T$ y' y/ W& P3 j/ C  m
  10945. ;;;    Polyline and text modification capabilities added by % C3 a0 q9 A6 k1 K6 @
  10946. ;;;    Randy Kintzley  
    & r/ N  ^- W# F5 y
  10947. ;;; . K4 [0 {& m' @5 p" s
  10948. ;;;    Copyright (C) 1997 by Autodesk, Inc.& Q" E$ l* x5 @/ I: i  |. ]
  10949. ;;;
    ( }* \- u% F9 k+ u, j9 D) s
  10950. ;;;    Permission to use, copy, modify, and distribute this software
    - c: P! W' I* A9 o" B% Z
  10951. ;;;    for any purpose and without fee is hereby granted, provided9 H* J* K/ K: j/ Y9 i  O4 K: s
  10952. ;;;    that the above copyright notice appears in all copies and; b  F5 e$ k6 ]3 J/ y6 }
  10953. ;;;    that both that copyright notice and the limited warranty and( i: o2 N2 T- B9 A
  10954. ;;;    restricted rights notice below appear in all supporting
    & @  \! u. _& D" B$ T$ g
  10955. ;;;    documentation.
    ) H3 Q& \+ ]% X- l$ T1 U3 m
  10956. ;;;
    2 `- {1 M3 P, Q: L' A! z+ }7 M
  10957. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    3 G  c, p- A) q
  10958. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF$ y- B+ E  X  J1 j/ F+ v- o
  10959. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    ( M4 t( K5 ^4 T+ _& H. }% V6 L
  10960. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    , \9 g4 U2 d5 U  d+ O- {- S2 N( w
  10961. ;;;    UNINTERRUPTED OR ERROR FREE.
    " l' e: [0 L3 I- W) [; v" S. |. q
  10962. ;;;# A5 P3 w0 L$ g  Z( [0 d0 `
  10963. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to  ^1 I; y8 i; U# {/ B% g
  10964. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    5 O- m  c0 V" h9 _
  10965. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    % B+ C* z1 T8 z) A$ I; g/ ~) t; w  @9 T+ r
  10966. ;;;    (Rights in Technical Data and Computer Software), as applicable." R4 ?5 v) T) n& K$ k
  10967. ;;;4 d2 W+ V7 m) z% F+ O
  10968. ;;;.
    0 q1 {. P+ f' A3 N( ?
  10969. ;;;    28 February 1997* K. i! ?% X! |' k/ p7 [( }( L
  10970. ;;;
    5 U1 f" a6 b7 k; o
  10971. ;;;
    : ]/ H: d' p  g" V) C* K
  10972. ;;;----------------------------------------------------------------------------5 F( Q) h: A6 g' z! Z1 y
  10973. ;;;   DESCRIPTION
    $ c) R$ H: a; j, ]& T, }. o
  10974. ;;;----------------------------------------------------------------------------& Q: v; E6 m1 i8 e6 q* x. s
  10975. ;;;   C:EXCHPROP is an extended or enhanced version of ddchprop. This  
    6 B( L3 E- G; X: }& E
  10976. ;;;   command gives the user the abilitie to change several characteristics . I% J8 j  |1 y* J9 J* W% H# b: K
  10977. ;;;   of selected polyline and text objects. 2 p# K/ ^# b' W. i
  10978. ;;;       The style and height of selectected text objects can be modified
    ; ^' E6 ]4 h  k  t
  10979. ;;;   (including text, mtext and attribute definitions) as well as, width and + x! I  \2 b, S& a) _
  10980. ;;;   elevation characteristics of selected polylines (includes lightweight and
    2 h# q$ f$ A: N" i8 }' w/ q
  10981. ;;;   traditional polylines.)
    & S) J/ b6 G5 o
  10982. ;;;----------------------------------------------------------------------------, y$ @/ X: [7 q9 {. ^! G+ I! L) ]
  10983. ;;;----------------------------------------------------------------------------
    $ n- y  q, B3 g6 _
  10984. ;;;   Prefixes in command and keyword strings:# _* |9 n& Z1 I! u3 H' @) |6 Y
  10985. ;;;      "."  specifies the built-in AutoCAD command in case it has been3 H! M- q0 `' s0 Z+ g& I
  10986. ;;;           redefined.
    & E! @2 y4 j8 I" \( S
  10987. ;;;      "_"  denotes an AutoCAD command or keyword in the native language: w7 K! `- ^! b; d$ P8 s0 P( {  z
  10988. ;;;           version, English.$ U8 D; |1 l* U& l
  10989. ;;;----------------------------------------------------------------------------
    % M6 r) ^6 ^. H; @+ n( ?8 c
  10990. ;;;5 X" |8 _  z1 p, V8 Q1 v' s+ J6 [2 ?% Q
  10991. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; t" J1 O0 w+ L4 V
  10992. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GLOBAL INFO.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    + z. m: r! i: Z" F3 z9 a
  10993. ;Functions created as result of loading file: exchprop.lsp* a5 N6 D5 I, `# F& Q# z
  10994. ; DDCHPROP2, d# g9 }) e/ O2 a- o: a5 {4 S7 x
  10995. ; DDCHPROP2_INIT
    3 S# Q0 x. @) c6 {, s# d
  10996. ; DDCHPROP2_SELECT
    & ]. x. l2 q2 v( r
  10997. ;- r& B% o; q- F  m. x
  10998. ;Variables created as result of loading file: exchprop.lsp
    . q% K9 n( D9 x  y4 F9 h1 u9 G
  10999. ; OLD_ALLOC8 \, x+ d) }: A4 O  |6 s' S5 r
  11000. ;
    6 D- Z4 @4 I' X% G' @
  11001. ;Functions created as a result of executing the commands in: exchprop.lsp( X  Z4 `0 Y# V
  11002. ;
    & k6 l. }/ N" E) x5 E
  11003. ;Variables created as a result of executing the commands in: exchprop.lsp
      G9 [2 o! i! v2 ]9 k% z! r! G
  11004. ; AI_SELTYPE/ ]/ j2 p! n; x6 b
  11005. ; BONUS_ALIVE
    7 ]( M- }4 ^6 R; [7 P3 i, J, J0 Z
  11006. ; BONUS_OLD_ERROR
    ( |  m" i2 w( i7 H8 ]: b0 I
  11007. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GLOBAL INFO.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    8 w8 y9 t: j% _
  11008. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    . o* x+ o' K( Y% g' E$ L- {

  11009. / T5 {5 `. X! Z' l1 c
  11010. ;;;" a, q& W$ i% X" V& g! A5 C5 c
  11011. ;;; Avoid (gc)s on load to improve load time.
    3 k' \. W7 C' i8 m7 D
  11012. ;;;9 ]: K! j7 k: G
  11013. (defun do_alloc (/ old_allod new_alloc)
    . r6 G5 E& Y& y. H4 u% C
  11014.   (setq old_alloc (alloc 2000) new_alloc (alloc 2000)), B# A2 o( ^+ g; r' ]: c, w+ h. j
  11015.   (expand (1+ (/ 4750 new_alloc)))2 p! }% }: R$ |6 R: a, n
  11016.   (alloc old_alloc)
    & |$ k$ ?' f! ~; L
  11017. );defun* f- t: {9 s6 r  Y( E
  11018. 4 K1 Z$ O& K  T
  11019. ;runs at load time - rk/ i, |  {8 y% E% I$ m* K/ O
  11020. (do_alloc)* j3 Y* ?* H# F8 w# u
  11021. (setq do_alloc nil)
    2 p2 O# O! m4 |: ~. C! d* v
  11022. ;;;
    0 x- c9 s2 @. z" v+ `
  11023. ;;; ===========================================================================
    6 F) |9 W  U  ^" u
  11024. ;;; ===================== load-time error checking ============================
    ' L4 W) J& q2 T' A, J5 Y- z" k
  11025. ;;;' h) B7 D* N8 z; P6 m

  11026. ; ^+ z- D& m& W$ w& J
  11027.   (defun ai_abort (app msg) 8 W6 Y/ ]* C  g3 |; V, i: a
  11028.      (defun *error* (s): C+ w+ E* x, d4 R' V1 L
  11029.       (if old_error (setq *error* old_error))" G) `8 s, d1 f: j/ S* A2 v3 x; v
  11030.       (princ); Y. p6 t7 o+ j( ~8 H0 {0 o, C
  11031.      );defun
    . i% z5 v5 u/ p0 C; p" e7 G$ m% K
  11032.      (if msg$ S. _" Z  j( {3 I8 m/ \( j
  11033.        (alert (strcat " Application error: "
    1 r+ }, M% G% T" Y8 V, k6 u
  11034.                       app
    2 D6 M: M% b; V% a: {& {, o9 \
  11035.                       " \n\n  "
    ; G2 Z  t7 Z- O# E' x# h
  11036.                       msg( x. H3 T9 M7 f
  11037.                       "  \n"& d& y$ H+ b2 W9 ?) h3 |, g. z$ S
  11038.               )
    4 E5 v& ?) m/ m) d% I8 f/ Y
  11039.        );alert8 S+ d) f0 k& i
  11040.      );if- h5 N, y; b# p% X8 u7 D' x
  11041.      ;(*error* msg)* Y% ^( m1 M9 @0 ?; I+ [$ z
  11042.      (exit)4 D0 l% f' ?+ C
  11043.   );defun ai_abort( d/ e& k5 c9 K+ |' m9 M* }
  11044. 2 a" a7 G: ]- K: L& Y' j5 n) k5 R+ [9 x
  11045. ;runs at load time - rk3 o5 J$ v( z5 s& [& w! V  N/ H+ b; c* l6 l
  11046. ;(if (and *error*      ;added the if wrapper around this - rk.
    5 v$ Q5 Y+ Y9 d3 g" v; }" R
  11047. ;         (not old_error)      
    # n" m7 m! R8 U9 {) U  O
  11048. ;    );and $ r) T+ E" Q+ Z' t  h
  11049. ;    (setq old_error *error*);setq, ?- a. C- W4 X; `7 Q+ M: P/ Y
  11050. ;);if7 C4 h. R# L$ }  a, K8 _
  11051. ' z; H( U" y4 n) I: n

  11052. - T; p  V6 w; a* j
  11053. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,( A" a: z; h) H% W. e: V6 v
  11054. ;;; and then try to load it.
    ' Z2 S( W0 h) z( p; [9 {
  11055. ;;;5 v& q  D4 Y" F" P& z
  11056. ;;; If it can't be found or it can't be loaded, then abort the
    + B. N, s2 F/ |4 n
  11057. ;;; loading of this file immediately, preserving the (autoload)' w" ?6 ^' H: a( a9 @( M
  11058. ;;; stub function.
    ! @. O( ?2 {2 F2 \  l
  11059. ) L6 s+ ?( Z0 S1 O' |8 Q% b2 I+ ~
  11060. ;runs at load time - rk.7 [: j! u2 @' t, i0 M
  11061. (cond# ]' H+ D. ~0 f3 l+ X
  11062. (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.4 _7 L7 A  P6 ?6 u5 ~
  11063. (  (not (findfile "ai_utils.lsp"))                     ; find it. ]5 \; i; w# c6 V1 f% y
  11064.     (ai_abort "EXCHPROP"
    ; w- V( ]* n4 q1 _7 o& G" w; _
  11065.               (strcat "Can't locate file AI_UTILS.LSP."
    " ?' @7 p& S6 U
  11066.                       "\n Check support directory.")
    $ Y  }) x& _  F7 @- D3 n9 r$ g
  11067.     );ai_abort: [* F/ N" g% D; p# E
  11068. )
    $ z: b0 j" i, l, X$ b  a  S& [" N
  11069. (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    . [5 T! m: b4 v% I! S+ i
  11070.     (ai_abort "EXCHPROP" "Can't load file AI_UTILS.LSP"). f# B3 o6 w8 c& h7 o& C' A- B
  11071. )- [: S4 {1 d# k( J* c
  11072. );cond close4 W% p4 l9 a, K8 |

  11073. : p. @6 l$ `. T. s5 w) G* ^! r% q* G
  11074. (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    ' G" j* R# O2 R, p6 x/ p+ B
  11075.     (ai_abort "EXCHPROP" nil)       ; a Nil <msg> supresses: w# w9 b+ s. p# T* g7 o) {+ t
  11076. );if                                 ; ai_abort's alert box dialog.
    * @$ i& H" A4 x+ \7 \
  11077. " R( z# K/ A/ E9 T) v
  11078. ;;; ==================== end load-time operations ===========================. ?" _5 t$ q! R8 m* E+ Y0 V
  11079. 6 b& E0 _8 W7 k
  11080. ;;; Initialize program subroutines and variables.# D% q9 d: `* A- a7 b. n' i

  11081. 8 _0 B5 Z1 c$ Z* S
  11082. (defun ddchprop2_init()0 Y1 ?, ~& f% V' R

  11083. : P) D6 ?, X, O, q  h+ g; ?
  11084. # h! ^7 L8 m/ L! T! D8 n6 g
  11085. 3 K9 s- M" I4 a) t1 m+ l4 E: Z, y
  11086.   ;;
    2 j. V6 q+ D' \
  11087.   ;; Define buttons and set values in CHPROP dialogue box3 {  ]/ C  O1 M/ i" s3 J7 c
  11088.   ;;
    ! J& l) E, Q+ a5 {, X* n( D
  11089.   (defun call_chp2 (/ cmdact p1 p2)
    / f6 E* ^0 Q& l
  11090. 9 e4 \+ P0 p% z/ w: [
  11091.     (if (not (new_dialog "ch_prop" dcl_id))
    7 O; y% U7 n  |* _
  11092.         (exit)
    % Q1 P8 i: c4 w* A* t- y! ~
  11093.     )& V( N! c1 p& j9 U+ N
  11094. 1 `' Y7 ?/ J; C
  11095.     (set_tile "error" "")
    ' q' G5 k" l' O' a
  11096.     ;; Set initial dialogue tile values
    $ K+ d* q' _  F, J: h! I: }
  11097.     (set_col_tile)$ I: }$ H9 T& K+ h) o1 I8 c5 M! k- K
  11098.     (set_tile "t_layer" elayer)7 _/ S# H% ]1 ^9 [% h7 {

  11099. ! @* I) o" W, E2 G6 F; O, i# d% E
  11100.     (cond) j) ?% O- A/ K6 N5 q3 k6 z
  11101.       ((= lt-idx nil)* h7 G8 G7 U' T' k8 o+ X
  11102.         (set_tile "t_ltype" "Varies")
    - O( R( u+ _# q% g
  11103.       )5 B5 S! Y7 T2 G1 }' s
  11104.       ((= lt-idx 0) ; set tile "By layer & layer linetype"& j+ x- [9 L  k9 t
  11105.         (set_tile "t_ltype" (bylayer_lt))$ e" ?2 e' Z. S4 L7 w. a
  11106.       ). Z2 [5 z+ \- l/ B8 W+ F$ \- ^
  11107.       (T
    9 G  L- q7 D9 [* K* t
  11108.         (set_tile "t_ltype" (nth lt-idx ltnmlst))
    3 m$ A( v8 n0 j$ o
  11109.       )6 W+ |5 I6 J" U! m: X& G
  11110.     )
    & E' b7 J" ~' v+ @

  11111. ! Y0 I& p/ P" u' W4 g- |
  11112.     (if (or (= ethickness nil)
    1 e) h* x' t3 G+ a7 r3 q
  11113.             (= ethickness "")
    - d- B; H( K, o$ n
  11114.             (= ethickness "Varies")
    ; q- u7 g3 I3 A( G3 `! }1 v: Z
  11115.         );or
    & O  V7 A6 y2 C# E; G: E5 ?6 ?
  11116.         (set_tile "eb_thickness" "")
    5 _) K# ~( C( A6 z1 H
  11117.         (set_tile "eb_thickness" (ai_rtos ethickness))
    9 V* C! t7 i/ z
  11118.     );if& j% u+ T: i8 _$ Q& Q/ u
  11119.     (if (or (= eltscale nil)4 @0 o1 T0 G9 B; P
  11120.             (= eltscale "")! _& J* V/ w8 p
  11121.             (= eltscale "Varies")
    0 [- L# {2 q" }, F

  11122. 6 g, {1 E! z% A. q) L3 E& e
  11123.         )
    # u- T$ c; P4 [; A" G. e
  11124.         (set_tile "eb_ltscale" "")9 \  {: s' D7 b9 F, Z/ R
  11125.         (set_tile "eb_ltscale" (ai_rtos eltscale))
    + o8 n- w7 {% l* U1 [
  11126.     )
    ! A% ~1 s# r" Z7 L, U
  11127.     (if
    , j( b# q/ |3 F" x, |# a7 U3 r
  11128.       (numberp ewidth)- V  e, k  h' |2 d+ J' d
  11129.       (set_tile "poly_wid" (ai_rtos ewidth))
    ) M8 X. O" a1 Z5 O1 n
  11130.       (set_tile "poly_wid" ewidth)/ L2 U, f0 Q9 l
  11131.     )
    1 N' {" Z& M: x7 q  p
  11132.     (if
      u) G. t' h; r4 U) K
  11133.       (numberp eelevation)
    5 d. z/ a+ a2 B, M! Z  a  |2 K7 g
  11134.       (set_tile "poly_elev" (ai_rtos eelevation))) ~, D$ e- N" b- \0 H3 I8 j$ c
  11135.       (set_tile "poly_elev" eelevation)& N1 a9 y+ |0 V. M2 S% L
  11136.     )5 r. }) n9 }2 m" o  Q
  11137.     (if
    : V; ], y5 C7 u! h7 O0 p( E9 J
  11138.       (numberp eheight)
    " a: D3 @# l  C$ ]$ @
  11139.       (set_tile "text_hgt" (ai_rtos eheight))
    6 u9 b6 g9 v- k
  11140.       (set_tile "text_hgt" eheight)8 s" F0 \) _$ k1 g4 a9 m
  11141.     )
    6 H/ B) p% C! X6 T0 b
  11142.     (if (not estyle)
    5 i& k! p4 J% @  b
  11143.         (setq estyle "")
      |" x8 k* u" f
  11144.     );if
    , ?# Z) g) w9 Y# i/ \
  11145.     (setq hair_style_list (tnlist '("style" 16)));setq1 Q  w- `2 f3 e, X
  11146.     (if (not (member estyle hair_style_list))! o6 n4 Z) b. ~( `* O- x% K
  11147.         (setq hair_style_list (append hair_style_list (list estyle)));setq; y0 K. M( `0 M- k
  11148.     );if 3 }6 F9 [3 s2 Q5 b: R% N

  11149. , T( m3 l/ b! S8 k
  11150.     (setq hair_style_list (acad_strlsort hair_style_list));setq
    ( k. C, ]0 g# W3 ~* U
  11151.     (mpoplst "text_style" hair_style_list)2 V5 v6 c/ c( C4 f& k
  11152.     (set_tile "text_style" 9 ]# L6 ~3 l4 e9 K% o2 Q
  11153.               (itoa (position estyle hair_style_list))9 h% Z; \7 B/ J
  11154.     );set_tile
    . [, U& o. i# O. ?5 R
  11155. : S$ l* @& x! g+ x3 J
  11156.     ;; Disable tiles if need be...  ;@RK( N# l* K9 |7 ~& H( b1 a% Q1 M' r
  11157.     (setq a 0)# C9 \% w9 k" C# a
  11158.     (while ( < a  (sslength ss))& @  _. Z5 k7 `) x7 P- J
  11159.       (setq which_tiles% k* z* F8 r! S8 }7 {
  11160.             (ai_common_state (cdr (assoc '0 (entget (ssname ss a))))))
    % {1 z1 ?2 A" t+ g2 h" |
  11161.    
    4 s- Z% P# [+ Y2 \6 n
  11162.       ;; If all fields are enabled, don't bother checking anymore.% s, n8 f0 r1 n2 c
  11163.       (if (/= which_tiles (logior 1 2 4 8 16))
    , U& r' ]' I; b( }7 V
  11164.         (setq a (1+ a))7 i6 i* J( ]6 J
  11165.         (setq a (sslength ss)). I9 `6 P( R! B: v, V
  11166.       )0 o; `- n' u/ C# |6 r
  11167.     )
    " R% O! O- _5 |" z
  11168.     ;; Layer Button and Text Field* C; o5 k6 z! n: t. _6 f
  11169. , H3 K; k2 L% b! q7 l' |1 s
  11170.     (if (/= 1 (logand 1 which_tiles))
    - v8 T/ l% d4 _$ [) c5 ?: ]. q
  11171.       (progn
    0 m; D% h* a8 |  ~4 E) T) t
  11172.         (mode_tile "t_layer" 1)" Y9 D/ z' r& k. ^
  11173.         (mode_tile "b_name" 1)* ?7 b* w7 S/ k7 U! {
  11174.       )# Y5 q$ E. D. N  p
  11175.     )
    2 ]9 I: c0 x2 E, ]1 `( M+ C) X
  11176. 4 V3 J9 p( Y  U& a7 h
  11177.     ;; Color Button and Text Field
    1 s$ n1 t) [( y& u+ N2 B  x  p
  11178.     (if (/= 2 (logand 2 which_tiles))
    1 L( v; Q; |0 I* J) r& u! C1 |# p2 B
  11179.       (progn
    $ U8 a. _. ^6 I5 j9 E0 k
  11180.         (mode_tile "t_color" 1)6 p  _. X$ A0 z" u. e
  11181.         (mode_tile "b_color" 1)
    # m9 Q/ J2 s, N# `6 P4 @
  11182.         (mode_tile "show_image" 1)
    " \  i- u0 v7 N: K: n: K* G
  11183.       )* f; Y# E1 ?" b" \1 v8 x: n- U. a
  11184.     )
    5 i$ _8 l( B' Z6 o) O6 p
  11185.     ;; Linetype Button and Text Field
    - Y9 r% T( `6 e% [1 u2 a; u
  11186.     (if (/= 4 (logand 4 which_tiles))" p; E( F2 S$ Q! |( B
  11187.       (progn
    0 ^! {' R0 ?; y# ~% O. [: r
  11188.         (mode_tile "t_ltype" 1)/ B5 e, `7 t2 H/ }
  11189.         (mode_tile "b_line" 1)6 m8 ^& {  _4 f9 w, ?! d
  11190.       )
    3 p0 \/ S0 k# f
  11191.     )
    8 V% ]* L9 N9 A% i
  11192.     ;; Linetype Scale Edit Field% y# H: f. k& D
  11193.     (if (/= 8 (logand 8 which_tiles))
    ; A% z0 U7 z; C+ {4 x- Z6 [
  11194.       (progn
    , T1 S5 p, L7 e( m. g( O3 @
  11195.         (mode_tile "eb_ltscale" 1)
    * J8 A1 I' u( p6 R
  11196.       )& d# n" N7 q6 F% Z7 d& u0 _1 {+ h# ~
  11197.     )
    1 Q1 _  R- A% R$ @# d0 G
  11198.     ;; Thickness Edit Field.
    * X1 l/ ?+ i* i7 l2 a+ Z8 f
  11199.     (if (/= 16 (logand 16 which_tiles))
    " k0 n( i/ B6 |
  11200.       (progn
    ' H: [- D7 P" c
  11201.         (mode_tile "eb_thickness" 1)% ~. i: @# ?& D( ]# d% i; r1 i+ G
  11202.       )$ D0 f( Q$ H$ O0 d* k
  11203.     )' Y% V. s1 m# s0 u, M2 {6 q
  11204. ( f8 i: V" N/ X5 I* d$ N
  11205.     ;; Polyline box and tiles          @rk 10:05 AM 1/30/97# ?4 d. I1 p6 g! S, x
  11206.     (if (not (= 2 (logand 2 eflag)))
    2 y) [) m9 p( i3 m
  11207.         (progn0 m5 J& _+ M# _" ]) S" l
  11208.          (mode_tile "text_hgt" 1)
    " @' n  G+ C, x2 Z- G
  11209.          (mode_tile "text_style" 1)
    ( ~9 r  v' K4 x4 e; P
  11210.         );progn% s" Y/ e& u3 }9 O2 l* B2 c6 U
  11211.     );if
    - z: Q; g4 U' a. R
  11212.     (if (not (= 1 (logand 1 eflag)))8 w' l9 ~  ^* y7 L. ~5 m7 a
  11213.         (progn
    " X% @/ y- x( u3 l
  11214.          (mode_tile "poly_wid" 1)
    ! F6 w2 I9 G/ T  a% p% A
  11215.          (mode_tile "poly_elev" 1)
    4 S6 E$ a. d5 j, N2 ^# p7 _
  11216.         );progn then disable polyline fields4 L# O+ N0 U3 a- F7 n/ ~+ R
  11217.     );if
    , J! F8 C8 `/ i& Z. S+ H" c
  11218. * O8 v9 n1 ]( \1 ]' ?9 r, v. i* b
  11219.     ;; Define action for tiles
    ' B; m/ g: V$ B7 y
  11220.     (action_tile "b_color" "(setq ecolor (getcolor))"), Y. K8 w# h. A; x
  11221.     (action_tile "show_image" "(setq ecolor (getcolor))")
    7 h$ q6 k. C5 i( A- x8 X: h. [
  11222.     (action_tile "b_name" "(setq elayer (getlayer))")" z' W+ A8 p' u  M" r- K; j0 `  S  _
  11223.     (action_tile "b_line" "(setq eltype (getltype))")4 o( A: z& D; b. f) r3 r
  11224.     (action_tile "eb_ltscale"  "(getscale $value)")
    , A4 B# [! A$ N3 h. H2 H) p5 g1 C8 ?' I
  11225.     (action_tile "eb_thickness"  "(getthickness $value)")# j4 K+ T) J# |
  11226.     (action_tile "poly_wid" "(getwidth $value)")6 E4 J# B6 S% n& d  @% X1 d7 A. K
  11227.     (action_tile "poly_elev" "(getelevation $value)")
    " y) a) q7 b. q' D0 v( H
  11228.     (action_tile "text_hgt" "(getheight $value)")
    " @9 _: \; ^7 x; A
  11229.     (action_tile "text_style" "(getstyle $value hair_style_list)") 8 f: w' |6 z" M! D' U$ R
  11230.     (action_tile "help" "(help \"AC_BONUS.HLP\" \"EXCHPROP\")")9 e$ o* \3 h% u0 c
  11231.     (action_tile "accept" "(test-main-ok)")3 q: L5 k2 {& n
  11232. ) ~. A/ \5 C  G6 w, ~4 \+ Y
  11233.     (if (= (start_dialog) 1)2 K: U9 h3 Z& A; r3 G7 L
  11234.       (progn- x9 ]" f9 u6 d, p  j) `* n' A- `
  11235.         ; Update special properties for polyline and text selection-sets.
    6 a! O! F5 y' k* ~
  11236.         
    % Z* G) p  |4 g: V8 E
  11237.         (if (and (= 1 (logand 1 eflag))   ; polylines rk chprop$ k6 o$ B$ ~! r" B
  11238.                  (or ewidth. V/ M, s: x) h& X4 G3 u+ a
  11239.                      eelevation
    ( {  @# G' K% r- w, t0 b
  11240.                  );or8 D- e. m( R2 ?; u! ?
  11241.             );and
    8 j$ M7 {% z* _) r( L4 h
  11242.             (progn, E1 _/ C( I0 X  M5 P' j
  11243.              (setq  ss-index 0 % [& x5 I3 F* h5 u. b, s
  11244.                    ss-length (sslength poly_ss)
    % k% v+ A: w4 @. l$ u9 P
  11245.              );setq
    5 b6 o$ [/ B3 h) `# {& f
  11246.              (while (< ss-index ss-length)
    9 f# I( v- C: s- M  E
  11247.                (setq ename (ssname poly_ss ss-index)
    4 ?0 O2 ^0 k4 _/ L0 n
  11248.                      elist (entget ename)
    0 |! [' x( Y) Y8 u4 j9 o2 z% _: V
  11249.                );setq
    & M6 [9 b" I7 I
  11250.                (ucs_2_ent (cdr (assoc 210 elist)));this function lives in ac_bonus.lsp4 x' E8 l" `6 z) R# F$ ]6 a
  11251.                (if ewidth
    6 J; h- s9 f$ R0 K9 U5 W
  11252.                    (command "_.pedit" ename "_W" ewidth "_x")2 Y' X8 f6 V9 a' F
  11253.                );if
    # b7 {! I% q5 @' E& x+ v5 w
  11254.                (if eelevation 8 G3 @0 P$ {% X
  11255.                    (progn' H0 ~' ^* L+ k" t/ u# S- d3 z
  11256.                     (setq p2 (list 0.0 0.0 eelevation));setq
    % v3 X  y9 X8 l
  11257.                     (if (equal (cdr (assoc 0 elist)) "POLYLINE")
    ' E( u, _* A  S8 h9 M3 B* L) p
  11258.                         (setq p1 (list 0.0 0.03 [6 s* C& ^. a' ?- C
  11259.                                        (caddr (cdr (assoc 10 elist)))
    7 F2 e! r8 Z5 |4 l9 E: |& V
  11260.                                  );list( |+ n. @2 J* ^0 K1 k, s
  11261.                         );setq, I8 b. E7 g2 P, ^8 c4 U
  11262.                         (progn7 J8 B; J1 j8 h' R' W7 M
  11263.                          (if (assoc 38 elist)  `1 G2 N3 C; r' T. ?: s
  11264.                              (setq p1 (list 0.0 0.0( p, o4 n4 u, m
  11265.                                             (cdr (assoc 38 elist))$ t2 A: M0 a) B1 k: |
  11266.                                       );list
    6 U- y7 x- v) X
  11267.                              );setq
    7 ^+ `/ }0 Y9 f: n' {9 k
  11268.                              (setq p1 '(0.0 0.0 0.0))8 [- d: S, w9 N3 p
  11269.                          );if! N4 ~% q! N8 Z9 u
  11270.                         );progn
      u. A, P6 m4 I# Y4 h
  11271.                     );if; [/ L) \3 N9 Q* M6 ^7 Q7 @$ Q, e
  11272.                     (command "_.move" ename "" p1 p2)9 j8 W) R% L( e: {$ q
  11273.                    );progn then change the elevation of the polyline# q% L( l2 f! Q+ E+ X( T
  11274.                );if! G3 w7 W6 E" r; M& M% `5 K
  11275.                (command "_.ucs" "_p")( m  i2 D- s6 |+ ]9 i7 G' t! H+ c
  11276.                (setq ss-index (1+ ss-index))! X; J2 k& ^9 I/ A) p
  11277.              );while9 B' Q1 W( i+ S0 R$ W- S0 g: [2 k4 P" I
  11278.            );progn then polylines are in the selset
    ( C+ U: q* N4 ?
  11279.          );if
    , c5 N% h* d6 Q9 Z
  11280.          (if (and (= 2 (logand 2 eflag))     ; text. Z0 I% A9 f+ j1 v# v  e3 n7 O
  11281.                   (or eheight
    2 S. Q0 i. b9 a9 F
  11282.                       estyle
    9 \" c! a. q4 [5 r
  11283.                   );or
    ( i- m9 v( I* D9 ^+ b
  11284.              );and
    ' b8 A8 s/ l* @
  11285.              (progn
      L2 C1 O% U2 h
  11286.               (setq ss-index 0 ss-length (sslength txt_ss))
    - x8 P) G- e' F8 A
  11287.               (while
    . h& m" Z/ R1 b0 E  P2 T
  11288.                 (< ss-index ss-length)
    ; B$ u7 \$ \& m' Y4 F
  11289.                 (setq elist (entget (setq ename (ssname txt_ss ss-index))))+ k$ x9 ?% ~/ z/ R
  11290.                 (if (numberp eheight)
    4 O9 E2 T: W3 \1 |# \' u  `
  11291.                     (setq elist (subst (cons 40 eheight)4 C- L& S. I" C
  11292.                                        (assoc 40 elist)2 h. o, C- E8 W) A1 c5 L5 j: d
  11293.                                        elist# |1 k3 U2 }; a$ g" U0 Q" }* [0 {: O
  11294.                                 );subst( F* y9 S: U1 s  K. i8 ^$ t% p
  11295.                     );setq
      k! {# M, d5 T3 D5 `/ P
  11296.                 );if) S/ ]- c4 i( w' K' H# S
  11297.                 (if (and estyle ;(not (equal estyle ""))
    - u3 K: l& m. E
  11298.                          (not (equal estyle (cdr (assoc 7 elist))))3 H5 B- ~/ d/ c1 y7 w. Q9 s( B  {
  11299.                     );and% {6 h) U# x9 b7 L' D7 |( T
  11300.                     (progn  
    0 \. Q* x& K  s" G
  11301.                      ;rk. This needs to be implemented as per mtext font issue in                                                                                                          ;    ddchprop_notes.txt
      Q' W& e9 M  H- ?( _6 d3 @
  11302.                      ;(if (equal "MTEXT" (cdr (assoc 0 elist)))
    / ^$ f/ T2 b4 |3 R% S/ Y5 c
  11303.                      ;    (setq elist (fix_mtext_fonts estyle ) s" c4 O: p# q. r; B
  11304.                      ;                                 elist4 ^' V8 L- x4 _% t8 a% @( i
  11305.                      ;                )' Y- }! D* A! c/ d" }5 z
  11306.                      ;    );setq then
    # R$ [2 A9 k" S, G
  11307.                          (setq elist (subst (cons 7 estyle)4 w) _0 R, J% U. e; x' s+ @
  11308.                                             (assoc 7 elist)9 Y# w% k/ q2 ?( x/ G) w' H( R
  11309.                                             elist4 Q% U1 k7 U0 J; }+ Q2 H
  11310.                                       );subst3 t: d  T: w3 z% p% M
  11311.                          );setq else. x; o3 Y4 R+ N+ }+ c
  11312.                      ;);if 2 Y# I5 ^/ M* u' v
  11313.                     );progn
    - J% Q$ I* \; P0 c& Z% q
  11314.                 );if
    6 M; y, R2 W& Q6 ~9 o
  11315.                 (entmod elist)+ y& G4 w4 x( h: }
  11316.                 (setq ss-index (1+ ss-index))
    . l, e6 ?( H0 |/ P; s5 Y
  11317.               );while0 P& {" n5 \, \8 p
  11318.              );progn then
    : W7 Q: N/ s0 N% n# P, X" F
  11319.          );if
    6 g- d. T( r! X8 w% ~: M

  11320. $ Z  F" W! u- C- H" U8 b4 G
  11321.         (setq cmdact (getvar "cmdactive"))
    & a6 Z+ b$ y0 i) X9 S; y
  11322.         (command "_.chprop" ss "")
    1 b- {) |6 l' ~' t% t: |# S% p
  11323.         (if (/= cmdact (getvar "cmdactive"))  ; Is CHPROP actually running?
    4 I* {  S$ L  e$ n0 ]) Y
  11324.           (progn
    " ^' x% C( t( m  _1 Q9 Z/ H" ^
  11325.             (if ecolor0 q1 k& j" f% C
  11326.                 (progn
    / ~* B! i8 p( A8 K7 k: Q
  11327.                  (if (= 0 ecolor)   (setq ecolor ;|MSG0|;"BYBLOCK"))
    ' }4 k/ |+ w5 }& f& m+ E
  11328.                  (if (= 256 ecolor) (setq ecolor ;|MSG0|;"BYLAYER"))( G- `6 s' p1 k. D5 Y9 p( _8 S
  11329.                  (command "_c" ecolor)7 x' o/ `) f& ~- R2 P
  11330.                 );progn then
    ) T" H) G) `# p) |
  11331.             )
    + |  w5 {& n- [
  11332.             (if (and lt-idx% o$ k; g) M) J* R- e
  11333.                      (/= eltype ;|MSG0|;"Varies")4 w4 o8 I0 J' @
  11334.                 )
    ' L6 |! y& [. S# L
  11335.                 (command "_lt" eltype)
      F4 p* J5 S, D/ u3 h/ H. u
  11336.             )( I& M* n8 I) B- N
  11337.             (if (and lay-idx ! ~0 o; m8 I4 V: |
  11338.                      (/= elayer ;|MSG0|;"Varies")( y8 d% ~- n1 b0 n
  11339.                 )' o) B9 a1 ^2 z) j
  11340.                 (command "_la" elayer)
    $ u$ @% z+ g4 n0 F; y( w- x
  11341.             )9 v# K% V+ ?0 @7 q; q
  11342.             (if (and ethickness 5 L/ a' V5 H$ z; q( l
  11343.                      (/= ethickness "")4 i( P! O' ~8 `- u
  11344.                      (/= ethickness "Varies") 2 L+ H# W( J& y0 m; r% o4 N
  11345.                 )+ c  P. U9 U9 y8 b+ x
  11346.                 (command "_t" ethickness)
    ) r7 ^; |6 J7 T3 ~& k1 O
  11347.             )
    % j" N6 S' p* ^; y
  11348.             (if (and  eltscale (/= eltscale ""))
    . B0 A+ X2 C2 |0 Z7 ?0 U
  11349.                 (command "_lts" eltscale)! C8 b( d, \2 O  g. n
  11350.             );if
    9 h5 a: `! w6 |, H+ p* c
  11351.             (command "")( q- G. R- d+ A& Y; [8 c4 n$ `
  11352.           )1 P1 I" M4 ^! ]3 K: i
  11353.           (princ "\nProperties unchanged")  ; CHPROP didn't like our SS set6 g: Q  ^; e( E/ v/ J& T/ D7 F9 `3 B
  11354.         )7 J) N/ M9 c& J' n2 A

  11355. ; L& R" ~, D/ J# R8 M
  11356.       );progn then OK was picked in the dialog.: z/ p7 D( P$ S
  11357.       3 ?0 i3 m- U, t- h
  11358.       ;; Fred GERBER - 25-AUG-94) B: j) y; U' n1 V, b5 g+ X
  11359.       ;; Don't print the "Properties unchanged" message when the user cancels. J& N8 y9 Z' e& r8 n7 x4 ~
  11360.       ;; the dialog because he knows that already (otherwise he would have
    * A" I- A* f/ Y0 A1 e
  11361.       ;; hit the "OK" button). Display the message only if CHPROP fails for
    + K* B+ `) r6 @8 y
  11362.       ;; some reason, because it is not the expected behavior of the command.3 I  d* \6 e( p; p# a; k  v
  11363.       ;;" O3 D6 a0 F: p6 q# D/ Q
  11364.       ;; (princ ;|DDCHPROP2_LSP_8|;"\nProperties unchanged")" w+ j2 c% U. a0 i/ K
  11365.     );if) Q+ ]9 J: H, F1 D$ V+ T
  11366.     (princ)
    # ?. J* q0 r/ A' |. Y3 F  z
  11367.   );defun call_chp2
    # H; c7 [* b4 J# N
  11368.   ;;/ m3 u3 ?1 X. i, i* C
  11369.   ;; Function to set the Color text tile and swab to the current color value.
    ( j+ b' w% F/ t! ^8 T3 Q7 x  E& l
  11370.   ;;  v, E' S6 i# i
  11371.   (defun set_col_tile()
    / b1 C: U1 o$ y/ C
  11372.     (cond* F& F3 o7 X2 U% V
  11373.       ((= ecolor nil)7 b4 k  J* j8 h' C6 D$ l  Q, ]
  11374.         (set_tile "t_color" "Varies"); r" i& A: C9 M, q# x
  11375.         (col_tile "show_image" 0 nil)5 i% C1 i& L, y" g/ u
  11376.       )/ X8 b# k6 N* a7 m/ s
  11377.       ((= ecolor 0)1 y7 Z) q) d" N3 q6 c
  11378.         (set_tile "t_color" "BYBLOCK")
    ( Q; i& M+ {& _) M9 z
  11379.         (col_tile "show_image" 7 nil)    ; show BYBLOCK as white! m! N# V# j  j
  11380.       )" D% t2 Q- @4 b3 [! d
  11381.       ((= ecolor 1)# C& |5 _, M+ v2 A9 @
  11382.         (set_tile "t_color" "1 red")
    * L1 L9 ^- Y" W& E1 E, F0 z' y
  11383.         (col_tile "show_image" 1 nil)% F. `* v$ A- p- V2 E
  11384.       )
    * h. H# ^9 @5 K4 S' v+ g+ F2 k
  11385.       ((= ecolor 2)8 E# \# M& @0 N  F. |# R. M
  11386.         (set_tile "t_color" "2 yellow")
    % \4 z! s3 K3 Z) S4 F! K* T- q
  11387.         (col_tile "show_image" 2 nil)
    7 Q# y4 e4 Z, V. H) a1 R
  11388.       ), q9 z" V) F3 P, Z/ U
  11389.       ((= ecolor 3)
    * @4 p% i; @9 y5 E7 ]9 Y
  11390.         (set_tile "t_color" "3 green")) D9 {+ q8 I; \$ f
  11391.         (col_tile "show_image" 3 nil)! @0 E# Y" [" Z5 J, i
  11392.       )
    - v+ ?2 R# o) S3 E2 o- x0 W( t
  11393.       ((= ecolor 4)
      z7 h! [# H) T  ^9 ]6 t  w1 V  p/ L
  11394.         (set_tile "t_color" "4 cyan")
    ( W' P6 F$ E6 {$ W8 D
  11395.         (col_tile "show_image" 4 nil)
    : w0 w6 I; v& d. R0 L
  11396.       )
    . d9 ]) L; H5 S2 k4 F+ {! o) R
  11397.       ((= ecolor 5)
    * h% J0 F) u0 l  g
  11398.         (set_tile "t_color" "5 blue")
    4 v) i: Y% u( F$ [+ j$ s
  11399.         (col_tile "show_image" 5 nil)
    : y9 U$ t( t) f8 ?  j# G5 P
  11400.       )
    * D3 r# f* t" q/ x  n1 f
  11401.       ((= ecolor 6)+ k6 E" J2 x3 ~+ R3 P
  11402.         (set_tile "t_color" "6 magenta")/ J5 A. Z! v9 B6 H4 _
  11403.         (col_tile "show_image" 6 nil)
    / M# t; o. F% n
  11404.       )" x& X6 B6 U5 Z) ]# h* K
  11405.       ((= ecolor 7)3 f3 i4 o# f: @6 d
  11406.         (set_tile "t_color" "7 white")
    9 I1 q5 w' ]* B# I) ]* b$ x
  11407.         (col_tile "show_image" 7 nil)& x4 \7 q$ E: f' T; l
  11408.       )  k9 W! \+ k8 P1 J+ J2 i2 w
  11409.       ;; If the color is "BYLAYER", then set the tile to
    0 x5 [( N" O$ p* g7 h# N
  11410.       ;; show it's set By layer, but also indicate the, P6 ~0 U4 X, i! G$ W
  11411.       ;; color of the layer - i.e. By layer (red), j$ ^, p" ~0 |+ L8 l
  11412.       ((= ecolor 256)) z. c0 e% A0 r6 {. O
  11413.         (set_tile "t_color" (bylayer_col))  R1 X3 t& q6 I( |9 d
  11414.         (col_tile "show_image" cn nil)
    5 K8 p9 @8 s9 m% J, f
  11415.       )
    , b+ e0 C- I2 F# d  z2 U: _" {
  11416.       (T6 ~4 d) C  {  P/ F3 k6 c
  11417.         (set_tile "t_color" (itoa ecolor))9 U$ }  k& E$ E7 Q3 W; `
  11418.         (col_tile "show_image" ecolor nil)
    . K0 d3 }5 Z' o3 s
  11419.       )% }9 O" w: U3 a5 c2 v1 ]" O- N, ]2 K
  11420.     )
    1 `& ^2 X; b' W5 |# ~* V" F# g
  11421.   )2 u6 G* E1 A7 X: N1 P: C
  11422.   ;;1 J$ i& R# }  E5 Z
  11423.   ;;  Function to put up the standard color dialogue.
    " I8 S+ w3 B8 B# ~3 q- R: h4 T
  11424.   ;;
    + A2 P/ K' v% l
  11425.   (defun getcolor(/ col_def lay_clr temp_color)
    * T+ p2 @" Q/ \* I" B1 J* ~4 e1 N
  11426.     ;; col_def is the default color used when rq_color is called.  If ecolor
    ; w% J/ o+ _# j) Z6 ?0 l
  11427.     ;; is nil (varies) then set it to 1, else use the value of ecolor.
    ( t. D" l7 K8 q" z
  11428.     (if ecolor
    8 j: S3 t6 Z! w- @+ I! L
  11429.       (setq col_def ecolor)
    " s& s3 G6 v9 u
  11430.       (setq col_def 1)
    9 N: d* G: f. P, D) M
  11431.     )+ J+ V! L, V. l* @* w! ?
  11432. 6 p% d- D% K, u$ t1 U0 E8 Z& I4 d
  11433.     ;; If we're working with a single layer, get its color0 b$ ]6 Z) T( a  F; U5 z% A0 R; Z1 ~9 p
  11434.     ;; for use in the color swatch if the user selects color BYLAYER.
    ! L! `" R3 o) @  c
  11435.     (if (/= elayer ;|MSG0|;"Varies")
    5 X, T% r+ K4 [
  11436.       (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))8 a. @5 }+ Q1 ^% }0 x% c6 X6 D
  11437.       (setq lay_clr 0)
    * ^. g; V0 K& w8 b& O
  11438.     )
    $ `3 @0 v; B: s( {* L6 m9 W/ `
  11439.     (if (numberp (setq temp_color (acad_colordlg col_def T lay_clr)))2 H( }: W! ~! y' q( ~/ p
  11440.       (progn
    + ?2 o9 }  A5 H4 E0 x( b: r
  11441.         (setq ecolor temp_color); z- `8 ?+ s5 G+ R( f
  11442.         (set_col_tile)
    : t- e5 @* w% N1 L4 I: Q
  11443.         ecolor
      v* l8 X& n- r, j. x3 H
  11444.       )7 s8 p  H9 V6 c& a/ M$ F
  11445.       ecolor
    * R2 \% n1 A$ N2 ?* U5 b7 B1 }) O3 I
  11446.     )# O' X  I+ s3 S
  11447.   )) W3 G1 E$ ?! ]: G" [, o
  11448.   ;;3 _3 R* r3 `1 w
  11449.   ;; This function pops a dialogue box consisting of a list box, image tile,% P. F8 j' `- p
  11450.   ;; and edit box to allow the user to select or type a linetype.  It returns
    7 \1 t/ I" d& q9 D
  11451.   ;; the linetype selected.7 u  K' [9 {" ?
  11452.   ;;
    , u* @  a0 @8 e) S7 m9 D+ f1 h3 y
  11453.   (defun getltype (/ old-idx ltname)
    4 |3 t& y3 _: P7 o
  11454.     ;; Initialize a dialogue from dialogue file8 ~) ~$ @' N3 `" u* c7 j: w
  11455.     (if (not (new_dialog "setltype" dcl_id)) (exit))$ y5 h" P& `, B4 m8 M5 b  ^
  11456.     (start_list "list_lt")' P* |7 t/ |" H+ e! J
  11457.     (mapcar 'add_list ltnmlst)         ; initialize list box
    1 W$ H8 l/ L3 r8 h* `
  11458.     (end_list)
    % f* x5 l( E3 k4 X& k5 B8 K
  11459.     (setq old-idx lt-idx)+ f1 j5 k( X. B# Z
  11460.     ;; Show initial ltype in image tile, list box, and edit box! ?8 o* }$ l( l. ^, z6 |6 d3 p0 k
  11461.     (if (/= lt-idx nil)
    * K6 C2 T9 A& U3 g- q' p1 P# P5 p5 W
  11462.         (ltlist_act (itoa lt-idx))8 O! A! E) m5 j' ]0 k
  11463.         (progn0 z- _' L' `. T7 }
  11464.          (set_tile "edit_lt" "")7 H' f9 S0 Y/ _" d
  11465.          (col_tile "show_image" 0 nil)
    8 E/ Q  R) K" ~$ x2 K, d! ]) s/ m
  11466.         );progn else% f8 ~* R2 }" e2 w$ v2 w: C
  11467.     );if, y4 H1 T7 \5 y+ t9 X- Q4 r" N9 f
  11468.     (action_tile "list_lt" "(ltlist_act $value)")
    * x* @( X$ v+ y9 d
  11469.     (action_tile "edit_lt" "(ltedit_act)")
    - [. E$ `1 y' D
  11470.     (action_tile "accept" "(test-ok)")2 ], {" |- R' \' Q  i
  11471.     (action_tile "cancel" "(reset-lt)")4 d& r/ W% U9 w  _& l9 Q& z# V
  11472.     (if (= (start_dialog) 1)           ; User pressed OK7 @* h2 l. l' z) V. Y
  11473.         (cond( p6 A4 h6 U# t' n  \; h
  11474.          ((or (= lt-idx nil)
    $ ~; m% ~! y& b) f9 {
  11475.               (= lt-idx (1- (length ltnmlst)))
      [, r: w4 G1 L. \3 G$ }
  11476.           );or
    + o: H3 e: t( A1 r: M. R3 A8 n
  11477.           (set_tile "t_ltype" "Varies")6 b* h0 ^& t% h6 a; ?9 O1 ]1 M
  11478.           ;|MSG0|;"Varies"
    " b7 @; Q2 I; J8 |# a; V
  11479.          )+ P) X* U- {/ F% ?
  11480.          ((= lt-idx 0)
    2 R: J. `1 d$ [
  11481.           (set_tile "t_ltype" (bylayer_lt))
    ( }  m* P, S0 L: R2 p0 ]7 a- {; m
  11482.            ;|MSG0|;"BYLAYER"  G9 P/ I: M  j. E3 q" z3 Z: e
  11483.          )
    ' a' I0 l7 w0 E! b3 G4 J5 R
  11484.          ((= lt-idx 1)
    . q  n8 ^3 i6 h+ f
  11485.            (set_tile "t_ltype" "BYBLOCK")
    5 d* P8 H$ v7 \: U3 o1 B: \1 c
  11486.            ;|MSG0|;"BYBLOCK"& T/ a& L! G7 |: S
  11487.          )
    . }! Y2 g, R2 Y# R- |( X
  11488.          (T
    , K! n( T3 V, N  l) Y& U- u1 E
  11489.            (set_tile "t_ltype" ltname)& |8 D3 @+ b7 K( b
  11490.            ltname0 |. V+ M4 J9 E+ S. S
  11491.          )3 ?2 K& ]0 Y9 t- W: Y! s# k
  11492.         );cond then- ]5 k3 u$ @6 a- R) U
  11493.         eltype
    ' r6 j7 C2 s$ U- \9 L) K/ o9 s5 K
  11494.     );if/ M1 R9 N3 S4 m4 [  x
  11495.   );defun
    $ G: j7 c6 t2 l6 [6 q6 t9 j0 v. \
  11496.   ;;
    ; J/ D5 r2 w7 F" {2 G
  11497.   ;; Edit box entries end up here
    4 t8 H% Y' K8 U
  11498.   ;;
    5 h- S6 R+ Z- g7 C  g
  11499.   (defun ltedit_act ( / flag)/ _/ T# o* g, k
  11500.     ;; If linetype name,is valid, then clear error string,% k0 a, ]1 T5 q
  11501.     ;; call ltlist_act function, and change focus to list box.9 _& h( H* N0 W( K6 U
  11502.     ;; Else print error message.
    ; O- E' F+ F0 }( ]
  11503.       w, q2 Z  ^! ]" Q0 U
  11504.     (setq ltvalue (xstrcase (get_tile "edit_lt")))
    5 t; [, A* ^) e5 f
  11505.     (if (or (= ltvalue ;|MSG0|;"BYLAYER")
    7 A* j& H% o! r3 h) ?2 u5 B
  11506.             (= ltvalue "BY LAYER")
    # b+ P4 {" f3 [$ |# z' @
  11507.         )8 n' s+ z8 v- [  l6 {
  11508.         (setq ltvalue "BYLAYER")
    " P0 U; ^2 m1 @! d' M6 [
  11509.     )
    1 c' c2 O5 z% a# ?$ z8 v
  11510.     (if (or (= ltvalue ;|MSG0|;"BYBLOCK")
    / M$ |8 H; D( [8 p, k* h! P6 ]
  11511.             (= ltvalue "BY BLOCK")
    ( h, I# [% P: w3 l* W5 V+ p, b
  11512.         )1 Z6 q( H  X% i: D
  11513.         (setq ltvalue "BYBLOCK")
    . w  M; `+ ?0 `* r9 ~
  11514.     )# y; b; F; j( C* @; h# J# ?
  11515.     (if (setq lt-idx (getindex ltvalue ltnmlst))
    4 \( }# ^: R9 v5 b9 ^4 X, U: G# R
  11516.         (progn% T- B- x  u0 l' T% X  }2 `; _
  11517.          (set_tile "error" "")
    1 ^6 E! z/ C% f) q4 f/ O! i. X2 l8 R
  11518.          (ltlist_act (itoa lt-idx))2 L) r) Y5 C9 ?  n2 e: |
  11519.          ;(mode_tile "list_lt" 2)
    4 x( z8 @& |5 G& I
  11520.         );progn then
    0 d3 A/ r) t1 |3 f
  11521.         (progn/ D2 g4 U# A7 U( b7 g* A
  11522.          (if (/= ltvalue "")
    # F, j/ R3 N0 S- J/ `
  11523.              (progn! A% \0 c9 V8 i
  11524.                (set_tile "error" "Invalid linetype.")4 Q* U6 A5 ]* f. M
  11525.                (setq flag T)+ J( S  O2 H8 p( ?- R! B
  11526.              );progn
    $ `, [# p! k: B  x5 X
  11527.          )
    ( v* \7 z3 c6 r( }! o. `
  11528.          (setq lt-idx old-idx)
    . ~7 f1 T- o+ ?. C' }5 T; N
  11529.         );progn else
    5 n& Y, h( ^7 [+ {; o: @$ w
  11530.     );if0 a* r5 h- N( M" I! \
  11531.     (if (and (not flag) ;added so a return will take you out of the dialog.7 B+ x: S- [  B. k- z
  11532.              (= $reason 1)
    2 `" B; Y9 u9 s6 k) j3 s, B5 M& f
  11533.         );and) N$ U0 q- M2 _1 [
  11534.         (done_dialog 1) 1 `$ J" y  G" A! x, z4 f$ E
  11535.     );if
    ! H/ w3 ~5 P! V  ?1 L2 g* X1 l
  11536.   );defun ltedit_act2 d5 _" ]  C9 @
  11537.   ;;
    $ j8 e2 ?. p5 h; Z; J3 @" n
  11538.   ;; List selections end up here
    ( l, b3 T/ ]0 B. O
  11539.   ;;. q% W/ u& g; u
  11540.   (defun ltlist_act (index / dashdata)
    * J9 M7 r. G/ u- L0 M- ]+ B# \! m6 Y
  11541.     ;; Update the list box, edit box, and color tile4 L" W4 m* U0 h* [
  11542.     (set_tile "error" "")" Y+ L9 z' p) F/ |4 t
  11543.     (setq lt-idx (atoi index))
    6 q: ^4 C4 c( H6 Z4 j( U
  11544.     (setq ltname (nth lt-idx ltnmlst))
    9 k+ `  j9 K! z4 `: r
  11545.     (setq dashdata (nth lt-idx mdashlist))( D1 u* r( ~$ t5 C; |
  11546.     (col_tile "show_image" 0 dashdata)
    7 O9 a$ t2 F2 k/ p7 ~/ @! T2 j1 h
  11547.     (set_tile "list_lt" (itoa lt-idx))
    $ j& Y! F3 S8 z% \# G) e
  11548.     (set_tile "edit_lt" ltname)
    " x) b+ H% u3 Z/ i; n3 M" y
  11549.   ), c2 a8 g: F; i# m* ?$ i  A, ]: r
  11550.   ;;
    ' ?0 l2 i$ F+ l
  11551.   ;; Reset to original linetype when cancel it selected- t0 g3 k2 P3 f) X6 Z2 f
  11552.   ;;+ k/ M: x6 T) K# g/ t: O
  11553.   (defun reset-lt ()1 o2 A) F8 v" }/ n
  11554.     (setq lt-idx old-idx)9 K; j2 j) R" U* E
  11555.     (done_dialog 0)! h& d( c; y9 R& g2 l+ I
  11556.   )
    + Q) V! r* F2 m( P; r: ^! r
  11557.   ;;1 ], X- H* t' M" o2 d7 M
  11558.   ;; This function pops a dialogue box consisting of a list box and edit box to2 s  S- |2 e) v) p# i1 J
  11559.   ;; allow the user to select or type a layer name.  It returns the layer name7 V) x. W0 S* A: D1 l! H
  11560.   ;; selected.  It also the status (On, Off, Frozen, etc.) of all layer in the
    9 x0 b3 t% j5 g) g
  11561.   ;; drawing.
    5 x5 r4 e" E& k6 U' L( Y
  11562.   ;;3 Q9 g: B+ ~8 Z: o3 h+ |* S' w
  11563.   (defun getlayer (/ old-idx layname on off frozth linetype colname)
    " m5 W3 j, W6 q5 I! S' ~/ s3 `
  11564.     ;; Create layer list the first time the layer9 g! N- d3 ?. E* b
  11565.     ;; dialogue is called.
    . ?9 s+ O% X% E) y
  11566.     (if (not lay-idx)
    5 l8 o8 i2 h  L  K
  11567.         (progn
    ; H) X( x2 N5 Z% f+ e/ j
  11568.          (makelaylists)                     ; layer list - laynmlst
    ; D7 E2 ]2 r1 u# }3 c! s2 S
  11569.          ;rk9 G. Z6 _: s/ X; f9 ?; x# @
  11570.          (setq lay-idx (getindex elayer laynmlst))5 k. c  a+ R; l: Z, g6 o& x' s- v2 M
  11571.         );progn$ S5 X- K, O+ w/ F5 [! \
  11572.     );if! j3 ]! o7 |# S; Z$ C) P

  11573. # F( C+ x% y) }( c1 R
  11574.     ;; Load a dialogue from dialogue file
    4 c& b  }' g* ^1 [- p/ S5 P
  11575.     (if (not (new_dialog "setlayer" dcl_id)) (exit))8 @9 Q9 E: j! Q) Y0 j7 }1 x9 C
  11576.     (start_list "list_lay")
    ; H+ _1 k$ Q5 V
  11577.     (mapcar 'add_list longlist)        ; initialize list box4 ~) B3 R3 I* K- L6 ?& H. x
  11578.     (end_list)
    $ |4 Y1 P, ^- R- W9 P5 Y0 U
  11579.     ;; Display current layer, show initial layer name in edit) B" x; t$ e) |: J
  11580.     ;; box, and highlight list box.
    - ?8 S; y9 g) A, @  q
  11581.     (setq old-idx lay-idx)% m- p% i- [3 Y
  11582.     (if (/= lay-idx nil) (laylist_act (itoa lay-idx)))& w6 [4 d" Y% g, v8 @1 a& X" c
  11583.     (set_tile "cur_layer" (getvar "clayer"))
    # d  V3 }; u7 e
  11584.     (action_tile "list_lay" "(laylist_act $value)")
    0 _/ k+ X0 d& D0 z/ r
  11585.     (action_tile "edit_lay" "(layedit_act)")
    . S- A, X1 k* ?
  11586.     (action_tile "accept" "(test-ok)")/ M2 p& T, `. p% `3 d: ^
  11587.     (action_tile "cancel" "(reset-lay)")
    4 }  T, z: P& w2 h7 {" R: D
  11588.     (if (= (start_dialog) 1)           ; User pressed OK+ _4 W6 a- ^5 S
  11589.        (progn
    $ x4 y  j6 d) d! S4 D/ a6 F
  11590.          (if (or (= lay-idx nil)
      x) j& j$ z  v! ~3 L+ m# i! v
  11591.                  (= lay-idx (1- (length laynmlst))); b: x1 Q1 a: N- A  r
  11592.              );or
    % u  R# m7 k/ z+ ^
  11593.              (progn4 l- ~- c% O! p$ U" d
  11594.               (setq lay-idx nil)  7 J! S0 c2 U/ D# R* E
  11595.               (setq layname ;|MSG0|;"VARIES")2 m5 A0 ^% o( J! N4 A
  11596.               (set_tile "t_layer" "Varies")+ a* E; K( |+ L" G* \, r/ Y3 g
  11597.               (setq layname "")
    & |6 m+ {* Z8 Z$ S% Z( C3 F7 M$ o
  11598.              );progn
    ; c. K9 b$ i9 X6 _2 A) ?
  11599.              (set_tile "t_layer" layname)
    . [' M: w  L5 M
  11600.          );if% Q" m, \+ J! O" I) P
  11601.          ; If layer or ltype equals bylayer reset their tiles  o) J# E. u9 \  X6 ~, O
  11602.          (if (= lt-idx 0)
    % H9 [. T$ ?' Q. K
  11603.              (set_tile "t_ltype" (bylayer_lt))
    ' Y% E; D' X3 h9 w, V
  11604.          );if/ n& H+ U8 c/ N
  11605.          (if (= ecolor 256)
    4 T: i! J7 p. j% K1 X) _
  11606.              (progn+ a3 q4 A& b; @* I6 u0 Z
  11607.               (set_tile "t_color" (bylayer_col)). x+ H# q5 b) @8 N/ O
  11608.               (col_tile "show_image" cn nil)9 {/ R. P+ m8 m/ B+ G6 |2 F8 Q
  11609.              )
    . n1 p4 P! |3 s% K
  11610.          );if/ [9 Z- Y# \2 U/ |4 J8 f* P* [; p; E
  11611.          layname) ~$ F% S. U5 p6 r* g) L3 Y
  11612.        );progn5 D, _* X2 m) b8 [( A
  11613.        elayer
    ( r% C" M9 c5 n( p. Q- j
  11614.     );if
    ) o- C: W3 Y' z% F
  11615.   )" X; G* p1 @2 ^7 n6 P; T$ e- A
  11616.   ;;3 S4 e" q9 b9 \& Y9 A7 ~9 [
  11617.   ;; Edit box selections end up here
    5 i! C4 K% k/ a+ s
  11618.   ;;
    1 e8 l& N$ ?$ r6 M4 g& q7 F* n
  11619.   (defun layedit_act()5 ?9 @3 f: M& R/ T$ _* R6 P, y6 ^
  11620.     ;; Convert layer entry to upper case.  If layer name is: u9 Z( z' a) c
  11621.     ;; valid, clear error string, call (laylist_act) function,
    7 _/ b7 |1 }2 ^! o- y6 E1 D7 W
  11622.     ;; and change focus to list box.  Else print error message.6 F1 i0 S5 x9 Q9 i. ^3 z$ r5 V" n
  11623.     (setq layvalue (xstrcase (get_tile "edit_lay")))
    ' z1 d- S, A% P5 H: B
  11624.     (if (setq lay-idx (getindex layvalue laynmlst))
    ' C, j) W( _$ I6 c4 \# C
  11625.         (progn+ \* W9 [: U5 ~* Y9 I6 t) q" o
  11626.          (set_tile "error" "")  F8 l) r+ s9 o' i% I2 m8 g* H
  11627.          (laylist_act (itoa lay-idx))
      K) |! C  D& @
  11628.         )
    % t9 L) R; c: T0 Q8 I# x
  11629.         (progn8 u9 O2 R& U  p: [) f) j
  11630.          (set_tile "error" "Invalid layer name.")0 V+ _, e- W$ Y, t! J
  11631.          (mode_tile "edit_lay" 2)
    2 ^8 g' ?: l, k/ @
  11632.          (setq lay-idx old-idx)
    4 |: _8 ]$ S& Q7 B! s; ^5 c2 K# B
  11633.         )5 ]- g7 X: m# H0 B, ^' w; w" f" f. p
  11634.     );if8 j. f* o# r# @9 H
  11635.   );defun. @2 W, K/ K0 x9 o+ ^6 _7 R9 p
  11636.   ;;
    $ |0 m' y6 a. ~
  11637.   ;; List entry selections end up here* I" V' j2 n( e! z* S
  11638.   ;;
    4 F5 \( ?) y( \3 }% _  |$ N1 h% ], J. g
  11639.   (defun laylist_act (index / layinfo color dashdata)
    ! [, f7 [& |% h8 a: Z# z3 H; h
  11640.     ;; Update the list box, edit box, and color tile
    # X+ n+ l* s9 G7 e5 c5 E
  11641.     (set_tile "error" "")
    2 p4 K3 {2 `$ t0 Y4 t; S# _
  11642.     (setq lay-idx (atoi index))
    + {3 Z+ M% S. Z) _  S& U! K
  11643.     (if (not (equal lay-idx (1- (length laynmlst)))), u6 d' e4 i( z$ @; S
  11644.         (progn
      p0 L$ w; @3 l; o
  11645.          (setq layname (nth lay-idx laynmlst))) @+ [" q7 h' `+ ]" y
  11646.          (setq layinfo (tblsearch "layer" layname))
    4 a/ y$ G& t/ f" w  o9 g
  11647.          (setq color (cdr (assoc 62 layinfo)))
    7 E+ X( O( P( J& u- W
  11648.          (setq color (abs color)); A  c- p2 N0 i3 `* a0 b  C
  11649.          (setq colname (colorname color))
    ! J$ y( C0 ~" a# u
  11650.          (set_tile "list_lay" (itoa lay-idx))
    2 @7 I5 x& q8 s2 u/ h+ B: n7 o0 n/ t. K
  11651.          (set_tile "edit_lay" layname)* s. i& _! j  X
  11652.          ;(mode_tile "list_lay" 2)
    ) U0 r2 ?3 o% `& m6 }
  11653.         );progn then 1 H( ~! c9 f' z. h; d& E# ^% }
  11654.         (set_tile "edit_lay" "")
    5 h* i! P$ S+ u4 x1 i
  11655.     );if
    : e# o0 V0 V3 P6 L9 q% R7 K% l: C. z
  11656.   );defun laylist_act  j$ T0 M: m8 R1 W+ m
  11657.   ;;6 q( E% z' m# `% p3 ]# f6 b
  11658.   ;; Reset to original layer when cancel is selected  t0 v9 c& j0 X  [& c
  11659.   ;;
    , V2 a$ E! F# b& u
  11660.   (defun reset-lay ()+ Q, ]4 l0 {2 t" `2 S- \
  11661.     (setq lay-idx old-idx)* {; l5 J+ z2 G0 |" o" i5 g
  11662.     (done_dialog 0)
    + \, O! m' G* X6 q, P7 v, n! ?
  11663.   )3 m0 C8 a7 d, j1 X
  11664. ( l) Y( J9 H$ l( t+ O& r
  11665.   ;; Checks validity of linetype scale from edit box.  It checks to& y! Z9 ~. S" ^, {" p( e
  11666.   ;; see if the value equals "Varies"./ a- k8 k; n3 _7 U

  11667. 4 S, O7 l! A, i4 P/ S) N  [7 t
  11668.   (defun getscale (value / rval)& d( `& L2 z* W: R% n
  11669.     (setq value (strcase value)3 y3 I' G1 |: ~4 b
  11670.            rval (distof value)2 ^( n; ]8 K" t
  11671.     );setq! s/ x, L  j0 n6 s) m: T
  11672.     (if (or (= value "")  U7 j% _( ]. r
  11673.             (> rval 0.0)
    & ~# l8 R# L3 C( X7 e$ s
  11674.         ); G: E( V; X6 b/ r9 q3 U
  11675.         (progn2 J* v2 a, j4 K7 A' R0 }/ Q
  11676.           (set_tile "error" "")
    ! k6 d  g6 ?) X1 e( l" k
  11677.           (if (= value "")
    2 f: W. L! u4 f$ ]3 N
  11678.               (progn
    9 [& `- Z# {) o0 \/ B" @0 f
  11679.                (set_tile "eb_ltscale" "")& ]- ^5 A7 o3 ~/ i) ?9 F2 [
  11680.                (setq eltscale nil)- @3 [4 W6 I% A( B8 ^
  11681.               );progn then
    % B, W& U  |7 s
  11682.               (progn3 s: H( Y- s7 j: ~! }0 f) d
  11683.                (setq eltscale (distof value))( F% z8 W2 a# k9 f/ g( D
  11684.                (set_tile "eb_ltscale" (ai_rtos eltscale))
    8 d" {5 m1 h& H$ B
  11685.                eltscale
    # V3 x7 L: t) w5 g5 m
  11686.               );progn else
    3 Q, g: U# \( u0 L5 K: W
  11687.           );if
    8 p4 Y; ~( ]8 n+ \. D, n. ^( Y
  11688.         );progn* T( L; T9 N% l) k* \. v& ]
  11689.         (progn
    7 ?* h6 B; l/ Q% J3 J5 O7 p) @
  11690.          (set_tile "error" "Invalid ltscale.")
    * r% ?: @- r7 }+ U+ N& W4 \
  11691.          nil: g; e* T- N1 M$ ]
  11692.         );progn else2 T( x1 J' G6 B
  11693.     );if8 k4 u& i' \7 i6 y  G
  11694.   );defun
    / f: F: {" n# y9 X# m0 f2 o
  11695.   ;;
    / j! L+ {  ~3 L! d0 e
  11696.   ;; Checks validity of thickness from edit box. Since (atof) returns 0 when a
    5 }. m& R2 i+ `" z! r: d' y
  11697.   ;; string can't be converted to a real, this routine checks if the first" d0 h7 q4 s. Y6 B5 V. R% _) y
  11698.   ;; character is "0".  It also checks to see if the value equals "Varies".0 S4 ^9 Q* ~4 V$ C
  11699.   ;;: @5 @: @, e1 P
  11700.   (defun getthickness (value)
    / z$ T; G1 _) O8 E: P- _
  11701.     (setq value (strcase value))# v2 d+ D0 j, @1 I
  11702.     (if (or (= value "")
    8 g+ y; i, I( y6 n7 |& `+ _! G  `
  11703.             (distof value). m/ p4 ~' b5 R2 k- Q8 b( {
  11704.         );or
    + @0 {9 K' D  V4 P& T/ b& ~/ [+ `
  11705.         (progn
    5 V* M" `7 t( P# c; J% I
  11706.          (set_tile "error" "")' j5 P! n/ S; }6 H1 S
  11707.          (if (= value "")" |* Z4 h" G6 Q; Y
  11708.              (progn: M# B9 c$ B* P; q; y. H6 @0 q
  11709.               (set_tile "eb_thickness" "")
    ( {6 F" Y' t! V. o* g' j+ O
  11710.               (setq ethickness nil)' Y) }1 x. b( o9 M
  11711.              );progn2 h! T" M7 {8 p" ~8 x/ Z1 w
  11712.              (progn" |' T8 P1 O. {, L2 o* R3 E8 M) }
  11713.               (setq ethickness (distof value))
    0 y& _; x/ A7 V5 i1 x
  11714.               (set_tile "eb_thickness" (ai_rtos ethickness))! U. P7 Z7 _# o$ b$ _
  11715.               ethickness
    4 ^% R0 h. b7 t9 |4 x- u5 \) r
  11716.              );progn
    5 J! Q# q7 f4 l& O" Z% C
  11717.          );if
    ' W  i7 L* G" ?  y+ U! i; j8 g
  11718.         );progn  k2 @" @  v) Y- ^9 H) Q1 M* ~" `; a
  11719.         (progn
    . `# J  r% Y9 _) w& ~' ~" }
  11720.           (set_tile "error" "Invalid thickness.")" ~- L4 U8 y  w$ @
  11721.           nil- ?% d4 s" @8 a% j% Y. ]
  11722.         );progn
    . E5 U3 k/ n" O; m
  11723.     );if! I/ W; n: J+ |1 a" T
  11724.   );defun
    8 ]( w6 i& C1 q6 _
  11725.   ;;2 q6 X( [3 X, t) e  I0 F
  11726.   ;; Checks validity of polyline elevation from edit box.
    ! U1 t$ ?' }7 `/ W' V7 g* K. b' X( S- \
  11727.   ;;3 A$ @/ D1 i7 j: w" r2 P9 C
  11728.   (defun getelevation (value)
    " D; A5 e. D% L$ N" |# G, f' d' V+ F
  11729.     (setq value (strcase value))
    8 \7 u0 v0 O  {4 i% ]
  11730.     (if (or (= value "")
    ! d  U2 l9 ~+ J$ f" C; Y9 p
  11731.             (distof value)7 X  i% L, c% o5 ]* @8 X# z5 j
  11732.         )
    4 }8 L4 V8 v6 n6 O
  11733.         (progn
    1 C) ^, A/ J& t8 y# n
  11734.          (set_tile "error" "")
    6 k# A! r+ ^7 s6 N5 ^/ l- v1 |
  11735.          (if (= value "")
    9 x% j0 A$ v6 {
  11736.              (progn
    9 Q9 x' _$ V: y9 ~3 p4 v
  11737.               (set_tile "poly_elev" "")9 S6 h4 m  z9 @& s9 X" L5 F3 C
  11738.               (setq eelevation nil)5 E/ g% S& c9 \: D
  11739.              );progn3 Z: G- h2 ]& r0 l1 x5 Y
  11740.              (progn  c4 i% h* P1 p/ }: n
  11741.               (setq eelevation (distof value))
    ; K5 i* F: y3 t8 c7 h
  11742.               (set_tile "poly_elev" (ai_rtos eelevation))
      P! F  B4 J. p6 l9 n
  11743.               eelevation
    * j  A/ V3 I* n& B
  11744.              );progn; c, D. J6 c+ ?
  11745.          );if/ j. V& ~+ p& g8 S' C( V
  11746.         );progn
    . Y3 F# ]" }/ x& a$ r6 d( ]
  11747.         (progn, j, s- M& @7 g, P& r. Y
  11748.          (set_tile "error" "Invalid elevation."), f; U6 O+ z1 x: u8 h& U2 d
  11749.          nil
    & P- c4 V8 h8 @! b  V
  11750.         );progn
    " N. k0 d% h8 ^; o/ c: A
  11751.     );if; t; F6 h2 ^+ H" ~* u8 p
  11752.   );defun& G, A6 ~2 `) X$ o4 D
  11753.   ;;
    6 r( d; ], p( M$ H, {
  11754.   ;; Checks validity of polyline width from edit box.
    * h. ^; u" C% A! Z7 \5 W, q( {
  11755.   ;;
    8 W3 w$ `+ {) @
  11756.   (defun getwidth (value / rval)
    " \6 n. @9 D5 k1 u) B# ^" T+ U
  11757.     (setq value (strcase value)
    1 U, p: g8 B0 D3 u: o
  11758.            rval (distof value); j" _9 B9 Z0 ]% w4 K
  11759.     )! A1 m/ E: L+ ~& w* i  ~
  11760.     (if (or (= value "")
      Y- M) }+ D9 \- T! A
  11761.             (>= rval 0.0)
    $ k' t+ |, \! K- n4 [/ N6 u4 q
  11762.         )
    ( t$ \4 H; |' l
  11763.         (progn
      U0 A& Q5 @9 Z4 g
  11764.          (set_tile "error" "")* w. a4 ]+ j8 O
  11765.          (if (= value "")
    7 i2 _) D& U" C
  11766.              (progn, G2 h* V* j4 p3 }+ X
  11767.               (set_tile "poly_wid" "")
    / e: C! y. d% K( L, \1 j( X* y
  11768.               (setq ewidth nil)5 {* J3 N; T. y1 N9 f$ ^
  11769.              );progn0 z( l4 k% A. r( X: f7 ^! o
  11770.              (progn
    / P. q6 L+ {) ]  `" [  a" f8 T  e1 W
  11771.               (setq ewidth (distof value))
    0 v1 A! B' ?3 [$ t, J# @# i
  11772.               (set_tile "poly_wid" (ai_rtos ewidth))
    0 b5 H2 N  ^; K* t* `+ w9 }
  11773.               ;width* v4 U% D) x1 a' Y& z0 L
  11774.              );progn) t# ^: K* y) O  U6 f' i: G8 x
  11775.          );if
    ) K$ P- b: O4 J6 T
  11776.         );progn4 c8 s% }, I( r/ O# D
  11777.         (progn2 ^; L( e' t5 Q; D3 a- K3 [: m1 R
  11778.          (set_tile "error" "Invalid width.")
      m5 D- z  l0 r* r4 X8 F& T( u
  11779.          ;(setq ewidth nil)* ]9 }/ _" j# f# d& R5 q, o
  11780.          nil
    6 f% j0 T- n- D. h! ~
  11781.         );progn
    8 X" s$ p+ m4 s! X% G
  11782.     );if' v. l% w2 S9 S% J
  11783.   );defun0 v- O# x! a- a& d* {
  11784.   ;;. U! X) {* N1 A6 ^. C# W
  11785.   ;; Checks validity of text height from edit box.
    / G9 V* U2 @+ b$ J
  11786.   ;;. u0 f9 G1 N: a6 l* Y) p2 Y9 K. k
  11787.   (defun getheight (value / rval)
    % h/ B# q; _( l: ?8 l7 r
  11788.     (setq value (strcase value)1 I9 B8 b4 }1 h# M. M* O4 G
  11789.            rval (distof value)  F  H: _$ C" _7 O/ a& d9 q4 P
  11790.     )
    - S7 ?* u& p9 X$ Z2 n5 d+ [/ T1 L
  11791.     (if (or (= value "")
    $ z/ e4 d' w8 S$ Q+ y. Z
  11792.             (> rval 0.0)' a8 v6 Q4 q* ?: e+ z
  11793.         )$ H7 n1 x! p. B0 D( m. l  L5 m  }
  11794.         (progn
    ) ^. i1 \6 t- Z3 f4 \& L  r& i& P, U
  11795.          (set_tile "error" "")
    0 B" l  @9 Z  o. n% g
  11796.          (if (= value "")
    * K+ _2 B: p5 V5 ]* [7 ]3 [/ e
  11797.              (progn; O1 d5 w) n9 w' Z; [8 h- Z
  11798.               (set_tile "text_hgt" "")9 k, A# D% Y6 [0 D+ B
  11799.               (setq eheight nil)* P" E! f* Q: A* h
  11800.              );progn* D: G0 b2 s0 J" W1 r0 S& N
  11801.              (progn9 v: v6 q* O  U0 S
  11802.               (setq eheight (distof value))4 d0 ^+ o; o1 [9 g
  11803.               (set_tile "text_hgt" (ai_rtos eheight))
    . A) s. z1 R$ E+ J* G* i1 j
  11804.               eheight& E' \4 D7 u4 i: D6 l$ ]! c' ~2 c
  11805.              );progn3 X5 J/ w$ L% j
  11806.          );if- C5 r9 w; I* Z1 |+ F* d% L
  11807.         );progn
    ) Z" a1 g" X( G( {' W: T
  11808.         (progn) a* |' `( R7 ]! E& `4 F
  11809.          (set_tile "error" "Invalid height.")
    ! S  j, t1 N' y. H
  11810.          nil9 r  W  g# q$ F- B+ B% P
  11811.         );progn
      j! C% Q- A9 H# z
  11812.     );if
    5 W' v& D7 ?$ s5 Q+ ~+ Q. k7 C4 D
  11813.   );defun  Y) R& t1 l3 H* ~( i) K  j

  11814. & g6 S1 q+ c) h0 W1 u- _
  11815.   (defun getstyle (value lst / rval)
      n, S" D; H3 Y/ N9 d
  11816.     ;(setq value (strcase value))
    + C) {" y8 m% P) Y/ h) ~/ ?; }1 g
  11817.     (set_tile "error" "")
    1 ?; c: T' W) f( u
  11818.     (setq estyle (nth (atoi value) lst))
    . {. \4 N2 x8 R  R( A6 Q
  11819.     (if (equal estyle "")
    & c# S* T6 W0 z6 v) m: b. f; T: C1 A* N
  11820.         (setq estyle nil)# T6 H$ ^! I) o$ ]( K, N
  11821.     );if
    8 I" W# a; _* P; B$ e* ^
  11822. % M/ u! N, w% W  }5 e, R9 z4 T3 X
  11823.   );defun getstyle
    4 I- E" J1 k9 l! ~& l: t
  11824. 1 ~; I  v6 m! u
  11825.   ;;+ ?% J- l, U0 A
  11826.   ;; This function make a list called laynmlst which consists of all the layer
    6 h, s$ t$ c9 f' f4 h: @# F$ b3 a) s
  11827.   ;; names in the drawing.  It also creates a list called longlist which
    # c( t$ u* Z) L4 z/ u) J2 N2 x
  11828.   ;; consists of strings which contain the layer name, color, linetype, etc.9 T1 Z/ U% Z* Y( D/ s9 `
  11829.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the
    # Q- Z7 \* a; S  m. Q8 v# ]. A- D
  11830.   ;; same.
    + z! {2 w7 W0 @; z$ O. X
  11831.   ;;. M1 T" f2 L; B- I
  11832.   (defun makelaylists (/ layname onoff frozth color linetype lock vpf vpn ss cvpname
    0 V  F8 ?6 d+ A& p" M- X1 y8 [( t
  11833.                          xdlist vpldata sortlist name templist bit-700 w+ p: s! e  K, Y. e: y
  11834.                          layer_number
    . l9 ^" r: z5 q& b
  11835.                       )
    9 b$ `, c* f; U( f! |% [
  11836.     (if (= (setq tilemode (getvar "tilemode")) 0)
    7 h0 o8 n/ r- e7 M+ F& B
  11837.       (progn) o) a" N7 E2 s0 q
  11838.         (setq ss (ssget "_x" (list (cons 0 "VIEWPORT"). K; l0 d, [. S! N6 \* g
  11839.                                   (cons 69 (getvar "CVPORT"))
    ! v% R1 t7 M- S& c
  11840.                             ); V! q0 ]7 l4 c# e
  11841.                  )/ }! V; W% |, v
  11842.         )6 Z$ {) k: L( v& _8 ^. [& L
  11843.         (setq cvpname (ssname ss 0))  f: W8 V3 N# Z
  11844.         (setq xdlist (assoc -3 (entget cvpname '("acad"))))
    0 E5 m- ~" n) K0 U- O9 y
  11845.         (setq vpldata (cdadr xdlist))
    5 a( w6 z8 P) B/ h4 l5 r7 Z
  11846.       )8 N3 C5 m  P" n9 a
  11847.     )7 J5 v7 R: q2 s
  11848.     (setq sortlist nil)2 D3 q; W: n- Z+ B
  11849.     (setq templist (tblnext "LAYER" T))/ I, u% X2 I) T8 U
  11850.     (setq layer_number 1)! z4 t: b) g: W4 u" h
  11851.     (while templist
    2 b( [" d3 t# t+ T! H3 A
  11852.       (if (not (equal 16 (logand 16 (cdr (assoc 70 templist)))))8 }9 `; i6 R. w5 r7 w+ o
  11853.           (progn  ) _3 {  x- E. C" [
  11854.            (setq name (cdr (assoc 2 templist)))
    , g$ l9 h9 Q' I" O1 I6 Q( A
  11855.            (setq sortlist (cons name sortlist))% M& G1 H+ q* c
  11856.            ;; Not dead message...* H/ u0 `1 h3 |, S4 N
  11857.            (setq layer_number (1+ layer_number))
    7 {, f4 b% r& Q+ j& g
  11858.           );progn6 ], R$ H- @9 F. u1 l
  11859.       );if8 y) Q( r5 N3 a( l
  11860.       (setq templist (tblnext "LAYER"))) p2 O  h& |  i" l9 k
  11861.       (if (= (/ layer_number 50.0) (fix (/ layer_number 50.0))); v0 @- P3 G7 E) O
  11862.           (set_tile "error" (strcat "Collecting..." (itoa layer_number)))( O- C! n, O3 e9 e+ e
  11863.       );if
    2 j5 q* x; A' t
  11864.     )
    % D5 b1 p  M, y) m7 `& u
  11865.     (set_tile "error" "")! t, e) C, N- T& {( X! M; `1 s0 J
  11866.     (if (>= (getvar "maxsort") (length sortlist))
    . ]2 k/ n2 e2 {* {
  11867.       (progn
    ; Z. m3 k4 u1 ?; W: q$ Z
  11868.         (if (> layer_number 50)- T+ \6 P# U5 Y. M: o
  11869.           (set_tile "error" "Sorting...")
    & \0 x- X) K! K+ }9 e: K0 x
  11870.         )
    ; F0 Z! M2 o2 T
  11871.         (setq sortlist (acad_strlsort sortlist))) X! _% ?7 f5 q  @/ O
  11872.       )' T2 A$ Z5 ?8 q) ]7 j: p
  11873.       (setq sortlist (reverse sortlist))$ p1 Z% T. N& ]3 a
  11874.     ). v) s7 a9 D1 g5 R# h% F& e) l
  11875.     (set_tile "error" "")
    ) h. v: S  v. p
  11876.     (setq laynmlst sortlist)# e' g/ M% O5 z$ L
  11877.     ;rk # [& x4 j4 D! f) ]! g1 e' I
  11878.     (setq laynmlst (append laynmlst (list "")))     + ]& ]9 p0 p  _$ ~3 F
  11879. ; Q8 |+ n! ~" }; S' p1 ^
  11880.     (setq longlist nil)  |' U1 v% ~3 h
  11881.     (setq layname (car sortlist))
    , W2 j9 Q) v1 v) R
  11882.     (setq layer_number 1)
    # V: Y5 x8 I$ v2 z" f/ [
  11883.     (while layname
    # G; m% O7 k0 M" r0 h0 Y  y  t$ \
  11884.       (if (= (/ layer_number 50.0) , K# [/ J9 A1 K
  11885.              (fix (/ layer_number 50.0))- @% v0 d4 f3 K% x# ~, R& B/ ?
  11886.           )6 J; p, S" A$ L" ]' g* O
  11887.           (set_tile "error" (strcat "Analyzing..." (itoa layer_number)))
    8 m9 T+ L) p; [! G+ ]1 q8 g, Q- f4 ]
  11888.       );if0 W$ w4 R: F$ K4 ^: r. f
  11889.       (setq layer_number (1+ layer_number))
    : _3 T* X# ?- [4 N) \8 A! W  N* i
  11890.       (setq laylist (tblsearch "LAYER" layname))
    6 K& C$ I) ]4 B5 q* a
  11891.       (setq color (cdr (assoc 62 laylist))), o$ C7 U8 Y1 ~# s6 ?
  11892.       (if (minusp color)
    3 E- E* }$ Y# s6 q8 \
  11893.         (setq onoff ".")
    8 L% C$ K- y. }" m% U
  11894.         (setq onoff "On")' D9 u( c: n6 n& |  p: A+ ]
  11895.       ). M7 J; S, h2 k) {; B  Z( q
  11896.       (setq color (abs color))7 o3 Q: M% ]  D4 m3 K* l/ e
  11897.       (setq colname (colorname color))% P% t& x. z% L% V. x7 H+ }0 W. E
  11898.       (setq bit-70 (cdr (assoc 70 laylist)))
    , a4 V3 ]; i& N5 M
  11899.       (if (= (logand bit-70 1) 1)
    * D( O3 b  ^4 c: S) ]3 x
  11900.         (setq frozth "F" fchk laylist)2 I4 E5 T3 L. S$ Q. P! P* D
  11901.         (setq frozth ".")
    0 L" h9 m- w8 y0 U, d3 ]
  11902.       )
    - z0 O; {0 ^/ l& i9 n
  11903.       (if (= (logand bit-70 2) 2)
    1 ]$ p. p6 n1 I2 s
  11904.         (setq vpn "N")
    0 N4 C# Q* S7 y+ R8 l8 n
  11905.         (setq vpn ".")
    ( t8 E  t+ h% d% g
  11906.       )
    , X; S$ _# m: |2 p' H; }  w* J
  11907.       (if (= (logand bit-70 4) 4)
    # @* w; C* s5 x: p) x" e  M) E1 H
  11908.         (setq lock "L")
    ) C2 P/ K/ t& Z3 F% d+ r
  11909.         (setq lock ".")
    ' N) g! y) G; }! u% P+ u: M( d
  11910.       )  A; X" n. C# v0 c
  11911.       (setq linetype (cdr (assoc 6 laylist)))
    $ s0 @( K- {3 w$ [: D8 X
  11912.       (setq layname (substr layname 1 31))
    7 L: ]$ U5 t9 v# q5 b0 T- y
  11913.       (if (= tilemode 0)
    1 x+ D' `  A, S; {) g  W
  11914.         (progn
    3 ?0 l, Z2 G- `4 W  g
  11915.           (if (member (cons 1003 layname) vpldata)
    * j" ~* Z! w! F9 |
  11916.             (setq vpf "C")
    7 S) u+ F7 J7 f, c" s
  11917.             (setq vpf "."): I( c1 I# I4 n1 H' T, L
  11918.           )
    4 V$ w; P8 x0 j, Q. t+ Q# U1 g9 t
  11919.         )+ n8 U7 \) m# g$ I; {
  11920.         (setq vpf ".")
    5 G& o4 {( M: e6 `( U, I
  11921.       )
    ; j7 e, K1 F$ F! Q3 W! z! J8 U
  11922.       (setq ltabstr (strcat layname "\t"9 b2 K4 a. {3 K$ ~5 u3 E
  11923.                               onoff "\t"
    # |" q) x0 I8 ?$ y2 B1 C
  11924.                              frozth "\t") G& R! o+ w( {# `0 O
  11925.                                lock "\t": k, Z! e1 b0 y1 I3 n, q
  11926.                                 vpf "\t"5 k% ]7 u4 h% l$ X% ?
  11927.                                 vpn "\t"8 ^& B6 m4 ~' J9 B/ _1 K
  11928.                             colname "\t"
    . G% [, d+ e5 T$ K& \9 k
  11929.                            linetype
    " W% K: s6 c$ V% Q, z1 L
  11930.                     ). \; h  n8 T8 f2 j' R8 \
  11931.       )
    / h/ v2 H+ L: f* w& P; c: w) {
  11932.       (setq longlist (append longlist (list ltabstr)))& `' J6 H* A6 y* d) t: ^" C
  11933.       (setq sortlist (cdr sortlist))
    ( c5 t' \) V; ^, m
  11934.       (setq layname (car sortlist))( D: I, \' [- n" J2 A8 h
  11935.     );while) K. `6 {& Y4 Z0 K5 F6 A
  11936.     (setq longlist (append longlist (list "")))
    * f# ~( L: z: Z1 d3 m0 X
  11937.     (set_tile "error" "")5 H  |$ V" [& M7 E
  11938.   )& t9 A4 P, @7 n3 T, F
  11939.   ;;
      u1 k) }- j! f4 e
  11940.   ;; This function makes 2 lists - ltnmlst & mdashlist.  Ltnmlst is a list of- L, H5 S$ J- e; d" Q" j
  11941.   ;; linetype names read from the symbol table.  Mdashlist is list consisting
    : G( u' a3 O6 _3 t
  11942.   ;; of lists which define the linetype pattern - numbers that indicate dots,
    ( ?& `1 _4 o( ^$ t% m' T* n' u
  11943.   ;; dashes, and spaces taken from group code 49.  The list corresponds to the
    8 O8 f' f+ y1 l/ }( [% k, V9 g+ \& t
  11944.   ;; order of names in ltnmlst.$ Y" O. f6 P, O; T/ H- B0 z0 A
  11945.   ;;
    - [1 c( u9 ~( K) d, n
  11946.   (defun makeltlists (/ ltlist ltname)
    3 F: f4 z- R: z" F; C
  11947.     (setq mdashlist nil)  o7 W; ?$ }# {
  11948.     (setq ltlist (tblnext "LTYPE" T)): t. @# _1 `1 q6 C8 {4 U5 J! x
  11949.     (setq ltname (cdr (assoc 2 ltlist)))3 R' q1 S0 O7 x) ~; c, k
  11950.     (setq ltnmlst (list ltname))
    6 B/ a" X6 m( A" G
  11951.     (while (setq ltlist (tblnext "LTYPE"))
    1 c( D. q6 e5 o, F& u7 s9 t2 @% }7 r
  11952.      (if (not (equal 16 (logand 16 (cdr (assoc 70 ltlist)))))
      H/ W: N$ n3 f- M
  11953.          (progn 4 h' f# U3 O8 i. [
  11954.           (setq ltname (cdr (assoc 2 ltlist)))
    ) z/ h9 X1 B. Z0 s
  11955.           (setq ltnmlst (append ltnmlst (list ltname)))
      _9 R5 p6 T3 Z* Q/ D
  11956.          );progn7 L& B3 h3 _; W/ `* D& N) R  n
  11957.      );if   b  ?4 N6 L; g  [
  11958.     );while
    1 R' g' {; z  ?, S+ ~
  11959.     (setq ltnmlst (acad_strlsort ltnmlst))$ F  x! r: L# @8 Q1 g* H
  11960.     (setq ltnmlst (append ltnmlst (list "")));add by rk 8 d& ?0 ?  T% O* h2 W8 F, ^& f- j7 C. J
  11961.     (foreach ltname ltnmlst
    % Y, b) Y' y) ~+ Y& Y
  11962.       (setq ltlist (tblsearch "LTYPE" ltname))
    ; @0 J, `; @! B! U6 t% P
  11963.       (if (= ltname "CONTINUOUS")" b0 F  ~5 m8 L7 m
  11964.         (setq mdashlist (append mdashlist (list "CONT")))
    $ U; \/ O$ f& W  c; t
  11965.         (setq mdashlist' z& d. m% a1 g: Q3 C
  11966.             (append mdashlist (list (add-mdash ltlist)))* y( u8 b# P: C# [; @. y, B
  11967.         )
    $ ?3 Y1 t$ {2 d- Q! z" K; n
  11968.       )
    9 |$ F7 ~3 g  W& |8 V# C' r
  11969.     )
    ; k! r5 z4 m) }3 K/ }
  11970.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))9 E* M6 ~4 _; N. a7 E, k
  11971.     (setq mdashlist  (cons nil mdashlist))
    7 ^3 O4 b6 t7 X
  11972.     (setq ltnmlst (cons "BYLAYER" ltnmlst))
    + D6 l/ p7 `( ~
  11973.     (setq mdashlist  (cons nil mdashlist))6 E7 D- t, I$ V3 D* U7 J
  11974.   )4 i; a! s/ y8 U2 P6 t7 Q( l4 u9 Q
  11975.   ;;
    0 K0 W, }- K4 z; h1 e% m) n
  11976.   ;; Get all the group code 49 values for a linetype and put them in a list4 h- a- ?) w" W  x- D
  11977.   ;; (pen-up, pen-down info)
    7 X1 r9 t0 \$ c5 j+ B1 z5 a$ O
  11978.   ;;
    # \6 @* {, R; H9 ?8 s( E0 v1 x
  11979.   (defun add-mdash (ltlist1 / dashlist assoclist dashsize)( v4 g6 t% I8 [8 J# G3 s
  11980.     (setq dashlist nil)7 y0 a. R- Y% P1 j! ]& |
  11981.     (while (setq assoclist (car ltlist1))/ f) S3 _; M! X: P4 B- n8 I
  11982.       (if (= (car assoclist) 49)- k) V' W4 {$ w) J+ X6 j1 A! l1 a
  11983.         (progn0 `' B0 B$ P  h8 \7 L
  11984.           (setq dashsize (cdr assoclist))
    ) K5 g; B! B# n* L9 T$ Y3 x
  11985.           (setq dashlist (cons dashsize dashlist))
      G. T9 p$ R4 ~) j) X8 _
  11986.         )1 \: p  `0 ^+ O& A
  11987.       )' o8 X; e# B1 ~" _- A
  11988.       (setq ltlist1 (cdr ltlist1))% I# w, m8 F- P5 p' c/ P
  11989.     )
    , ?! o6 f: \! \6 a: g
  11990.     (setq dashlist (reverse dashlist))2 ]7 Q& \" {8 m0 Q
  11991.   )/ n& Q5 V6 _9 R9 r! C  r
  11992.   ;;# t7 h3 D9 j* @& Z& c
  11993.   ;; Color a tile, draw linetype, and draw a border around it9 Z2 j6 @  P  R. p0 ?" ]) ^% R
  11994.   ;;' i& {. j( L) _. Q4 d% [9 m9 C2 }0 Q
  11995.   (defun col_tile (tile color patlist / x y); d' L$ |0 X  I: j
  11996.     (setq x (dimx_tile tile))- T: A2 Q- M( ]. v$ ?
  11997.     (setq y (dimy_tile tile))0 i% v" s# w4 s
  11998.     (start_image tile)% H) L, D/ |) ]& d
  11999.     (fill_image 0 0 x y color)
    - n6 J$ \6 r6 [7 e9 r- e; E1 j2 \2 [
  12000.     (if (= color 7)5 i( e# A. w) n
  12001.       (progn+ q& [. `+ j+ N/ }" d7 M* Q) w% K
  12002.         (if patlist (drawpattern x (/ y 2) patlist 0))1 L2 u, K( r7 r7 M( h% o
  12003.         (tile_rect 0 0 x y 0)
    + G! ?! Z  Y+ d! [
  12004.       )
    ! }' q! W4 Z8 U2 B5 Y5 p
  12005.       (progn$ k1 e9 I4 m0 v. Z5 G- U/ _
  12006.         (if patlist (drawpattern x (/ y 2) patlist 7))
    . @/ a- C4 d& F0 U# E5 \
  12007.         (tile_rect 0 0 x y 7)5 r: q2 F' `- ^9 \/ [; f% W+ M
  12008.       )  j1 @8 l1 X6 [
  12009.     )) |% G0 I) l' d0 o5 {! S8 Y
  12010.     (end_image)' M1 X, i& x9 e% w
  12011.   )$ G0 T! u7 \5 Q- M* S) j  [) O
  12012.   ;;) T3 x+ t/ \/ B8 r7 L
  12013.   ;; Draw a border around a tile' C1 Y+ y; \# J! d0 M2 E  n, h/ Q
  12014.   ;;
    * a2 f2 p* F& o' D0 @& K* j
  12015.   (defun tile_rect (x1 y1 x2 y2 color)) P) V$ L# @5 f9 h
  12016.     (setq x2 (- x2 1))& g& K- R8 \: {0 L5 m
  12017.     (setq y2 (- y2 1))
    0 J. D$ ^9 o" J! l& l" [
  12018.     (vector_image x1 y1 x2 y1 color)
    7 j1 o- c, L$ f0 g: B$ y
  12019.     (vector_image x2 y1 x2 y2 color)1 `* Q& J) A1 a4 ]- ^# B+ x; u3 U
  12020.     (vector_image x2 y2 x1 y2 color)
    5 \) |0 l; `, V, V1 y: N$ X  N0 E9 Z% O
  12021.     (vector_image x1 y2 x1 y1 color)" V6 j1 n7 d# F( P: I2 F- _
  12022.   )
    ) a: ?: n# {5 \% h9 @2 V9 s/ v, V
  12023.   ;;& i* n9 Z) E8 G$ q! O1 ]8 _7 E1 c( Y2 }
  12024.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image8 R% S4 D. S7 F- P5 Y, c
  12025.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a
    6 m$ i4 N4 E2 |- q" Y/ l; Z
  12026.   ;; list of numbers that define the linetype, and color is the color of the" J  j5 n" f7 D8 x+ H
  12027.   ;; tile.9 q' r, Q$ A# T& Y6 V9 @* H7 R, O
  12028.   ;;2 d2 u- s$ h0 N3 w5 p5 s( S
  12029.   (defun drawpattern (boxlength y2 pattern color / x1 x2
    1 N% T* V) s( l% S9 n4 ~& I$ T: G
  12030.                       patlist dash)
    . n# H( X  k1 j) r  S
  12031.     (setq x1 0 x2 0)
    0 e/ f0 \% r+ \0 n
  12032.     (setq patlist pattern)2 l( |6 r( A$ d/ T; h, l- l7 i! |: L
  12033.     (setq fx 30)
    & H$ g, l/ v# \! C
  12034.     (if (= patlist "CONT")" E4 l$ ~! z  J! h
  12035.       (progn. f$ f# q6 l1 w2 |$ {
  12036.         (setq dash boxlength)
    + j) ^, j/ W6 t. M4 Q
  12037.         (vi)
    , x- U8 p* p# `6 U  L
  12038.         (setq x1 boxlength)
    6 L, D- d! X, s$ w( C! ^/ z
  12039.       )
    - f- ?9 E8 a$ x; ?+ h
  12040.       (foreach dash patlist
    . e- |: L4 h' J- c2 o
  12041.         (if (> (abs dash) 2.5)
    9 s' e, v7 B, g, O/ h# N" p
  12042.           (setq fx 2)0 O% Y: t" m! y5 a( @7 \+ F
  12043.         )
    0 b5 z; X7 M# ~
  12044.       )
    $ \9 i- ?; D% r. ]# G
  12045.     )
    ( M; q1 Q, Y: ^1 u  {) B
  12046.     (while (< x1 boxlength)& Q& L) [1 w$ z. I* H3 ?
  12047.       (if (setq dash (car patlist))' o% G: q" }5 X/ F: T; k
  12048.         (progn
    6 L- A' D& z( v) q
  12049.           (setq dash (fix (* fx dash)))* G; A6 F7 O( D7 r/ j6 P* N" M3 m
  12050.           (cond
    5 a/ W0 {1 n, z4 l3 K9 t
  12051.             ((= dash 0)
    " B, X' Z$ f0 g& E$ E% \' \
  12052.               (setq dash 1)4 W# m" E2 `0 G+ H
  12053.               (vi)6 P! s- V8 V, i3 o
  12054.             )
    ) U/ T/ x5 ~1 C. v4 W- k
  12055.             ((> dash 0)# g9 K( H$ h, I4 k/ P0 b
  12056.               (vi)+ n# v2 k" R# J& A
  12057.             )
    ) B# x: g! W4 {( F1 i
  12058.             (T
    % e$ w: `- ?0 Y# t7 o
  12059.               (if (< (abs dash) 2) (setq dash 2))7 b) }5 ]- E' F; x, h$ q/ z
  12060.               (setq x2 (+ x2 (abs dash)))
    & R- e( \1 I: K6 [1 j$ p
  12061.             ); ^+ Y. y4 ?- D8 W/ z
  12062.           )8 Q0 {, b+ N/ G. h
  12063.           (setq patlist (cdr patlist))
    + k/ L7 z- }# u0 T5 Q
  12064.           (setq x1 x2)4 l0 g8 F" g- r" L  {
  12065.         )
    3 Z" z  P* u7 r1 ?2 f9 x
  12066.         (setq patlist pattern). H5 W; `5 u+ z" n: F7 g
  12067.       )
    * U+ h1 C) h9 s2 t, }4 H
  12068.     )/ f# a' h5 R0 j7 j
  12069.   ). r) V& ?7 \+ L* V5 A
  12070.   ;;9 X" T  o% I* D5 v3 P
  12071.   ;; Draw a dash or dot in image tile
    # A: {9 G6 q' q  f$ N4 @1 c' ~: C
  12072.   ;;/ }; d, {& y; `
  12073.   (defun vi ()
    % F0 k) d/ k; ~( l
  12074.     (setq x2 (+ x2 dash))
    ' f$ V8 O7 ]) `* J9 b2 N+ G, l/ E
  12075.     (vector_image x1 y2 x2 y2 color)% S3 J2 Z" P+ e
  12076.   ); m+ ?' [8 U% ]: L$ s

  12077. 9 Y! I6 k# y7 u( V- _6 `
  12078.   ;; This function takes a selection and returns a list of the color,* s+ P; n1 W$ h0 O0 P5 ]
  12079.   ;; linetype, layer, linetype scale, and thickness properties that+ N- I& W1 A' b! ]' h
  12080.   ;; are common to every entities in the selection set - (color
    ; j$ I4 b2 b( n! `. K. X0 @% Z
  12081.   ;; linetype layer thickness).  If all entities do not share the same
    * b( F4 f. y  }" r. L. A9 P" ?9 [
  12082.   ;; property value it returns "Varies" in place of the property
    ) t4 v3 E$ h$ N
  12083.   ;; value.  i.e.  ("BYLAYER" "DASHED" "Varies" 0)
    . `- X  V/ w, p+ x1 U# ~
  12084.   ;; The last item in the return list is an integer flag for the( G0 ~9 i. D3 r# \' y3 x! l
  12085.   ;; homegenity of the selection-set object types.3 L$ b/ @# `6 J. m, @5 [* m
  12086.   ;;   1 = All polylines/ N4 _: m, h/ k* p2 Y
  12087.   ;;   2 = All text or mtext or attdef, or a combination of the three$ V" `- d$ ^9 E8 p
  12088.   ;;  -1 = Any other mix of objects- b% `4 E& Q& e: w
  12089. 6 r. q# K+ [. v, m  M4 s3 h* J
  12090.   (defun getprops (selset / sslen elist color ltype layer ltscale thickness
    1 `7 M% G4 \) y' `3 |: [# C$ }: e
  12091.                           width elevation height go ctr
    ) ]7 v6 k7 _+ p. Q1 F
  12092.                           eflag - {: |* v+ Q  X2 r" s
  12093.                           etype temp : L% g$ s. O3 C3 y
  12094.                           txt_ss     ;;;;rk 11:24 AM 1/30/97
    ' \$ V/ C4 V6 u- M: d  o' N
  12095.                           tmp / r( K. L( n8 O/ _- C
  12096.                           poly_ss   7 g4 ^/ k  B9 u$ S: F* e7 }" }
  12097.                           style
    3 b( l3 c5 b/ K, s& Q: ^7 m( F
  12098.                   )' H- E6 C8 r) x0 C7 X5 _

  12099. 3 q7 G' Q5 b; x) Z8 d* x
  12100. : v% ~% a# X& m* P( G8 F
  12101.     (setq     sslen (sslength selset). K' Z8 H* t, d  I
  12102.               elist (entget (ssname selset 0))
    - v0 K3 }" J' A
  12103.               etype (strcase (cdr (assoc 0 elist)))! g2 L, s# P7 C+ {
  12104.               color (cdr (assoc 62 elist))
    - e9 I/ n& `, q
  12105.               ltype (cdr (assoc 6 elist))
    8 N# ^* Q$ r# Q+ @- t% Z- I
  12106.               layer (cdr (assoc 8 elist))
    ' ~7 H: V7 Y$ A) g, }
  12107.           thickness (cdr (assoc 39 elist)); b" e: C' w  p# Q/ y
  12108.             ltscale (cdr (assoc 48 elist))
    8 B9 B" z) F6 S' [, v7 X! n* v
  12109.     );setq, @6 F' Y* B0 E( p5 @
  12110. " F$ e) k7 j  d' s+ B5 |8 T% l
  12111.     (if (not color)     (setq color 256))" f" M9 N  |/ g: ]* ?7 \
  12112.     (if (not ltype)     (setq ltype "BYLAYER"))
    5 I& t2 W( C5 J) f. \) y
  12113.     (if (not thickness) (setq thickness 0))$ m  I( e3 L2 z5 L
  12114.     (if (not ltscale)   (setq ltscale 1))
    & n  b5 G3 k9 g) q

  12115. 6 w/ e! k. H5 c# S# R0 J
  12116.     (if (not width)     (setq width ""))
    4 P/ N/ B% v9 `+ ]+ z2 _" b8 |
  12117.     (if (not elevation) (setq elevation ""))" O5 J+ s9 l: M  B/ o* x. N
  12118.     (if (not height)    (setq height ""))) w% c, W' A$ v
  12119. 3 I; P- L4 y" \: T* n/ k
  12120.     (setq      go T # V% a& v$ V' ]+ t% a
  12121.           chk-col T ! c, H5 f4 f4 x4 @% n+ j2 u4 S
  12122.            chk-lt T   N6 v+ w9 m' [; t0 B; G9 {/ M
  12123.           chk-lay T 3 n4 J: I  D" B
  12124.           chk-lts T % T0 v6 J% i% o, C: |, {3 M
  12125.            chk-th T
    6 w" f( k2 _& ]5 E
  12126.               ctr 0
    ) W, a  o8 R$ \+ c
  12127.     );setq; b5 T/ M0 ~; Z7 ^0 A
  12128. ) f* {0 c8 D; q" F
  12129.     ;; Page through the selection set.  When a property
    5 ^. x7 U6 U; [
  12130.     ;; does not match, stop checking for that property.
    - Q  r2 C& x( E
  12131.     ;; When the selection set is not homogenous, stop checking.% o" |4 J4 R5 p. t# ~  h, T
  12132.     ;; If all properties vary and the set is not a type 1' c2 ^- }# R* w
  12133.     ;; (polyline) or type 2 (attdef/text/mtext) set, stop paging.5 V# ~( v1 V; a5 Q+ ?; W

  12134. 7 k" G$ B. Y3 h/ \2 \9 ?- U& W0 h2 ^
  12135.     ;Lets set the eflag so we know if the selection set includes any . o% a* d' G- D4 [8 X; j6 W* F/ n
  12136.     ;combination of polylines, lwpolylines, text, mtext or attdefs.. {' a- o; T  i: r5 X" m& e

  12137. * L% |+ {* H' N+ E7 [
  12138.     ;watch out for 3dpolyline and 3dmeshes here! @rk 10:17 AM 1/30/97
    5 X& `+ D8 \" d  a+ @; P! ^( o3 j
  12139.     (setq eflag 0)
    ( M7 j4 _+ W* ?8 _. K# S
  12140.     (if (setq poly_ss : f( f$ h" [0 k( j# J1 ^5 z
  12141.               (ssget "P" (list '(0 . "*POLYLINE")
    ) M/ \  Z" S. X4 V
  12142.                                '(-4 . "<AND")
    5 n) r8 @1 {. X; x& A$ X3 P
  12143.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 8)  '(-4 . "NOT>")
    / I4 _6 P7 C- D5 j
  12144.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 16) '(-4 . "NOT>")" k% t* r; D! n( Y
  12145.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 64) '(-4 . "NOT>")7 x% @% U' P( w3 ?
  12146.                                '(-4 . "AND>")
    2 M# e1 t! i. [/ H, D
  12147.                          );list
    # L, J4 w( H, y- f5 g1 e3 C7 C5 [
  12148.               );ssget get 2d polylines (legacy and lw)
    8 S- q5 u8 ^: Z. \* H
  12149.         );setq  M9 h0 _4 \  J) |# d2 K" K
  12150.         (progn' ]2 d2 i+ w9 K
  12151.          (setq eflag (+ eflag 1))0 m+ Y2 \, i: Z: y  o, Z& Q
  12152.          
    8 f1 b. p- p3 y
  12153.          (setq tmp (entget (ssname poly_ss 0)));setq
    ( x1 u5 p. i1 b# T. G7 h% I6 H5 z3 c

  12154. 5 N+ ?# \$ T$ i6 N0 s; ]; T! |7 Q! v
  12155.          (if (equal "POLYLINE" (cdr (assoc 0 tmp)))3 c. t; j) F4 z& Z
  12156.              (setq elevation (last (cdr (assoc 10 tmp))))
    1 L# X; W- Y; m! l: |
  12157.              (setq elevation (cdr (assoc 38 tmp)))
    - [# v* U! d' B; M+ W4 ~8 ?
  12158.          );if
    8 _, y8 X; B5 L2 a3 T
  12159.          (if (not elevation)
    ) L8 U1 R$ F5 `: b
  12160.              (setq elevation 0.0);setq
    1 r9 c& }( H! D9 Y& w
  12161.          );if
    3 t9 j/ V, _8 b% m

  12162. # A. U( U5 u, V. ^$ l, H
  12163.          (setq tmp (ssget "P"
    ( d0 a4 x  X. M. f5 {
  12164.                           (list
    ' J% Q: C2 A2 ]+ ~' a! E
  12165.                              '(-4 . "<OR")
    6 L9 Y0 D* ~, R! @+ ^3 m3 Q+ G
  12166.                                '(-4 . "<AND")
    ( i; l: G6 q, X  Y( [
  12167.                                  '(0 . "LWPOLYLINE")
    : c' i5 H7 g& o4 T/ {
  12168.                                   (cons 38 elevation)
    # [1 D  M2 L) C# g6 F+ r
  12169.                                '(-4 . "AND>")$ v; k" e9 h; ^# x8 l( o( Z
  12170.                                '(-4 . "<AND")
    9 a4 ^6 d  P- R9 j
  12171.                                  '(0 . "POLYLINE")
    8 A2 j) p8 D2 S" \
  12172.                                  '(-4 . "*,*,=") 9 d- o/ H/ A' z( v
  12173.                                   (cons 10 (list 1.0 1.0 elevation))& s! w: s6 w4 d3 ]- e
  12174.                                '(-4 . "AND>")
    $ Q5 v4 S8 z8 O) n
  12175.                               '(-4 . "OR>")8 P( `6 m# B" {3 \0 S. K  B: k
  12176.                          );list
    # ]* b" U9 \) \* m; U+ @
  12177.                    );ssget
    $ y# }1 q9 I" n0 ?2 u) O
  12178.          );setq
    ' c& L0 E! y, J. q+ q, Q
  12179. 6 N' b# e2 s) e% c1 d+ l: s
  12180.          (if (and tmp ( K  `+ A9 Y% H8 z
  12181.                   (equal (sslength tmp) (sslength poly_ss))
    $ h% f. `5 T) Z. ~+ |
  12182.              );and9 ~( ~% k1 J1 T: J; p. d, }
  12183.              (setq elevation (ai_rtos elevation));setq
    4 i9 N; U$ }- L
  12184.              (setq elevation "")
    / f8 i5 m6 f! N& \; I% X  U
  12185.          );if
    " O, I2 X" P$ T# l) b8 d- E
  12186.           * e  }# P& _" N5 Y, h0 h+ u" q; S
  12187.          (setq width (pl_width_getter poly_ss));setq
    - t% ^; c( t* ?8 Y
  12188.          
    5 M) g% @/ ~  @2 ]
  12189.         );progn then 2d polylines and/or lwpolylines are in the HHHHHOUSE!8 m, \- j0 {4 S- _, z% }( ~' H
  12190.     );if5 r$ v. Q9 V% w! U" [' N% b
  12191.     (command "_.select" selset "")
    , f1 w) s& R0 `3 A; C3 y% \
  12192.      ; a2 B5 T5 P5 z
  12193.     (if (setq txt_ss - {# V9 x7 m$ i4 Y: n$ K
  12194.               (ssget "P" '((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT")
      H2 ?; J. h, @1 [' i3 D
  12195.                            (0 . "ATTDEF") (-4 . "OR>"))+ b8 K- l# N) X6 e
  12196.               )  9 `" L' {- a' k- B: r. V
  12197.         );setq8 P3 n6 ]! g) T: e* v4 @( ^
  12198.         (progn
    8 T* S) M* p6 ]
  12199.          (setq eflag (+ eflag 2))6 l8 f4 ?. J; h8 @( N) l* f
  12200.          (setq height (cdr (assoc 40 (entget (ssname txt_ss 0))))2 b; L  L3 @! `% m3 i% x& D
  12201.                   tmp (ssget "P" (list (cons 40 height)))
    : E) Q& ?) t9 _5 P
  12202.          );setq 3 T6 L  @. G' E  {2 I. n. b2 |
  12203.          (if (and tmp; x: U: y: V, d7 l7 t! T
  12204.                   (equal (sslength txt_ss) (sslength tmp))                    / E" l  Y3 a. C  V2 n
  12205.              );and
    # k, `6 [; R! X- S3 E! V, [3 I! E
  12206.              (setq height (ai_rtos height));setq  ;@rk need to translate from float 8 ?% P/ w) B. a  l8 b- [2 {
  12207.                                                    ;to string and back again easily
    3 g+ {# b; Z" G! T  F" |
  12208.              (setq height "");setq else the height varies 4 K& s& W% F% C
  12209.          );if/ g! k9 Y6 i. M0 G( o
  12210.          (command "_.select" txt_ss "") ! i. k' s% B( Z0 _. E% A
  12211.          (setq style (cdr (assoc 7 (entget (ssname txt_ss 0))))
    / X. t6 b- _* B
  12212.                  tmp (ssget "P" (list (cons 7 style))) % q$ N4 k9 M1 {2 _
  12213.          );setq
    ; h* Z& E! U6 {6 A! M) G8 V" w
  12214.          (if (not (and tmp% J3 p3 {/ p1 \
  12215.                        (equal (sslength txt_ss) (sslength tmp))                    
    7 N( T$ ?2 B7 X0 K; Q/ Q; |# e8 j4 i
  12216.                   );and# h) h+ p3 k- p' c
  12217.              );not
    * n, N# Q8 r" H8 o, F0 ?
  12218.              (setq style "");setq then the style varies
    8 D6 {# |* [4 P3 u% M; K
  12219.          );if" v6 i- n, p1 b2 u6 N  ?
  12220.         );progn the text type objects are in the selection set. M. h& _8 D1 i' z5 ^. ]/ H
  12221.     );if) ^. t+ l" Y. w0 a/ b. F/ u8 u
  12222.     (command "_.select" selset "")5 Z! P* d5 x4 @5 p3 ^* z0 \
  12223.     9 ?+ G0 W3 u# j) k% k
  12224.     (while (and (> sslen ctr) 4 P* A; ]  T5 n6 l
  12225.                 go
      m# W( i  x9 q+ A0 \
  12226.            );and1 b+ q5 p6 f: `0 j' A, _7 E& k
  12227.       (setq elist (entget (setq en (ssname selset ctr))))
    3 M: r2 S1 ^  h4 L, {

  12228. 7 {7 o- L6 x% K, c
  12229.       (if chk-col (match-col))" J3 e1 {( S1 j4 Z5 ]* u/ l- u
  12230.       (if chk-lt (match-lt))
    " m& n' ^$ N- U: r
  12231.       (if chk-lay (match-lay))
    9 C4 y* m" P# D- K3 [
  12232.       (if chk-lts (match-lts))
    8 F' r5 d2 I' `) }; e: n
  12233.       (if chk-th (match-th)). g: s) J; h6 ]/ s# R; A
  12234. / W/ y# w4 k8 Q& C: U! W
  12235.       ;(if chk-etype (match-etype))( @& @/ O# H- J$ P# }
  12236. 5 d, r0 q$ i- ]0 D8 a' P+ ?( s
  12237.       (setq ctr (1+ ctr))
    ) K) T5 I$ E$ o! F) T) t! U
  12238.       (if (and (not chk-col), v: Z5 C2 N( d7 W& L# |6 d, A0 s
  12239.                (not chk-lt)
    3 w. k' [% `, q) Z/ m" r, Q2 b- t' t
  12240.                (not chk-lay), o; m( T& m7 v& C$ W7 e# u
  12241.                (not chk-lts)+ o) `5 ]3 |  e  p/ @+ }9 b3 c
  12242.                (not chk-th): L8 q/ ^; q/ k& L
  12243.                ;(not chk-etype)
      A, I! T  w& ^0 k2 x* D  e
  12244.           );and
    4 f- [% |+ {. ?. s1 |& n
  12245.           (setq go nil)/ T9 C+ J" m# r. Z! Z) b) V
  12246.       );if
    1 U9 J% x: G& I1 c! W
  12247.     );while
    # |0 }: o% G* }) n9 J0 E2 I
  12248.    
    + j) a" L, o. @: r! b% L
  12249.     (list color ltype layer thickness ltscale
    8 y' M& h3 Q/ F0 R( |& B
  12250.           width elevation height eflag 9 M4 l+ D0 X% K6 }8 o
  12251.           style poly_ss txt_ss# X! i$ S! V& e2 n
  12252.     )
    8 A! ~; ?, E' `, E7 m
  12253.   );defun getprops3 y/ l$ b( }, K+ w
  12254.   z8 o0 B8 a7 C0 H: [( K$ ^
  12255.   ;  This is a speedy little routine to tell whether the polylines in 5 @8 T! M5 m) ]0 }  i
  12256.   ;the selection set argument are of varying width or a constant value. " }* S! d3 w/ l
  12257.   ;Looping through the vertex's has to be done for old polylines when
    8 z6 b0 a# I5 _! }% M; g  M$ l3 x
  12258.   ;the polyline header has width values of 0.0. Basically, in this case, ' t% I" i" D0 Z. R) W, _1 T& K
  12259.   ;information in the polyline entity header is abmiguous. Width values , Y$ J4 Y, l; ]% e. ]
  12260.   ;of 0.0 in the header entity could mean the polyline has a constant 1 l( b' F) {! U& D3 E, Q0 s
  12261.   ;width of 0.0 or it could mean that the polyline has vertex's of varying 8 t5 n& ]% H4 R. C, K
  12262.   ;width.& m: K  H" Q# i! ^# d& q
  12263.   ;% Q  q, _% ?6 s  R. P4 ], v
  12264.   ;  It's all in wrist. Err a.., I mean it's all in the 'if'
    ' r7 u0 ^% P( m/ Y9 l
  12265.   ;;
    5 [2 F' |, o$ a5 `) _
  12266.   (defun pl_width_getter ( ss / ss2 ss3 n na e1 width width_a width_b flag flag2)
    % \. Q% T$ L1 p, |& ]( H+ |

  12267. ) U5 ^) O. s# P3 m: ^4 ?, L
  12268.    (if ss 0 K1 p5 ^# {( a& n; o
  12269.        (command "_.select" ss "")
    . b! n* \, ~3 n" \
  12270.    );if2 A: y  u1 b, `! k3 ?
  12271.    (setq width ""$ H- N6 k; ]* Z2 p; A* J, v
  12272.           flag nil$ R  D( J% d( ^1 h
  12273.          flag2 nil$ }$ r( o2 G4 A
  12274.    );setq1 Q1 Q( A& g0 e2 T
  12275.    (if (not
    , ]* S, H6 N, w. X
  12276.          (and ss
    ; w0 G$ q8 I( ^5 ~
  12277.               (setq ss2 (ssget "p" '((0 . "LWPOLYLINE"))));setq
    8 A. ?. H' q7 _0 h
  12278.               (setq    na (ssname ss2 0)8 q: x4 W% e# P9 j4 p
  12279.                     width (cdr (assoc 43 (entget na)))
    $ Y; o. }5 s) C$ D
  12280.               );setq) |+ ~0 x9 e/ ?3 m( }' g
  12281.               (setq ss3 (ssget "p" (list '(0 . "LWPOLYLINE"), [1 i* B# F4 t% A2 y
  12282.                                           (cons 43 width)
    7 O8 l6 r+ R& ]+ i. i
  12283.                                    );list
    5 ~: Z4 v9 s# g
  12284.                         );ssget
    , R$ P7 b# N8 \* S( y
  12285.               );setq
    - A, O- Y; f; V# B
  12286.               (setq flag T) 4 h$ L4 h/ ?" g8 Q
  12287.               (equal (sslength ss2) (sslength ss3))9 [& m; F6 M! e- U, u! x  {9 T
  12288.          );and
    ! u- i' \: q5 s4 h5 }4 s& m; A. S
  12289.        );not: B5 {8 [+ m3 T9 G- T! {
  12290.        (progn
    9 U  ~, y" I* I2 b
  12291.         (if flag
    # S$ F3 P. T; i4 O2 X) ~' l5 r( ^
  12292.             (setq width nil) # t' W/ |$ p1 e6 s1 O' p
  12293.         );if
    # n3 j8 h4 J# \0 w
  12294.        );progn
    8 z: }* ~0 p: g
  12295.    );if , q$ R* D' Y- e) T! u6 ~/ {
  12296.       
    4 f8 N4 Z' J7 N3 g
  12297.    (if (not
    5 a+ X: [$ A' S3 k9 G/ P
  12298.         (and
    2 c& s: f+ Y( x
  12299.              ss
    - r& ]' c0 L, F
  12300.              (progn (command "_.select" ss "") 4 @3 x3 `9 g. a; [2 @" V1 J
  12301.                     (setq ss2 (ssget "p" '((0 . "POLYLINE"))));setq! _, _" F: T; q( _8 W  p. \( F
  12302.              ) 0 r+ o+ v& E, {7 t; ?* a1 t
  12303.              (setq      na (ssname ss2 0)
    # D  |" P6 @. g+ n5 ]
  12304.                         e1 (entget na), @/ E2 A' E) o" t: n6 H, M2 d
  12305.                    width_a (cdr (assoc 40 e1))
    ( K' ?+ h/ T9 \$ r9 W2 k
  12306.                    width_b (cdr (assoc 41 e1)), s1 t. Z. ~9 g* x/ `! {) |
  12307.              );setq
    3 ?5 o* J* [+ g& p; r& X
  12308.              (equal width_a width_b)
    5 s* g' n* Z: _- x5 r7 y1 b
  12309.              (setq ss3 (ssget "p" (list '(0 . "POLYLINE")
    - {- p2 K# Q1 ~. l+ z) c- Z8 R! E
  12310.                                          (cons 40 width_a)
    - n4 O. p3 A' e; @  j7 p
  12311.                                          (cons 41 width_b)
    " w; I! O: c) D8 `, T
  12312.                                   );list
    - U* }0 H- p' V
  12313.                        );ssget
    & a  c- q( x  f) ^2 z( \
  12314.              );setq
    3 u1 N1 Z9 `( P& j" C0 m8 \' w9 {
  12315.              (setq flag2 T)
    8 w$ X1 I# ?& l# h7 m
  12316.              (equal (sslength ss2) (sslength ss3))
    9 Q% l) J( o6 r% k) \# y/ O3 a
  12317.         );and 7 G/ a/ L9 X0 Q9 a6 I; C8 _
  12318.        );not % j0 x5 ?0 E# o! y  N
  12319.        (progn6 a( T- G+ B3 K+ Z0 c9 P
  12320.         (if flag2
    4 c6 Z& K6 G0 y1 n
  12321.             (setq width nil);setq
    - {# {$ ?) ]  N8 O" `
  12322.         );if
    1 F. F9 B( P, x. T
  12323.        );progn then) W9 K9 S" v! w/ s/ k6 S6 c9 ?" a
  12324.        (progn
    * W) G7 P0 S4 H* @
  12325.         (if (or (equal width "")! ]6 x6 K+ L- J! m' w' U) b$ e
  12326.                 (not flag)
    ' i; |- }+ c  C; s* F
  12327.             );or
    : C9 ?% }  ]: N; c) h: K
  12328.             (setq width width_a), Y5 B4 s8 h- x7 U
  12329.             (progn
    0 J( Y# t, T) q+ O" Z
  12330.              (if (not (equal width width_a))# t) G, L; |! Q% D7 `' k+ f) T
  12331.                  (setq width ""). a( ]- d. M; G
  12332.              );if  
    " X" v* {5 A/ q) h  I
  12333.             );progn
    9 h% L8 s& {, |9 w* ^, q
  12334.         );if2 ~8 D! c+ \7 v1 {0 c0 L" M
  12335.        );progn
    ) b% ?/ o/ O7 J9 R( H& V( A
  12336.    );if
    5 I( ^: e. V3 a  W1 U& @
  12337.       
    9 n3 B) ^% Z' x9 I7 C& F
  12338. 9 t- J' `0 l% a  h7 u
  12339.    ;now for the special handling for old polylines
    ( Z9 w. G- c: W* o, @0 N
  12340.    (if (and width 7 e  @; s( y2 v( K
  12341.             (equal width 0.0)
    / K% q1 b# Y5 u2 e$ R, u% C: e( q. l
  12342.             flag25 c) ?9 d" Y) l% e
  12343.        );and , p5 C; @1 U! G$ D  b8 h5 w
  12344.        (progn4 t. f: B1 x* ]' ~
  12345.         
    ' A4 w0 I" E* [" {  g. ]7 z/ h6 d
  12346.         (setq n 0);setq, A$ ^+ K9 X& }, j% @: C3 l
  12347.         (while (and (equal width 0.0)
    ; _" K' |' L3 z4 t6 C
  12348.                     (< n (sslength ss3))
    1 K3 D1 O5 k" I
  12349.                );and2 W) i8 f/ R1 J2 g# M& G3 T
  12350.          (setq flag nil! B6 I* I! ~( ?& u$ S' a
  12351.                  na (ssname ss3 n)  @& z7 G; A7 p4 A1 `& n& K4 a
  12352.                  na (entnext na)
    8 J  e0 N8 A; i# G; \
  12353.                  e1 (entget na)
    ( N: m3 [! f! U9 |. C# K+ G
  12354.          );setq
    8 {0 [1 `, }. \4 N; |, t
  12355.          (while (not flag)
    ; [9 }/ n" ^  S$ U
  12356.           (if (or (equal (cdr (assoc 0 e1)) "SEQEND")/ G/ l/ h9 [5 b
  12357.                   (not (equal (cdr (assoc 40 e1)) 0.0))
    - f/ B/ D( V' r7 y
  12358.                   (not (equal (cdr (assoc 41 e1)) 0.0))# q: t5 `/ P9 z0 y( K5 P9 N& B
  12359.               );or; D  I. q7 B) P' W" J# D
  12360.               (progn
    . `! \: _# F/ Z# f4 ~
  12361.                (setq flag T);2 L* \2 Y3 n3 ]# w6 P; c
  12362.                (if (not (equal (cdr (assoc 0 e1)) "SEQEND"))/ ?' x% g, C- q
  12363.                    (setq width nil)
    . ^, _  w7 }7 i: m4 L
  12364.                );if
    / l7 ]8 ?- `2 _! u  R2 R' C
  12365.               );progn then jump out of the loop
    ) B: O, X3 |2 z# ^8 d  G! n% L
  12366.               (setq na (entnext na)- Q/ ]. s7 `8 l
  12367.                     e1 (entget na)9 _& R' [" A( f
  12368.               );setq . J8 i0 Z! g+ f; C- l
  12369.           );if
    9 |% \( j9 t: E. `
  12370.          );while
    / U; b& Q; `8 P. t9 O" P, C
  12371.         (setq n (+ n 1));setq  
    " Z5 F) S: Z! T
  12372.         );while
    0 t/ V0 `0 C7 O
  12373.            
    , e, v& Y0 t7 H6 f* `) g4 L* Y7 L3 m9 N
  12374.        );progn then it's a legacy 5 V, R6 p% `$ w, c" }; k
  12375.    );if    ;legacy polylines that may have varying widths  ( T5 N) x: \/ C4 z7 [) F
  12376. $ q; k5 C" h2 C8 G6 i+ ~  z. k' P
  12377.    (if (not width)+ S" m$ N% {4 `1 X: r0 _
  12378.        (setq width "");setq
    ' Y/ W! k- l# `
  12379.    );if6 M( q3 E  F  K
  12380.    (if (not (equal 'STR (type width)))
    + P5 p  `: o2 ^8 |+ k! K
  12381.        (setq width (ai_rtos width));setq
    3 o5 G  l. B) o& Q
  12382.    );if # Z: T1 B- T# p
  12383.    
    ; s( l, Z$ C, y& F6 z, t: @0 [! `
  12384.    width   + y- X0 m7 C; Z4 e
  12385.   );defun pl_width_getter
    6 Y: s8 S/ |; t$ K: V

  12386. - v( M  G" V9 D, V' Z
  12387.    
    8 [2 \/ ~+ Q, F1 u& p% w
  12388.   (defun match-col (/ ncolor)
    9 I/ C' Q" `' l) J/ t
  12389.     (setq ncolor (cdr (assoc 62 elist)))* g7 _! j) t8 K& }
  12390.     (if (not ncolor) (setq ncolor 256))
    ! m0 n  y) |- w) a
  12391.     (if (/= color ncolor)
    + m5 F3 `; ^% R* o% _. X& \; @
  12392.       (progn
    2 S+ Z4 ]; X6 R7 m. J' V4 X5 W1 q
  12393.         (setq chk-col nil)
    9 @( k8 z3 n6 B
  12394.         (setq color nil)0 t* k* P+ @! c/ k, c2 t3 W
  12395.       )! O$ Y$ ~( S8 ?
  12396.     )
    4 f& F1 j2 j& j" A+ u" P
  12397.   )8 e+ H  k/ }# y" n; j

  12398. 6 [4 U* h$ D6 f+ S! [/ D8 Z
  12399.   (defun match-lt (/ nltype)
    + |; N6 }- }$ j/ A3 t# `  t0 V
  12400.     (setq nltype (cdr (assoc 6 elist)))* X( O0 @; a  Z( a1 y
  12401.     (if (not nltype) (setq nltype "BYLAYER"))
    , L6 J7 d9 F3 n. T1 r
  12402.     (if (/= ltype nltype)! g% }3 M6 H* U! S
  12403.       (progn
    . Q; k+ ~; J6 ?( _( N( [7 Y2 l0 _
  12404.         (setq chk-lt nil)
    2 a5 F; _) V6 F6 b- R' b) u% c
  12405.         (setq ltype ;|MSG0|;"Varies")
    ( z" h- I5 e' `8 t# ]' h
  12406.       )) m8 n6 z4 x- i9 c5 n  ^
  12407.     )
    8 b* ~- E, s  L+ ^( ?! d7 o
  12408.   ), T" n6 W& a3 [% w" z

  12409. 4 |, a" Q) {* _- n
  12410.   (defun match-lay (/ nlayer)
    8 H8 J4 I* T# G# W( y# F0 @$ `5 A
  12411.     (setq nlayer (cdr (assoc 8 elist)))
    4 b- r  P1 J1 _0 }" v
  12412.     (if (/= layer nlayer)* O5 e! l0 M! h: T: y
  12413.       (progn9 C. W6 X/ l& ], y' J
  12414.         (setq chk-lay nil)
    6 u% O) H4 \6 g
  12415.         (setq layer ;|MSG0|;"Varies")
    / U; u8 C+ h  s3 I
  12416.       )$ p- G7 m7 T5 C3 F
  12417.     )! u8 p+ v7 m: n; u! w
  12418.   )- t9 Q1 a- S$ a

  12419. 7 s9 S! {) I4 P5 Z- G" S) }
  12420.   (defun match-th (/ nthickness)7 U: S* J- S* T) f
  12421.     (setq nthickness (cdr (assoc 39 elist)))
    ; c8 ^4 y' X9 ?, O6 A
  12422.     (if (not nthickness) (setq nthickness 0))
    ' {: U4 Q/ J) ^
  12423.     (if (/= thickness nthickness)
    0 \. U* d+ y3 N  ?" r
  12424.       (progn- P4 ?2 E- v8 G8 o- I
  12425.         (setq chk-th nil)" m1 [, |7 O" O. G
  12426.         (setq thickness ;|MSG0|;"Varies")
    - ^2 R, O2 h+ j
  12427.       )
    - G; |& K4 ?; O0 @# V
  12428.     )
    ( y  r" v% l& H) O  S# u
  12429.   )
    8 M9 j# B+ W, C" E

  12430. $ O' T6 Q4 B" L1 h$ L% x* I! P
  12431.   (defun match-lts (/ nltscale)
    " L3 |+ H3 p& f# K# `0 n6 k
  12432.     (setq nltscale (cdr (assoc 48 elist)))
    - B8 X0 f( \: H) y3 R# C; F6 x% V
  12433.     (if (not nltscale) (setq nltscale 1))3 L1 f' C  A) V; ?
  12434.     (if (/= ltscale nltscale)
    # K6 u  |: w' G1 ?( ~
  12435.       (progn5 R# R% G0 w3 e. w" g: l  `
  12436.         (setq chk-lts nil)" Q5 W, P" g7 v. k% S5 r9 m8 v0 w; D8 y2 F
  12437.         (setq ltscale ;|MSG0|;"Varies")
    6 _1 H7 |& [4 p
  12438.       )
    7 e5 O7 L+ u' |
  12439.     )1 Z6 t0 F/ j- t' h
  12440.   )8 E3 D, a* ~" n  o( x0 F4 |* `
  12441. 7 `% i& _7 Z6 B! Q
  12442.   ;;
    / e! P5 p& a7 ~' _
  12443.   ;; If an item is a member of the list, then return its index number, else3 Q- {. _% q# z' Q, O
  12444.   ;; return nil.$ r: H* e- s& _% Q2 F( A
  12445.   ;;
    1 ]; {+ a$ K' n& X
  12446.   (defun getindex (item itemlist / m n)
    2 H% u( C" S3 p- t$ I. v
  12447.     (setq n (length itemlist))" \) u3 _+ F) V7 y
  12448.     (if (> (setq m (length (member item itemlist))) 0)* E$ ?8 j$ Y! F. V; |7 [: Z
  12449.         (- n m)
    ' \7 O9 a5 ?2 o9 a
  12450.         nil
    5 l. @! t* q. l6 _( q2 _
  12451.     )
    1 Y! Q  _2 l& l: M9 Z
  12452.   )
    ' V, i  `8 M0 d4 L* |% H
  12453.   ;;
      d- m4 r" q0 q/ H" _# V( _+ p
  12454.   ;; This function is called if the linetype is set "BYLAYER". It finds the  l7 ^/ q2 S0 K$ l7 n/ L
  12455.   ;; ltype of the layer so it can be displayed beside the linetype button.
    - _7 C" c0 T' ]/ s
  12456.   ;;
    : ^, z& m/ \( \% S
  12457.   (defun bylayer_lt (/ layname layinfo ltype)8 z) F! b8 K; ]8 _2 y5 A! b
  12458.     (if lay-idx3 K- }/ H- |3 f$ U% e! ]
  12459.       (progn
    0 }0 i0 ]' H' E" H! u
  12460.         (setq layname (nth lay-idx laynmlst))7 M0 a! S8 H' X9 j
  12461.         (setq layinfo (tblsearch "layer" layname)); Z6 s) ?; f% s
  12462.         (setq ltype (cdr (assoc 6 layinfo)))8 G# b, H) q+ D+ O5 r1 e, ~
  12463.         (strcat "BYLAYER" " (" ltype ")")
    : C5 l9 C+ e' F% P3 `# f7 N$ r
  12464.       ), y+ z- p: ?. i# @& }
  12465.       "BYLAYER"
    3 S2 }: L% A3 Q6 D. m
  12466.     )
    % R1 t* S9 B- V# q) i
  12467.   )% B& f+ J' l' K5 k7 f3 L* M
  12468.   ;;
    / Q6 X9 t& \2 p6 d8 E; D5 F
  12469.   ;; This function is called if the color is set "BYLAYER".  It finds the; T/ s+ c8 O: I( {. K
  12470.   ;; color of the layer so it can be displayed  beside the color button.
    ; c  R5 J" O4 R
  12471.   ;;
    ) R; ^; E( F3 ~) j
  12472.   (defun bylayer_col (/ layname layinfo color)6 `$ L9 f+ G1 h
  12473.     (if lay-idx
    ; y. B0 x  p  c% J* K( L$ k
  12474.       (progn6 l. I8 I8 \9 x7 X2 p% z# k
  12475.         (setq layname (nth lay-idx laynmlst))
    % o. e: I. y( O) ^! U7 n
  12476.         (setq layinfo (tblsearch "layer" layname))* K$ P7 @9 }$ J  a
  12477.         (setq color (abs (cdr (assoc 62 layinfo)))), }5 W  d7 }+ U0 W* y: a. x& r
  12478.         (setq cn color)1 z6 m- J' s1 D' ?& U
  12479.         (strcat "BYLAYER" " (" (colorname color) ")")# \4 R9 `# [$ h( |9 |, L% Q; ^
  12480.       )6 R4 @1 C+ F8 G" z6 A
  12481.       (progn' a. |: `9 b6 Y
  12482.         (setq layname elayer)
    % K- @# A3 O, ]
  12483.         (if (and (/= elayer "")
    6 V3 H9 O, X% G3 W
  12484.                  (/= elayer "Varies")( h+ a* f" d% k: `5 O/ e( o: m! C
  12485.             );and
    # z' I2 v" J: [- l8 N4 h
  12486.             (progn- P3 r' o# o8 t- @  q# X) r1 S/ `; ^
  12487.              (setq layinfo (tblsearch "layer" elayer))
    , u5 x5 v" G+ x- z: l
  12488.              (setq color (abs (cdr (assoc 62 layinfo))))! M- G: @5 X( C% `* I; r
  12489.              (setq cn color)3 n. d# T! Z* f  x* t
  12490.              (strcat "BYLAYER" " (" (colorname color) ")")
    / I7 B/ A: E6 H- T. a0 ?
  12491.             )! e/ W/ d5 y: {9 K  T9 |
  12492.             (progn( E7 O/ M9 o; Q; X- _6 K) E' S
  12493.              (setq cn 0)5 Q; r/ K+ G5 T" T/ ?! m( N) Z) o. `" T
  12494.              "BYLAYER"% [, C- T; N5 A% q
  12495.             )' G, [; d& J3 z$ Y5 @3 b8 O/ o
  12496.         );if; Q( H& ], w8 t/ u8 x" r
  12497.       );progn
    4 {! U( a$ a+ [0 A# w
  12498.     );if% H' F8 Y( L1 Y
  12499.   )
    3 ^% n4 u' v+ G. G3 R. ?: ]
  12500.   ;;
    . D# ^( Z& u' W5 v
  12501.   ;; If there is no error message, then close the dialogue. D( E  f6 s( M2 r
  12502.   ;;
    4 R- N  {. W! D! C% A1 S: _
  12503.   ;; If there is an error message, then set focus to the tile9 y$ R: L$ Y' o
  12504.   ;; that's associated with the error message.5 M; F$ U" ~# J" v" P
  12505.   ;;
    # p& ^+ J" b) t- I
  12506.   (defun test-ok ( / errtile)/ `2 x8 W) L5 k4 {3 ~; T6 H
  12507.     (setq errtile (get_tile "error"))
    9 K' B3 u- [- [- `* @% W
  12508.     (cond
    & \+ }6 ]$ ~- B  @8 H7 x5 C! S" Z
  12509.       (  (= errtile "")# }! e4 ]  g2 C/ Q* H% d, l) @
  12510.          (done_dialog 1))
    6 Y# }& S3 B# q' M
  12511.       (  (= errtile "Invalid thickness.")
    # L: {. t* o) }. Y  y
  12512.          (mode_tile "eb_thickness" 2))" x; }1 I, u0 [# `! i% H3 B" p3 a
  12513.     )
    1 U* p# Y0 _; L5 \5 v8 v: H% J
  12514.   )
    ' V% i$ L# u- J& u2 q
  12515.   ;;
    0 c; m, P; W& E) ]
  12516.   ;; OK in main dialogue.
    , H# x0 |& e7 n! C) x$ w
  12517.   ;;+ T* V% l4 F, e! I( e
  12518.   (defun test-main-ok ( / flag)
    1 ^! s5 ^5 G+ j2 g
  12519.    (setq flag T) 2 @* v, W7 `  I; F" D
  12520.    (if (not (or (distof (get_tile "eb_thickness"))- [; w' E  G& j5 n# b+ }
  12521.                 (= "" (get_tile "eb_thickness"))
    ' P! d, F/ D9 K7 O+ [  G
  12522.             );or
    . w. J5 U0 _1 A( f8 f. s2 [
  12523.        );not
    ! [9 U+ {8 x, `0 ~, ?4 j) z5 n$ E
  12524.        (progn3 d- e+ z) g! O8 `& f* ^
  12525.         (set_tile "error" "Invalid thickness.")) e$ z6 ?4 F, |& F7 {+ O+ ]4 ~7 Z
  12526.         (mode_tile "eb_thickness" 2)
    % X; |% n( o0 i4 o9 Z. _# ?
  12527.         (setq flag nil);setq0 x7 s* g1 i, s' h
  12528.        );progn
    7 S3 x1 o* g- T4 b' R" g3 }
  12529.    );if9 P$ q8 T4 `& T4 `7 A0 M1 W3 D5 k. v
  12530.    (if (and flag; |7 ~$ r5 k8 B. _, k- W4 [& C
  12531.             (not (or (< 0 (distof (get_tile "eb_ltscale")))
      |' q. B. i" O& y: |- R$ ?  \1 Z% r
  12532.                      (= "" (get_tile "eb_ltscale"))3 t$ d( v  o; a' E2 G- _' R
  12533.                  );or      , D/ E# \( Q1 F0 B1 a8 T
  12534.             );not
    ' N! C7 N  e1 Q+ e
  12535.        );and   b+ Q0 E+ e9 J
  12536.        (progn
    0 W: m5 h% K$ }9 \& b9 x7 z4 M
  12537.         (set_tile "error" "Invalid ltscale.")' B+ i. p3 H5 z" p/ n5 j% a$ Q
  12538.         (mode_tile "eb_ltscale" 2)
    ! h6 M3 X* C' d4 d0 ?5 j
  12539.         (setq flag nil); " }. x+ l2 x8 j  X- p& g8 s$ \  S
  12540.        );progn then! i% F! [" x/ i( L3 D- w- [
  12541.    );if& N$ l: H/ H' }& S5 `! S1 ?* f
  12542.    (if (and flag
    9 M, P- I! |* _: Y, ^4 D
  12543.           ; Don't test the tile's value unless it's enabled.
    6 T$ X$ d6 \5 d' a! L7 I0 P2 d# ?- |/ h
  12544.           ; We're not set up for the display-only value! l3 |, v- G1 X- _1 y. z8 z9 k$ c, x
  12545.           ; of "" here in the error handler.
    * F1 g9 m2 _4 K
  12546.           (= 2 (logand 2 eflag))
    8 P' B+ S) b9 ~
  12547.           (not (or (< 0 (distof (get_tile "text_hgt")))' @7 D2 ~  w9 p7 X9 B( w* {
  12548.                    (= "" (get_tile "text_hgt"))8 L' t, i% {8 i1 x4 h
  12549.                );or! _9 Y: {  }9 L
  12550.           );not
    ; g5 K  @  H% O" @6 p& O, n. a
  12551.         );and& a1 J; B0 q8 Y4 X* E# Q; i; ?; ]
  12552.         (progn* Z7 w* R: D& D, x) l
  12553.          (set_tile "error" "Invalid height.")- V4 _+ o# R: _  O2 [8 [7 @
  12554.          (mode_tile "text_hgt" 2). z+ i, w* Z" C$ x
  12555.          (setq flag nil);
    4 e8 Z3 f( M! E6 }7 c9 Q3 l
  12556.         );progn then
    ) t! P- @3 U$ v  I9 ?
  12557.    );if- y- x. p0 s( ^
  12558.    (if (and flag
    % o! `9 n7 N) P
  12559.             (= 1 (logand 1 eflag)). V& D) P. _, K* ?7 v
  12560.             (not (or (<= 0 (distof (get_tile "poly_wid"))); p+ x  M; B! B( g2 Y, q( P
  12561.                      (= "" (get_tile "poly_wid"))3 d; a) R, B4 F3 z
  12562.                  );or
    6 H% K$ n6 V) N' h  P
  12563.             );not2 O8 ^: q" i/ a4 t6 M
  12564.        );and
      W* ], g, Y6 {, [7 V
  12565.        (progn" n$ {( R. x- n. l1 x2 w% F
  12566.         (set_tile "error" "Invalid width.")
    0 T9 Z' {6 v" V! W# I+ k! @% @7 X3 d
  12567.         (mode_tile "poly_wid" 2)
    4 A+ X$ ^; C( Z6 m+ ?! U# p
  12568.         (setq flag nil)% Q. t* H  s- w! t6 y) G
  12569.        );progn then! k  r5 }: ?; P
  12570.    );if - ]  t3 U7 ]1 m( w
  12571.    (if (and flag
    3 u! U' u: [8 R3 M7 P
  12572.             (= 1 (logand 1 eflag))
    8 w2 b% V1 W7 y; \
  12573.             (not (or (distof (get_tile "poly_elev"))5 H# N7 e$ H. e
  12574.                      (= "" (get_tile "poly_elev"))9 [8 H- Z2 W# M4 a% a
  12575.                  );or6 R  t8 n4 M' E$ ?" I+ h  y* R
  12576.             );not
    ! J* j  H7 n: _+ G
  12577.         );and$ t. p$ @  m6 X0 _4 y2 m  Z" v+ g- q
  12578.         (progn* ]/ w) ?& }0 x- l2 N8 f
  12579.          (set_tile "error" "Invalid elevation.")( ^- G3 t. h& `4 ?) |! T3 |
  12580.          (mode_tile "poly_elev" 2)- Q2 j" h5 S5 x
  12581.          (setq flag nil)+ p. v' N; R% t' D( w
  12582.         );progn then
    : t! @- ~! S  ?& J) ~
  12583.    );if  - v& Q* O3 h- s, ]: x2 {& p5 S
  12584.    (if flag
    " `6 L3 x/ S" V' ~2 z+ @4 `
  12585.        (done_dialog 1)" Z9 r5 \" w" H  k' I# u7 H
  12586.    );if
    & _9 L% f2 U/ N# I$ p- F/ c1 s; |
  12587.   );defun test-main-ok$ z8 Z! o2 r! a9 d! K
  12588. # ?6 Z; {! H2 t. \: n
  12589.   ;;
      y+ F5 x. I9 v
  12590.   ;; A color function used by getlayer.
    5 ]5 `3 p7 A+ {, ^+ M# a
  12591.   ;;
    . t! e8 J% Q: |
  12592.   (defun colorname (colnum)) l4 w/ E  H0 P3 G! x
  12593.     (setq cn (abs colnum))( ]4 U& h' A2 A" M; x9 U* c
  12594.     (cond ((= cn 1) "red")
    5 ^4 c6 B) F8 b7 [- _
  12595.           ((= cn 2) "yellow")
    3 P  L+ g. P7 n! N& d" v$ j& ?/ s
  12596.           ((= cn 3) "green")2 _, _4 L$ G! ~
  12597.           ((= cn 4) "cyan")
    # k" j; R; e" k0 x. q
  12598.           ((= cn 5) "blue")
    $ ~% ?0 U8 \% t! L4 ]
  12599.           ((= cn 6) "magenta")
    : W" {( R2 t+ A& s$ r
  12600.           ((= cn 7) "white")
    * Q" I$ W, }8 _" N
  12601.           (T (itoa cn))- l$ m8 O; O  o; S
  12602.     )
    . ~" F2 }+ r3 M. @4 _# I
  12603.   );defun0 u9 q' l; s  N- [' W7 m
  12604. 7 v8 ^7 z& C, R
  12605. ;;; Construct layer and ltype lists and initialize all
    , }2 x- P9 z  O" _2 g5 Z  A
  12606. ;;; program variables:
    . g( c4 z/ |4 K
  12607. / h, [$ w! P- @2 e- x0 w
  12608. ;  (makelaylists)                     ; layer list - laynmlst
    ' I1 J  j  _: ^9 v+ J# Q* C8 H

  12609. 7 a4 M, k8 `$ P1 h3 i( M( Q
  12610. 8 \: F2 {5 j1 h1 ~9 S
  12611.   (makeltlists)                      ; linetype lists - ltnmlst, mdashlist, ~( r3 p7 p5 w. C) n; P' a$ t8 Q
  12612. % L: D+ {+ q4 U/ @9 c- m: `: P
  12613.   ;; Find the property values of the selection set.0 \) u/ @0 I3 y* f; w
  12614.   ;; (getprops ss) returns a list of properties from
    0 C5 K4 F( Y2 L: o
  12615.   ;; a selection set - (color ltype layer thickness HEGHT STYLE WIDTH).4 J7 n: X: _! C+ o. N

  12616. 1 n: W3 Z& Y& t
  12617.   (setq proplist (getprops ss));@rk interesting things happen here
    8 n$ e" b, Q  F2 o4 x

  12618. 1 I  }4 p2 i: J7 g
  12619.   (setq' N2 v0 ~; a5 e1 o4 T% N2 ~
  12620.             ecolor (car proplist); u. Q2 ~2 `' ]* F
  12621.             eltype (nth 1 proplist)
    % E0 L2 i8 n" F/ U. P
  12622.             elayer (nth 2 proplist)
    % W% n4 x6 l  a, {7 K) H3 \6 T
  12623.         ethickness (nth 3 proplist)) A4 I) H3 f. c& u" k1 G
  12624.           eltscale (nth 4 proplist)
    * T$ G  I1 X6 }5 n0 F0 J
  12625.             ewidth (nth 5 proplist)" O; @4 M, s+ e( L) Y9 c
  12626.         eelevation (nth 6 proplist)0 W& p5 Y+ @" H; D
  12627.            eheight (nth 7 proplist)
    ! d$ O3 ]- ^# S0 n4 X
  12628.             ;etype (nth 8 proplist);commented out and replaced with the line below. RK.
    9 _! L/ ]" q5 l0 K. M& @% U
  12629.              eflag (nth 8 proplist)6 ^9 D+ C; O& x' Q
  12630.             estyle (nth 9 proplist)4 L4 {  m) f3 \; A1 |& U
  12631.            poly_ss (nth 10 proplist)7 H; _% Y2 s0 b1 n) v9 D# D
  12632.            txt_ss  (nth 11 proplist)
    8 D, ?  }( c3 L0 s( v  y
  12633.   );setq' N+ u2 g6 T9 o5 `5 _  ]
  12634. 9 e' ]5 m' L7 ]" S
  12635.   ;; Find index of linetype, and layer lists9 A" E. x0 f+ c, i! d2 v
  12636.   (cond2 @9 i. ]% @5 \
  12637.     ((= eltype "Varies") (setq lt-idx nil))5 z* n# c0 ^: v+ g7 V* ^
  12638.     ((= eltype "BYLAYER")' B! i$ {: _, }1 T& Y6 r
  12639.      (setq lt-idx (getindex "BYLAYER" ltnmlst)))
    / v3 Z, T& b. [$ c1 }, J  I
  12640.     ((= eltype "BYBLOCK")
    , |/ C& @0 n6 C' {9 w% F
  12641.      (setq lt-idx (getindex "BYBLOCK" ltnmlst)))* ]) e: d& b% L  p; f  D
  12642.     (T (setq lt-idx (getindex eltype ltnmlst)))% s2 m6 V2 Q$ E. V& X
  12643.   )7 m/ @( m$ c+ l) p3 d
  12644.   (if (= elayer "Varies")
    ( U$ K8 N) A2 _. `% @& h6 R; Y$ y
  12645.       (setq lay-idx nil)* K" @) Z' o" U7 S
  12646.       (setq lay-idx (getindex elayer laynmlst))2 b* g. c) n% ^+ a9 U' `
  12647.   );if
    - ?8 u' o9 k% f7 v+ d
  12648.   (if (= ethickness "")$ D0 v- p  ^& t% W" r% ^
  12649.       (setq ethickness nil)4 s: w+ R# D7 I9 i9 w
  12650.   );if) Z& h' c& {$ O  O4 n
  12651.   (if (= eltscale "")
    + a7 o# ^1 J% ~% c3 [* `  N  I# }
  12652.       (setq eltscale nil)
      X1 G( ^) Q# P4 v& A( I$ M
  12653.   );if
    & {  D! g( ]; t% W
  12654. * W. Z! t6 ~! d; S/ ^! w1 U
  12655. );defun ddchprop2_init   ; end (ddchprop2_init)* E2 r7 I: s/ }# j; p, _- w
  12656. % j4 R' l3 Y6 N6 b+ d' K; R$ f
  12657. ;;; (ddchprop2_select)" G1 I# e0 y5 ?  B1 P7 _
  12658. ;;;4 M( O2 n9 \0 k4 g& D
  12659. ;;; Aquires selection set for DDCHPROP2, in one of three ways:
    ( C  r/ f7 c# S0 @, A
  12660. ;;;
    , D3 [1 j* ^/ z3 }, ]3 C
  12661. ;;;   1 - Autoselected.
    2 x7 p+ A7 g+ @5 K' p7 ^
  12662. ;;;   2 - Prompted for.; ^# G. ?+ X6 T+ H1 Q0 u
  12663. ;;;   3 - Passed as an argument in a call to (ddchprop2 <ss> )
    ! O' f) E; b  [  o1 ?" W" e( }& {# N
  12664. ;;;
    & I* e) t& z% \$ G" U; P, _
  12665. ;;; The (ddchprop2_select) function also sets the value of the
    & E4 {3 B* C: e/ @% x
  12666. ;;; global symbol AI_SELTYPE to one of the above three values to
    - w1 I3 |2 k# t/ f3 O
  12667. ;;; indicate the method thru which the entity was aquired.2 U9 U" J* T2 d" C2 Q
  12668. / d  }7 W' |- J$ \! B0 l$ j3 a3 l1 R
  12669. ( a/ J+ Y6 ]* E1 ]0 x- _* n2 |
  12670. (defun ddchprop2_select ( / )
    / L* O4 _' y$ [# W2 I, n

  12671. ' M' D* H8 M- i) s- S0 \
  12672. - n+ G$ q+ R- _4 \
  12673. ;returns only entities in ss that are in the current space. 8 H5 n( I, ?5 ~/ g
  12674. (defun ss_in_current_space ( ss / a cur_space ss2)# s; g# W9 S8 ?8 j9 R/ C
  12675. ' E$ f! G* N' J7 }+ k& N6 I1 I
  12676. (if ss
    . y3 f" x4 y  @' U4 l5 Z: N# d: {* W
  12677.      (progn& h" j' ~" M+ O% C0 q; E7 }
  12678.       (if (and (equal (getvar "tilemode") 0)) ?% m# y5 m" }1 m; q5 R
  12679.                (equal (getvar "cvport") 1)7 q: E1 ?/ B! N: C. k) {
  12680.           );and
    0 Z' i, O8 g/ a; {- T- H3 t2 I
  12681.           (setq cur_space 1);then paper space is where we are.+ Z) P6 p. g/ ~: [
  12682.           (setq cur_space 0);else model space.6 A7 _8 D0 t; m9 S, k% Q. T+ ]( D
  12683.       );if
    3 k$ n2 Y/ t0 C3 C
  12684.       (command "_.select" ss "")
    1 K( T3 @8 Y1 L2 E0 W# ?! o
  12685.       (setq ss2 (ssget "p" (list (cons 67 cur_space))));setq
    1 D. i( k: W+ W. I
  12686.       (cond                              ;;;;;tell the user what's going on.
    3 {- g. A3 h% i. \$ r4 I- I
  12687.        ((not ss2) (princ "\nNo objects found in current space."))1 S! P; y" b$ a$ k
  12688.        ((not (equal (sslength ss) (sslength ss2)))
    - j5 F1 d: H3 N. r( g& ], d; l
  12689.         (princ (strcat "\n" (itoa (- (sslength ss) (sslength ss2)))
    ! C4 s0 Q% V6 D. R( R
  12690.                        " object(s) were not in current space."
    ) w8 S: K/ W3 r8 P; Q) {& F, i
  12691.                )) w" k9 R' Y8 E. d9 {2 r
  12692.         )
    $ j' t- f: L; Z7 l- ]8 R
  12693.        ) , o& y4 K# }/ Y9 E% j0 H
  12694.       );cond ' Y! Q: M0 q1 _, _3 b! Y  I
  12695.      );progn then
      p, ^6 q2 i( c- G; w# \5 J
  12696. );if  0 B, D% t' z  T7 v6 |5 f' q' T
  12697. ss2# }" G6 d" y6 J2 l( q
  12698. );defun ss_in_current_space
    6 f) C$ i1 V  m% Y3 q0 @! Q4 P

  12699. + m$ |& M5 N" x% o  h

  12700. * l  [( f. E* q! D7 F. [  q
  12701. ;;;begin the work of ddchprop2_select
    5 L8 ^7 ~6 |/ v; j$ F' y) i

  12702. ) O8 ?. w% f  K, g# ~
  12703. ;; temporarily restore original highlight setting.9 `2 Y# Z0 w. v& X' g& U
  12704. (b_set_sysvars (assoc "HIGHLIGHT" (car bonus_varlist)))0 r2 w0 D. X, |- h2 C
  12705. (cond% s1 w/ z% r1 }% J1 B
  12706.    ((and ss ! V, Y# E: N: R1 ^$ Y  A0 f
  12707.          (eq (type ss) 'pickset)9 n: {  G  V5 ~/ u! S6 z. i
  12708.     )        ; selection set passed to' S7 i1 n% C% f  @. @
  12709.     (cond                                   ; (ddchprop2) as argument6 @1 O; N4 i( v3 O/ p% ]
  12710.      ((not (zerop (sslength ss)))       ;   If not empty, then
    ' V* B5 U/ S/ T. l/ P
  12711.       (setq ai_seltype 3)               ;   then return pickset.1 r6 ]+ c" }- M) D
  12712.       (ai_return ss)6 A. X7 R1 d+ `$ i. s
  12713.      )
    . @9 t' Q) P/ P0 l: R- Z, U' T. l
  12714.     );cond close
    2 C* j) v5 h0 m7 e" L& L  V" D
  12715.    );cond #15 S& g1 y5 s; a
  12716.    ((setq ss (ai_aselect)))                          ; Use current selection1 H9 V% Z9 E: l8 E5 `. f1 c8 T
  12717.                                                      ; set or prompt for objects
    & X5 ~; c+ A$ k$ K9 e
  12718.    (T (princ "\nNothing selected."). d3 i/ Q2 t- `, R# }) E
  12719.       (ai_return nil)3 p8 L6 u, |* N3 r5 F) p
  12720.    )
    3 L2 x. u1 i4 S3 I% L6 j# v4 P! f# r4 C
  12721. );cond close
    . `/ l6 t* w$ `8 R
  12722. (b_restore_sysvars)
    8 Z6 t3 ?. @) ^# C+ C

  12723. ) A) r" G- E7 m. x
  12724. ;(if ss
    3 c- N8 N9 @: o
  12725. ;    (setq ss (ss_remove_locked ss)) / B% f0 D7 V: L9 ~* N
  12726. ;);if  M1 ]4 g# G9 u) G- n1 I
  12727. (if ss7 T: ~* d( Y( M5 {/ `, u
  12728.      (setq ss (ss_in_current_space ss)) ( U7 x0 [+ Q1 o
  12729. );if
    4 w" M+ u1 Y  [3 W0 ~
  12730. / g5 s" O1 z" g2 k* W8 B
  12731. ss
    % w7 z7 D  l1 Y* A1 }0 Z
  12732. );defun ddchprop2_select( s7 A9 j5 l8 |6 Y3 T
  12733. 8 U7 {4 D+ S/ h$ s9 W# g

  12734. 4 u. P( ^' e4 R7 _0 B
  12735. ;;; Define command function.! B  y' b& B% ]: o* W3 K
  12736. (defun C:CCH ()( w2 N# N% C, i) j
  12737.   (ddchprop2 nil)
    / \; ^: Y# E1 S% C
  12738.   (princ)  w' ~/ k$ o8 M: N+ K: ]
  12739. );defun
    2 A: q" m& O- i6 L
  12740. - Q4 V- Y# P6 I$ F: P7 n

  12741. 9 M3 R2 O8 M4 D" _* U
  12742. ;;; Main program function - callable as a subroutine.
    . n' t# d& W8 n, F+ O+ B
  12743. ;;;
      U" g% u/ R6 D; O( a) ~3 Q
  12744. ;;; (ddchprop2 <pickset> )  k% m8 V* O! G' ?! N' j
  12745. ;;;
    & ~- x+ T& ?7 p$ j8 m3 C
  12746. ;;; <pickset> is the selection set of objects to be changed." c9 Y0 M9 }0 R) l+ D1 R, H; ?
  12747. ;;;5 g4 T8 M1 H6 {9 v. l$ L
  12748. ;;; If <pickset> is nil, then the current selection set is
    5 u/ f" m% j8 H" U
  12749. ;;; aquired, if one exists.  Otherwise, the user is prompted" [" n8 `& ?0 i- m+ Z
  12750. ;;; to select the objects to be changed.- ^% Q# W( h: V
  12751. ;;;) _* `5 T* x4 c6 l
  12752. ;;; Before (ddchprop2) can be called as a subroutine, it must2 n% o# ?$ d# m. Q2 w. y
  12753. ;;; be loaded first.  It is up to the calling application to* [' X$ v( W0 d0 Y, X; ?. `
  12754. ;;; first determine this, and load it if necessary.
    0 _. G! ^5 l! V) R/ Z5 ^

  12755. : M7 d. k& {6 n7 r
  12756. (defun ddchprop2 (ss  /) g$ z+ b. N6 _& J
  12757. * ~( L& l$ ^+ W( I
  12758.                   a
    & ?5 e) G, r1 F$ A: P
  12759.                   add-mdash6 [2 h# \6 c. {% q5 ~6 a" w
  12760.                   assoclist6 r7 w4 l( Z* b  b
  12761.                   bit-70& H! }4 t& F7 m. K0 M
  12762.                   boxlength
    ! O. {% q9 Z- A0 l; r2 r
  12763.                   bylayer-lt$ E, y3 t- D6 e% U% x1 o4 a
  12764.                   bylayer_col
    0 g* G2 ]& F/ r! Y7 H( z( g" O& F
  12765.                   bylayer_lt& ~# {; ^: [" S7 n* k) z, j6 }, U  O
  12766.                   call_chp2
    $ v) @7 q- O  j0 z9 r2 t
  12767.                   chk-col: N4 t, A0 b' t: l4 U
  12768.                   ;chk-etype        ;var removed by rk
    & n+ y& x' R* p1 n+ |8 }8 R
  12769.                   chk-lay    , n9 K9 q" m0 u* d; |" q, z; X, t/ {
  12770.                   chk-lt4 u/ }% K) ]: y+ t, c
  12771.                   chk-lts           ;var added by rk . `9 K8 i; A) W" ]# ?& T' Q+ v! M
  12772.                   chk-th6 G9 h4 f% S2 U1 l/ M
  12773.                   cmd( U8 P6 t( F7 E/ p; A! \# a! ?
  12774.                   cmdecho
    $ @  [0 M1 k! H2 X. P8 e# O4 c
  12775.                   cn+ I3 g6 s" ]- b; Y# \1 h2 r
  12776.                   cnum
    ) F& B" a$ f, E
  12777.                   col-idx
    * Y# T, E- S* M8 p
  12778.                   col_def
    & Z. n3 E# g2 z
  12779.                   col_tile
    / F! V$ i2 K  h- x2 m, D4 f
  12780.                   colname# H5 i6 a' ^' f' V0 ?+ A% B6 f
  12781.                   colnum5 }: @* K; }& p
  12782.                   color4 ]5 l: R. e0 s9 t8 k" E' [( L
  12783.                   colorname1 G0 w/ i$ ]. D* l& q. _6 h
  12784.                   cvpname! }5 P' S1 L3 x$ h. p, u/ f
  12785.                   dash: f1 p+ T2 Q8 ?- a, w& F
  12786.                   dashdata' }+ E, f% B: }9 z& `6 e
  12787.                   dashlist
    ! V6 n- F- ]# L2 L* S
  12788.                   dashsize- F$ E6 V/ ^4 R: ?: ]1 A1 V2 o( J' Y7 F
  12789.                   dcl_id2 Q' ~6 h  P& s! b& x
  12790.                   ddchprop-err
    ( D! [2 S4 s- B
  12791.                   drawpattern
    ( o" J* J# I. H- q% y
  12792.                   ecolor* e8 i: q, X2 E! c/ ~+ _4 a
  12793.                   eelevation
    ! H: P6 ?0 D( v2 f
  12794.                   eflag! M8 M  i; @& S4 ]) V
  12795.                   eheight
    ; E3 H# Z  Y, S  @
  12796.                   elayer
    * j4 }& B- I( R( c1 Z
  12797.                   elevation% K2 A: K7 H/ V: b
  12798.                   elist% U& a! x: ]1 l1 v& r
  12799.                   eltscale
    5 q* X5 D9 F* Y! f
  12800.                   eltype
    6 Q& ?. l6 \: ?+ B- U4 K
  12801.                   en/ k8 M& m" D6 T% D
  12802.                   ename
    1 Q# m" h- _, i7 n" y; _
  12803.                   ESTYLE             ;var added by rk& H" l  |% E1 _& \; Y( N7 |$ d
  12804.                   ethickness' T* i# Q4 ^2 g
  12805.                   ;etype             ;var removed by rk7 o8 ^" j) M! c6 |: c* d" p
  12806.                   ewidth
    3 Q1 Q* i% g8 u, |& |( r* X! x% i/ H' r
  12807.                   fchk
    0 q8 m' D( N5 X% O; E# K- J
  12808.                   frozth8 m$ \" T" T) L- `+ A
  12809.                   fx
    7 w, t$ L3 ^" v( {0 [
  12810.                   getcolor4 f5 H, ^$ J( _! u$ K; b! I
  12811.                   GETELEVATION      ;function added by rk
    - e" Q% ]9 X8 H% U) p3 d3 n
  12812.                   GETHEIGHT         ;function added by rk
    , {8 b/ m* o* }( t! D0 G
  12813.                   getindex) w6 p& e/ H0 O! ~. Q
  12814.                   getlayer
    ' q4 P7 `9 H2 c& f" o9 D# D
  12815.                   ;get_locked_layers ;function added and then removed by rk 6 K) S4 V; _4 _! B% i  a9 ~
  12816.                   getltype
    2 r4 m7 s& r/ ~8 u* @' V
  12817.                   getprops
    5 b) h( \0 G- C8 V  V- Y
  12818.                   getscale          ;function added by rk
    - P4 X: ?# x, N* M$ t
  12819.                   GETSTYLE          ;function added by rk
    # h* g, f' Z1 f7 G4 k
  12820.                   getthickness
    # _# a5 o! C" Z5 x* X  S
  12821.                   GETWIDTH          ;function added by rk+ g$ D3 z4 z9 R& p
  12822.                   globals( S- o6 G+ ]4 v% T
  12823.                   HAIR_STYLE_LIST   ;var added by rk; h4 z9 B  F/ Y' U
  12824.                   height
      S% x. y; ?- J1 M3 Z
  12825.                   index9 ]! P; C  Y" |# v$ z5 E
  12826.                   item/ _9 t- h% z' v  b0 Y9 k8 P4 I$ D
  12827.                   item1$ P; E, Y  B8 ~0 [
  12828.                   item2
    3 [: y" k6 N! V; U
  12829.                   itemlist& z. }! G9 P* h" y' B
  12830.                   lay-idx
    ) ^) @, ^$ D  @: J: ~, e: S( s
  12831.                   layedit_act0 S0 D+ ]" a. P  L' n, g
  12832.                   layer( F: ]; `5 O: J- `- j
  12833.                   layinfo! R4 D7 f' M0 D1 p; R& B
  12834.                   laylist, s4 V# \. |/ V, i
  12835.                   laylist_act$ V0 C& ~" F# _4 p" ~
  12836.                   layname: s7 S8 r: m2 Z. U( Y
  12837.                   laynmlst
    % p( F' y; [! e
  12838.                   layvalue
    ' Y* @3 F$ ^& r! D! a" u8 G
  12839.                   linetype& T5 p0 A" [- T: J: \
  12840.                   list1+ K3 X3 g' }" B! z  p) i' t
  12841.                   longlist, c$ O) ^$ @& C% l, q  a; c$ P' z
  12842.                   lt-idx. @; [/ b$ R& j4 l
  12843.                   ltabstr) f0 q0 T- L7 {2 H6 i# V" b
  12844.                   ltedit_act
    1 W+ ?+ D- b6 ?, @
  12845.                   ltidx
    $ z! L1 N" K7 A5 h
  12846.                   ltlist
      l, D3 p* u! @3 s8 W, Q4 h, H# l
  12847.                   ltlist1, k) Q  r# |+ E3 ]1 Y
  12848.                   ltlist_act8 f* P# z4 b5 `/ f5 d/ O- e3 C
  12849.                   ltname( b, I$ E  I* ~$ W5 Q9 c
  12850.                   ltnmlst
    / K1 D) }& F9 C1 b& @0 Z, {
  12851.                   ltvalue
    $ m$ T2 b8 D( k' {" O
  12852.                   ltype; s# J& O7 q9 s! N- w5 Y, c" x
  12853.                   m, K; |1 U* k+ U( k& N
  12854.                   makelaylists
    0 R% U2 Y1 f  X
  12855.                   makeltlists3 u. V& I& g" O7 h$ d( L# Q
  12856.                   match-col
    4 |) r4 x, ~' m6 F- B, N
  12857.                   ;match-etype          ;function removed by rk+ t% a0 q# \4 R
  12858.                   match-in0 q8 W6 ]! \  s, o2 o* K* S* W
  12859.                   match-lay  ]- A5 B8 E$ B& ?( M* D
  12860.                   match-lt
    ) w1 p+ j9 Z7 ^( J4 Q2 @0 Z% N6 `$ w7 X3 [
  12861.                   match-lts) T. l. E, w3 [$ q' E& Q- ~' K
  12862.                   match-th
      v8 Q+ O# T4 Z' m
  12863.                   match_col3 U2 s4 S- z. a" J* v
  12864.                   mdashlist
    8 [; v, o2 G, v7 R( {
  12865.                   ;MPOPLST               ;function added and then move to ac_bonus.lsp by rk7 w: K8 T) r4 t& O. ?* [! Q2 C
  12866.                   n6 y( Y& u$ t! [' |. x( S. e# B  v
  12867.                   name
    & K/ d6 ^2 N3 |3 x3 d! t0 z) C. s
  12868.                   ncolor
    $ d) c7 @. j; a$ R5 E" j6 G7 J
  12869.                   nlayer) u3 p* D9 o/ i( E" s9 R' F
  12870.                   nltype
    3 h8 m/ c" V; O% C
  12871.                   nthickness' e+ r4 J1 T, X9 {
  12872.                   off+ j* c2 Q4 W6 @% B& T& i3 f
  12873.                   old-idx& K! b/ u; h8 l* ]* o
  12874.                   olderr
    9 U! s# i3 p  S& ?) ]
  12875.                   on
    8 e5 \/ [( s- e  F2 m1 T7 X- M5 {
  12876.                   onoff9 E+ L; ^8 A) K( T  S/ \+ k" n
  12877.                   patlist
    ! b$ d; N  {4 I: @5 Y& z
  12878.                   pattern
    / ^, y8 b7 M7 ^) m( h& o
  12879.                   PL_WIDTH_GETTER       ;function added by rk' q0 c3 J5 J4 a0 _* E  i2 E0 I& S8 E
  12880.                   POLY_SS               ;var added by rk
      I6 X; g; w3 D0 t' Y) A7 C# U, n
  12881.                   ;POSITION              ;function added by rk and then moved to ac_bonus.lsp: E! p' w, C* y9 U. m/ ~
  12882.                   proplist
    1 X6 H/ B7 t/ \" m: L
  12883.                   reset-lay8 @9 X9 r- v5 `5 [7 q! `+ B
  12884.                   reset-lt
    $ [/ |9 w6 {) h. W& R* T5 E1 W$ S
  12885.                   s, N8 \: ~& r/ H. e  H
  12886.                   selset
    5 y. l* e$ Y# s# d& O/ I! R) y0 k
  12887.                   set_col_tile
    ! r  ^1 S9 `. F* w) Q+ Z8 L
  12888.                   sortlist' @6 P# k9 t( Z6 |, n
  12889.                   ss0 O  Z* ]. V; D9 U. R+ i& x: I# |
  12890.                   ss_in_current_space  ;function add by rk.4 U6 u7 y' C* u& |; F# [
  12891.                   ss-index
    * U/ w) p! f+ x9 b! ^& s
  12892.                   ss-length# _7 R8 H/ i# m+ _
  12893.                   ;ss_remove_locked     ;function added and then removed by rk.
    0 l& M: i+ }+ [4 h) e8 h6 S
  12894.                   sslen
    * h* C( w, V0 a2 Z! P3 I5 h
  12895.                   temp_color& A9 {( r+ B% h" k. K, z. Z' @+ F. m
  12896.                   templist: Y3 U% a7 v+ D+ G# t$ x
  12897.                   test-main-ok
    + R1 E9 J* s5 `: V, @* p; q/ J
  12898.                   test-ok
    ; G' n' d4 K' }6 ^# d6 y6 G: l
  12899.                   testidx$ K3 R& c1 |3 b3 I" A
  12900.                   testlay0 o! q3 U3 T$ g! E( P
  12901.                   th-value
    ) X* p0 b. e# H7 ~4 [& U
  12902.                   thickness- {9 b* g' _; `# Z) Z6 T+ L
  12903.                   tile
    ; T& @6 |, @7 ?1 }
  12904.                   tile_rect
    # u% G+ b, Z2 {3 s: g" P/ O& g0 T
  12905.                   tilemode% {% o$ V0 G' R/ ?5 ~- b4 [: |" A
  12906.                   ;TNLIST           ;function removed and moved to ac_bonus.lsp by rk2 D; A9 z0 M/ L
  12907.                   TXT_SS            ;var added by rk
    ' q- ^# N* r; z8 ?4 r' v
  12908.                   ;undo_init        ;removed by rk." L! C3 L* o3 D8 n$ k, J# Z: y
  12909.                   vi  g8 \: ^- f( T, t& k$ K7 r
  12910.                   vpf
    ; |6 m$ T3 f+ x7 d7 Q! Y; M2 O  k
  12911.                   vpldata
    & x) r1 v! t& @/ _4 M5 V6 _( Q
  12912.                   vpn
    2 U6 Z9 F; b9 l, l" F0 @
  12913.                   which_tiles: b" J, L7 h2 ?0 ^
  12914.                   width
    0 j9 A1 i0 x2 J" |9 E6 n9 S% c2 `
  12915.                   x* X  y# j. f' _, F+ @# K
  12916.                   x1
    3 w/ R6 D: q9 Z' R* b( Z# J2 Y
  12917.                   x2' ~0 m# I# M! B
  12918.                   xdlist' C$ ?# |$ T/ Y4 x
  12919.                   y
    , R0 ]& J/ q' `8 ]* `: F$ i0 ~8 W
  12920.                   y1
    3 I- G; H" D$ `% T% s
  12921.                   y2: S% A& ~4 K% _) e5 S7 o) O/ |$ m, y
  12922.                 )
    ! }& Q: m0 Q, t3 R4 E
  12923. " ~+ B- m$ A$ u/ J
  12924.   (if (and (not init_bonus_error)
    / t( u! ~5 X+ N+ N( w
  12925.            (equal -1 (load "ac_bonus.lsp"  -1)) : S7 H7 t2 u7 F' V+ D/ f" Y- {! s. \
  12926.       );and
    6 ^5 q' ]; a" a* O" _. U6 i* D
  12927.       (progn (alert "Error:\n     Cannot find AC_BONUS.LSP.")(exit)): i6 O/ D0 e1 x5 H5 `% G
  12928.   );if: H: @5 j3 p9 c  Q! S& M, P
  12929.   (init_bonus_error (list5 J" N( e/ p9 g  g# }, |
  12930.                      (list   "cmdecho" 0
    7 ?* U, h+ B% a2 ]/ @1 N
  12931.                            "highlight" 0( h: d5 y/ f# I7 B! r
  12932.                            "regenmode" 17 ^2 K- M3 X% R: R
  12933.                              "ucsicon" 0. M2 q8 V* F/ u# q& W: @# U+ o/ ~8 e
  12934.                      ) 4 |  I9 v% o! Z' t
  12935.                      T     ;flag. True means use undo for error clean up.                    ; Z' E, n6 D; Q, h" [8 ]
  12936.                     );list  
    0 Y  }4 T- b! R  Z6 c; }, z/ s: e
  12937.   );init_bonus_error
    ; e6 \% [) p2 e; k
  12938. : H9 o5 l+ O/ b" s
  12939.   (cond# h4 ^- K- S! M# c" i
  12940.      (  (not (ai_notrans)))                       ; Not transparent?7 F2 V$ s* D6 V; i1 w7 ?' U
  12941.      (  (not (ai_acadapp)))                       ; ACADAPP.EXP xloaded?
    * C) B. A$ B1 P
  12942.      (  (not (setq dcl_id (ai_dcl "exchprop")))) ; is .DCL file loaded?
      \! @5 P- G8 |" q; K6 u
  12943.      (  (not (setq ss (ddchprop2_select))))       ; objects to modify?
    + @0 o0 |8 C8 o! a# t
  12944.      (t 3 d" b( ]% h* @/ n& a
  12945.         ;(ai_undo_push)
    - N9 p+ m1 w" `" D8 `8 j9 Q1 G) |
  12946.         (ddchprop2_init)                          ; Everything's cool,
    , I  ]! X1 D  ]) I
  12947.         (call_chp2)                               ; so proceed!
    ) _7 w* n- r0 Y% D, e
  12948.         ;(ai_undo_pop)
    3 Z; q) _2 {: F
  12949.      )
    & O6 n/ W" O0 g# h) L
  12950.   );cond close
    1 X7 g/ _1 h- v+ ^( R$ Z9 t( j) F

  12951. $ G/ \  b; z, [5 F5 L7 M" g( ^& H& P4 z
  12952.   (restore_old_error)
      h# o2 K- {+ b3 m' Q! g: H1 J

  12953. 7 H+ ?4 n3 O! t! n" B9 r
  12954. (princ)& Q6 k- z5 f4 l* k! E4 B, x
  12955. );defun ddchprop2
    * t: a6 z, \2 m8 U0 {8 X
  12956. 9 X' @, j$ H8 V. J. |6 W
  12957. ;;;----------------------------------------------------------------------------
    0 Z& U: f5 C. u( |* y6 j

  12958. . t2 ]% L( O# r# q
  12959. (princ "   EXCHPROP loaded.")
    6 h1 K# `3 p- ~( y" J8 i5 V7 m
  12960. (princ)
    ' L: t8 R  |! F4 i% q% o7 g4 ?

  12961. 9 d9 W4 e, D: }8 O4 M/ g
  12962. ;;;----------------------------------------------------------------------------
    ! r1 z" C7 Q( v' }6 Y7 `3 W4 Y
  12963. ;;;---------------------------------DDCOLOR_LSP--------------------------------
    " N* a4 b" |% U* U. s
  12964. ;;;----------------------------------------------------------------------------: ^7 n# j7 y" b3 q5 @+ t8 c6 i; _! Z
  12965. 1 Q5 |# b. ]" y
  12966. ; Next available MSG number is    24
    2 `8 u3 H& i0 u! ?) k. B7 Y' w
  12967. ; MODULE_ID DDCOLOR_LSP_; z" `7 s' c, B3 f% E1 Z  z5 C
  12968. ;;;
    1 W: ]/ h. x! ?, K6 k" N
  12969. ;;;    ddcolor.lsp
    ' {( P4 {) J% o( N- ?
  12970. ;;;   
    / R' H1 r: Y1 o  G4 A0 g0 s7 D
  12971. ;;;    Copyright 1990, 1992, 1994, 1996 by Autodesk, Inc.$ s& H. l# o! K9 y* D
  12972. ;;;1 S" }- w( N" _. K# Y* N$ I7 a
  12973. ;;;    Permission to use, copy, modify, and distribute this software
    1 @: q: ]: _3 i+ U1 X' f: S
  12974. ;;;    for any purpose and without fee is hereby granted, provided
    ; v7 o% Q; Q' x6 `
  12975. ;;;    that the above copyright notice appears in all copies and
      \- t, d/ V5 Y) y6 O+ c
  12976. ;;;    that both that copyright notice and the limited warranty and
    0 [! `1 o2 w7 J! d
  12977. ;;;    restricted rights notice below appear in all supporting
    * s6 h! M+ v: [$ H: o
  12978. ;;;    documentation.
    6 L0 l& [# L: b- E( k% A( w$ m3 ]
  12979. ;;;
    ( N. Q5 S+ U. v& O
  12980. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    - j/ ]9 j+ a4 l3 p' P
  12981. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF: Q8 w. `( z) m8 g
  12982. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    0 @" A0 H% A, F. s0 A
  12983. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    / ]5 d3 b( r  F" }
  12984. ;;;    UNINTERRUPTED OR ERROR FREE.
    $ {1 u5 F; I9 M9 N0 L6 j% F
  12985. ;;;7 k. W) w) d4 \7 Y+ s2 z
  12986. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to4 a' W, ]; e7 v8 E) L
  12987. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer# k1 t# `5 d; _# X" r7 c" a9 A/ |
  12988. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    - I7 A# b- ~* e5 P) D
  12989. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    ' U( J9 T% M( C! a, m; C
  12990. ;;;+ \& I1 w6 d9 _
  12991. ;;;.* [/ B% ^9 `1 D6 n3 H
  12992. ;;;
    ) A0 `: n" ]7 `; l! r7 V  e
  12993. ;;;----------------------------------------------------------------------------
    3 f: Q: ~" B4 y
  12994. ;;;    DESCRIPTION
    % @. U/ n5 b2 n- c' Z& w( U
  12995. ;;;     
    + ?3 a$ f4 |& K8 J5 e8 x
  12996. ;;;    Chromatic Pallete style color selection dialog.
    / L* q! E2 t# ~, P2 K
  12997. ;;;    8 c6 S0 K0 o3 c/ ^. }! V
  12998. ;;;    Globals:2 R3 n3 u  T6 w( [/ L: E/ \
  12999. ;;;    # y4 o$ q6 ]- j  ^5 V
  13000. ;;;          chroma_color - Integer color index.  The last value selected$ O7 z- p, D) T' g0 H
  13001. ;;;              by the user in chroma dialog.  It is not cleared or reset9 \: T8 A0 m9 V, m3 ^8 R
  13002. ;;;              by a cancel.  Only used for communication between callback
    ! L6 h2 d/ j: U7 ?- s9 D9 }' J1 H
  13003. ;;;              functions and the (chroma) funciton.9 h& q5 l& ^) V3 h/ X
  13004. ;;;   
    . N4 S0 X5 o9 ~/ s- \, v6 \. q
  13005. ;;;    Depends on the definitions for the dialog provided in chroma.dcl.8 c8 [- D" Z2 n
  13006. ;;;   
    3 f, {( I# _' V0 h' b; R
  13007. ;;;
    $ R$ I, k5 \0 d7 A+ A( X- A' F
  13008. ;;; C:DDCOLOR -- Dialogue front end to the CECOLOR sysvar.  Uses the chroma
    5 V6 v+ ?  `3 a; ]0 Z& W0 W2 K
  13009. ;;; pallete style color selector.
    ! ]8 t5 i/ Q! `  \5 V
  13010. ;;;
    6 x, `) h+ E4 A7 K$ d- N
  13011. ;;; ===========================================================================
    ' P* Q6 d; {& _* v& l' v
  13012. ;;; ===================== load-time error checking ============================5 z8 P- ^6 d! A  X1 k6 a' I
  13013. ;;;! t/ U9 n7 P% v+ U- O/ \! k+ g$ d
  13014. 4 M2 v: I1 Y# M. M7 f* ~. P
  13015.   (defun ai_abort (app msg)
    ; v6 V3 F! Y; U6 ^
  13016.      (defun *error* (s)% o# n9 C1 r% _& V
  13017.         (if old_error (setq *error* old_error))! |, Z- E8 W! m0 R$ W; n" T
  13018.         (princ)0 H) w1 \2 Z/ i
  13019.      )! B& i4 U' d& k; P8 S
  13020.      (if msg' t! R- i& d3 s+ q" v
  13021.        (alert (strcat " Application error: "4 g+ Q2 [, C) o6 a. ?( [# U
  13022.                       app4 C& n( w# e- a9 u, W- ~
  13023.                       " \n\n  "  s* {. p1 K" N- C# E) c$ a9 J& T  c
  13024.                       msg
    : |: R/ @5 D0 |9 e
  13025.                       "  \n"
    0 ^' h% e$ @+ d5 X4 B
  13026.               )
    6 q, w. B" T& {& {7 [6 c
  13027.        )
      V2 `$ L4 ]- a6 v1 q: W
  13028.      )0 y( c. G4 k& A% z. x, ~
  13029.      (exit)0 L1 k0 m2 q$ E- X
  13030.   )
    . R  `4 Y& U, K, O
  13031. ! j  ~' F  k* @$ j" R& e6 S  J
  13032. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,9 j5 _5 a# A; T& U, k& x
  13033. ;;; and then try to load it.
    8 ^" Y. w! C+ H+ C5 ?6 v
  13034. ;;;2 p$ n/ F; n. h. P$ q
  13035. ;;; If it can't be found or it can't be loaded, then abort the4 N! r. g/ b; C: ?! z
  13036. ;;; loading of this file immediately, preserving the (autoload)8 O5 H8 o9 U) ^& v  h! e
  13037. ;;; stub function.3 \( y/ d+ f: d/ n& m3 b* ^

  13038. 8 F/ g, F2 V. @
  13039.   (cond
    3 V) W! @* |# j6 |2 z
  13040.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    6 u$ D* c# |" @3 S
  13041. $ W( L1 a) L- _. P. c
  13042.      (  (not (findfile "ai_utils.lsp"))                     ; find it, P1 p& I& K2 d/ O1 W
  13043.         (ai_abort "DDCOLOR"
    / c6 i: U# m- Z9 ]4 S
  13044.                   (strcat "Can't locate file AI_UTILS.LSP."
    1 M$ s) Y/ D4 P, e; s
  13045.                           "\n Check support directory.")))! O7 w! {+ h7 T7 T. n. s
  13046. 4 v5 R0 E- g: Y! x: Q4 \
  13047.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it. W1 \# N/ H! s2 j4 t) P" G
  13048.         (ai_abort "DDCOLOR" "Can't load file AI_UTILS.LSP"))! C: i5 ^* v. R/ T- _, B, p  ]  B# r
  13049.   )6 X$ {+ K. E- T0 W& ^
  13050. . f0 [" w; @4 u* G& m9 b3 \
  13051.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    , ]2 v8 o: B5 i$ q: C  Z
  13052.       (ai_abort "DDCOLOR" nil)         ; a Nil <msg> supresses
    / n& q2 R. B3 J: z1 U
  13053.   )                                    ; ai_abort's alert box dialog.
    % N) @/ Z: q  A% K. X7 o  S
  13054. ) v# l2 a4 u6 h! e! W$ N' v
  13055. ;;; ==================== end load-time operations ===========================
    - h( @) }# v# Y3 K' L
  13056. 1 x1 U% }( k6 R& Y2 X( v5 K- A
  13057. (defun c:ccc (/ co_oce clrx co_err co_oer lay_clr)
    6 O! D" l( \( X4 T- L8 i" h

  13058. . U: w7 w" r; y/ @& ]  T
  13059.   ;; Main Color function, called by setup code.
    3 j' c2 \2 J, [) `: f4 p' i
  13060.   (defun ddcolor_main()* W+ M2 Y  l$ b/ Y; v
  13061. ) D2 Z3 n$ v  F6 G4 N: @
  13062.     (graphscr)2 i% q" t- X0 R/ V' i) d
  13063.   * B' l  n* R/ n  l' n& d
  13064.     ;; Get the color of the current layer, for possible BYLAYER color swatch.( w* H# k7 b# L# C5 Z- F
  13065.     (setq lay_clr (cdr (assoc 62 (tblsearch "layer" (getvar "clayer")))))
    3 `* q5 O' P8 V7 A: B: @( g
  13066. 0 b# d6 E0 l! ~
  13067.     ;; Call the dialog here.../ _1 [, D& i" ^. o3 ^7 P5 S3 K
  13068.     (setq clr (acad_colordlg (cstoci (getvar "cecolor")) T lay_clr))% }. ]9 c. b5 H( j& l* `" U6 _$ ^

  13069. + r8 y' M; K8 A3 U' W) S
  13070.     (if clr, G1 w' |8 g9 x* H  s
  13071.       (setvar "CECOLOR" (citocs clr)))
    * L' @% j; v( N+ ~
  13072.   )% K5 ]$ @- e: H; f. D" m1 o

  13073. 8 s- W+ }9 l7 r9 G6 B
  13074.   ;;;
    $ w  X0 `  Y1 n& n. h
  13075.   ;;; CSTOCI -- Color string to color index
    ( z, j* |/ X% r( x2 m7 f
  13076.   ;;;   Convert an arbitrary case string into a color index./ \4 z* E! X$ `, Z9 I+ v
  13077.   ;;;   Returns nil if string is not a valid color., f8 }3 h$ t+ [: Q# C
  13078.   ;;;: U9 e: u7 M4 Z# f7 o3 ~1 c$ ^8 G
  13079.   (defun cstoci (str)
    + z5 b# t; F! R& \6 s7 L8 h/ C; K
  13080.     (setq str (strcase str)): I/ U4 F$ c4 C! s3 u  Z
  13081.     (cond. ~. J. h# H1 z
  13082.      ((= str "RED")        1)# }% a2 k; N0 V# |2 i2 g
  13083.      ((= str "YELLOW")     2)
    7 U$ g6 i8 B& ]8 \, o, m
  13084.      ((= str "GREEN")      3)
    * d' m& \  K) s) J7 T6 a
  13085.      ((= str "CYAN")       4)
    : P, k8 v& }. ]. o; E% @
  13086.      ((= str "BLUE")       5)
    ) n$ s' T0 B0 h6 ^
  13087.      ((= str "MAGENTA")    6)3 R2 d* z* {) q. K
  13088.      ((= str "WHITE")      7)
    2 m. K( @/ k' t8 A. A9 b
  13089.      ((= str "BYLAYER")  256)
    $ w9 I# s. e8 `7 ~
  13090.      ((= str "BYBLOCK")    0)
    / Z1 ]- A4 u( D
  13091.      ((= str "BY LAYER") 256)4 @& @; N" U6 j3 N- \9 c+ C
  13092.      ((= str "BY BLOCK")   0)
    ! V7 w) r3 V5 j6 y; j3 t
  13093.      ((and (< 0 (atoi str)) (> 256 (atoi str))) (atoi str))
    * J2 C7 f9 ?3 U0 b' k( q* o0 r
  13094.      (nil))9 K$ w; m0 r  _& f8 C$ g+ p8 `4 K
  13095.   ). t" u* L' o9 O' Q" |
  13096. , [/ E' x# b& U( N$ ?0 A

  13097. # w7 U; g% ^3 D" P! r& v, l
  13098.   ;;;! R# C6 g" m9 t7 x3 Z9 `9 f5 ?
  13099.   ;;; CITOCS -- Convert color index into standard color name.% R5 A5 s1 w0 k/ }
  13100.   ;;;    Will return the standard and logical color names as text
    , ~5 c: e% _1 ^0 [* Q3 S
  13101.   ;;;    strings.  Returns nil for out-of-range color indicies.
    / P9 a; v8 K  @; z9 c
  13102.   ;;;  ]4 E5 f' |9 V" ~9 r1 A
  13103.   (defun citocs(i)% n1 K/ c+ c: R# E9 S- ^
  13104.     (cond
      @1 I3 G5 }/ x6 }& W1 U9 }" T
  13105.      ((= i 0)   "BYBLOCK")/ w" V  D# {" L
  13106.      ((= i 1)   "red")# E. g2 U# R9 I% V( ?
  13107.      ((= i 2)   "yellow")
    2 [: P$ O* ?: q' `% V# j$ G
  13108.      ((= i 3)   "green")8 D5 P; P  _+ F
  13109.      ((= i 4)   "cyan")
    6 l# ~8 N+ N) P1 y3 G) [
  13110.      ((= i 5)   "blue")) `7 C: x8 ^4 i; y9 `7 U# t' y
  13111.      ((= i 6)   "magenta")
    - [8 }- z, X% C! g
  13112.      ((= i 7)   "white")
    ! l/ s- ]5 V+ |0 N: Q$ |
  13113.      ((= i 256) "BYLAYER")
    , x. {7 E+ ?& W7 d7 f
  13114.      ((and (< 0 i) (> 256 i)) (itoa i)), r1 S1 d% t, x4 y  _9 l7 w
  13115.      (nil))8 w# v( i# Y" q! a
  13116.   )
    - k4 W( y9 f* A; q/ H6 W3 w0 D- A

  13117. , C2 X4 x7 [" h. }! b4 z
  13118.   ;; Start of ddcolor  J6 a8 l; ]! {
  13119.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    8 o, N  g, P5 {, k
  13120.         old_error  *error*            ; save current error function
    $ e- M; |& \  `/ Q! o. I: j
  13121.         *error* ai_error              ; new error function% k( u& Q4 d0 [( w" _7 i
  13122.   )0 W9 A) [9 \% T' m; [# I+ P
  13123. 7 j1 ?: F( ?& X8 k1 C! q9 T
  13124.   (setvar "cmdecho" 0)# ~7 C% L! c! W6 ]) H
  13125. & o% i1 \- G# q( F$ z! c3 k
  13126.   (cond
    # t" D; Q: `! E; d
  13127.      (  (not (ai_trans)))                        ; transparent OK: R4 y# g( s4 @* t
  13128.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?
    5 H; a& l; Z9 p
  13129. & H4 F- L  O9 E$ B0 B$ \
  13130.      (t (if (and (/= 1 (logand 1 (getvar "cmdactive")))
    6 \7 y& O- ]' A# K+ ^
  13131.                  (/= 8 (logand 8 (getvar "cmdactive")))- _: U7 t8 x1 @. ]( m! w7 g
  13132.             )
    : k0 m/ n! ?: u* A
  13133.          (ai_undo_push)
    - f$ Q1 t0 C; E9 E$ Y8 j
  13134.         )
    & q) p" a5 A7 t; B, ]* ~( O# h

  13135. " i  }2 `2 x. c, g
  13136.         (ddcolor_main)                          ; proceed!
    . v. m* Y' ~% P8 Z3 n
  13137. 3 o9 {$ J$ k0 N; A2 Q. @
  13138.         (if (and (/= 1 (logand 1 (getvar "cmdactive")))2 D( R7 I( \# b, q  {& E! `% K
  13139.                  (/= 8 (logand 8 (getvar "cmdactive")))/ d' H1 f" m! c
  13140.             )" e; j  f9 l5 f8 a0 @$ _3 [  M+ h
  13141.          (ai_undo_pop)5 }# Q2 W' \) i* J' f# U
  13142.         )( _/ r- ]: r6 C
  13143.      )
    1 _% k9 N% k1 L; m; M$ c( V
  13144.   ): D- n3 P. j5 E
  13145. & n! k: q8 M2 w8 l
  13146.   (setq *error* old_error) # w: v0 E! \% R1 O
  13147.   (setvar "cmdecho" old_cmd): S6 i2 s1 ?: {! j7 [$ ]  l$ D
  13148.   (princ)% F4 a% m% z) E7 e; x6 J1 d

  13149. " `6 j# Y% D! K6 y2 n( C
  13150. ), ~8 X4 n( u5 d4 ~# m7 N
  13151. 4 N0 U) l/ w. c* ?3 a& _0 c
  13152. ;;;----------------------------------------------------------------------------& s$ l' T* K( `+ D6 L
  13153. 0 n& M/ v! z" G  `: K
  13154. (princ "  DDCOLOR loaded.  ")7 j" b8 p" u6 y9 q, |
  13155. (princ). i" _! Q' X+ i  h* H4 z. g, e# t3 l* h
  13156. " {# u3 {/ @4 W9 e7 I* G
  13157. ;;;--------------------------------------------------------------------------;
    1 g' }4 G, g1 u. O  r6 p0 h8 {
  13158. ;;;---------------Chon NHANH Nhieu Doi Tuong GIONG THUOC TINH----------------;
    ! ]0 M3 S: ]6 {4 h& w
  13159. ;;;--------------------------------------------------------------------------;$ L2 f8 e8 h1 U$ M3 ^8 e
  13160. ;;;   ssx.lsp
    ! q  R; n- v1 ~+ y8 j
  13161. ;;;   Copyright (C) 1990 by Autodesk, Inc.$ _0 r6 k3 A9 t% m6 F
  13162. ;;;   Copyright (C) 1991 by Control Systems, Inc.4 |0 d1 f4 t/ s: s4 b6 S1 _
  13163. ;;;
    ; Q0 P$ Y9 n: l. g# o
  13164. ;;;   Permission to use, copy, modify, and distribute this software and its
    , _5 R: f2 U1 {7 C
  13165. ;;;   documentation for any purpose and without fee is hereby granted.
    8 c: u( N: g- k3 l* X* Q
  13166. ;;;
    0 X7 i3 U& i5 g: j8 S* z" q) a8 a% j/ n- ^
  13167. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.5 H: J* j- A$ t: J% d; n9 s
  13168. ;;;   ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
    7 C: n. s/ V: X; g' u1 n
  13169. ;;;   MERCHANTABILITY ARE HEREBY DISCLAIMED.
    5 w3 K1 H' @9 R/ |- g8 T7 ?" Q6 m
  13170. ;;;4 e2 V/ j. C0 a/ X# J
  13171. ;;;   Larry Knott                        Version 2.0    7/18/88% ^% @/ \+ \9 I: e# w: _
  13172. ;;;   Carl Bethea & Jan S. Yoder         Version 3.0
    & m0 k3 U+ e4 ?  }+ I# k
  13173. ;;;   Enhancements to (ssx).
    4 T/ r$ y( ^* E9 r) h+ x& T* W
  13174. ;;;   15 March 1990
    & L  ]- ?* V- d8 p* R- [. A1 ~5 Z
  13175. ;;;6 E: U4 n! i6 o) W
  13176. ;;;   ARTIST Software, Inc               Version 4.0   December 1991' p7 D9 |" l6 w% x
  13177. ;;;   Modified for FLEXICON usage. If the variable FLEXVAR = 1,  ^. j: i' o0 Y; X6 b
  13178. ;;;   use Flexicon menus6 T; T/ ]3 z1 j0 L$ ]# V
  13179. ;;;
    $ z' h' L# o* p1 _
  13180. ;;;--------------------------------------------------------------------------;* m) _: n" o8 _* z" V% _, B. a( G
  13181. ;;; DESCRIPTION
    ( c  ]/ n  Z" P- n* j6 O
  13182. ;;;                              SSX.LSP                                  " y% r# W& @% K5 T" C
  13183. ;;;                                                                          
      b9 ]+ z* A9 U& \' Z
  13184. ;;;   "(SSX)" -  Easy SSGET filter routine.                                    
    % n5 z+ P! q3 d3 ]! Z
  13185. ;;;                                                                           
    ; z" b* N- h' }/ i. P+ c
  13186. ;;;   Creates a selection set.  Either type "SSX" at the "Command:" prompt   ( B3 U' p9 _4 r$ m2 q
  13187. ;;;   to create a "previous" selection set or type "(SSX)" in response to
    3 x: Z; r' m- O; B1 d% e
  13188. ;;;   any "Select objects:" prompt.  You may use the functions "(A)" to add # m+ w/ B+ t( `( @% c! j" p
  13189. ;;;   entities and "(R)" to remove entities from a selection set during
    ; D8 p& C6 h5 U1 [
  13190. ;;;   object selection.  More than one filter criteria can be used at a
    ' L3 z# B) i* c! E: z3 f
  13191. ;;;   time.         ( B6 [9 ?' b9 R: o4 ^) \
  13192. ;;;                                                                          5 T/ x! R6 N1 N1 S% S
  13193. ;;;   SSX returns a selection set either exactly like a selected' D* F, y/ ?$ X; p3 q8 U; N" d
  13194. ;;;   entity or, by adjusting the filter list, similar to it.
    * x- i' D( O" Z  q3 F$ Y" b
  13195. ;;;0 z( ^) J+ B+ E& d& d, _
  13196. ;;;   The initial prompt is this:, G$ n  a% T; R" [+ c# O5 l
  13197. ;;;   
    . }8 |+ U5 P' R
  13198. ;;;     Command: ssx
    - r; {0 l5 ~8 Q
  13199. ;;;     Select object/<None>: (RETURN)# _6 Z0 d3 C2 z  T3 d) d2 g
  13200. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector: ) Y+ L' c( g+ r1 A0 v" n9 \  [
  13201. ;;;   5 h; z. t3 O. S/ j5 _$ \6 a9 R
  13202. ;;;   Pressing RETURN at the initial prompt gives you a null selection
    & S/ |0 w! e$ O& Z9 [! i
  13203. ;;;   mechanism just as (ssx) did in Release 10, but you may select an " W- p5 N% `0 p
  13204. ;;;   entity if you desire.  If you do so, then the list of valid types + H" o* f0 _1 w6 t' [. F; w" c
  13205. ;;;   allowed by (ssget "x") are presented on the command line.0 V9 H1 c# o) t; N3 v( q
  13206. ;;;   3 P& `- R7 |+ _9 _" [- [
  13207. ;;;     Select object/<None>:  (a LINE selected)
    6 ?. t, N+ d4 ?" `; j$ f4 A
  13208. ;;;     Filter: ((0 . "LINE") (8 . "0") (39 . 2.0) (62 . 1) (210 0.0 0.0 1.0))
    ' @7 L) [5 F( H: @+ B
  13209. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector:
    ; P# Y$ E( u  V! C( t; ]8 }
  13210. ;;;   $ q6 t4 w( z% J+ d
  13211. ;;;   At this point any of these filters may be removed by selecting the
    * g2 [( ^+ O3 |9 z4 D/ p
  13212. ;;;   option keyword, then pressing RETURN.
    ! Z9 _. S/ V, Y/ u! X! C
  13213. ;;;   * J/ T- y" `2 B( L3 V  l" @0 A
  13214. ;;;     >>Layer name to add/<RETURN to remove>: (RETURN)
    5 Z1 z' f2 {$ d0 Z3 |2 R. v
  13215. ;;;         4 O! q2 D, F$ J( _# y" l7 D
  13216. ;;;     Filter: ((0 . "LINE") (39 . 2.0) (62 . 1) (210 0.0 0.0 1.0))
    - z0 O; Y, M9 a/ Q
  13217. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector:
      F: s+ J/ j4 G& q/ x
  13218. ;;;   
      G9 J1 W& O- a/ l( o1 c
  13219. ;;;   If an item exists in the filter list and you elect to add a new item, : N4 u, p2 _) F2 l
  13220. ;;;   the old value is overwritten by the new value, as you can have only
    3 e) \, B1 z0 _% n' F$ h
  13221. ;;;   one of each type in a single (ssget "x") call.
    7 S% t+ n5 O  \* B; h5 @% M
  13222. ;;;8 D% D. p! V, c" \; b: ^. O
  13223. ;;;--------------------------------------------------------------------------;
    * I7 N  \3 w. z
  13224. ;;;
    / f) O. o% ^' r0 ^+ \
  13225. ;;; Find the dotted pairs that are valid filters for ssget
    . b; ]# k$ }1 s0 Q. A! e1 U
  13226. ;;; in entity named "ent".% j5 O+ p2 {, c% e! L8 q
  13227. ;;;8 }% p" Y" m; W" A+ r8 S0 q! u# U
  13228. ;;; ssx_fe == SSX_Find_Entity( ]  j! a8 P# g5 k% v
  13229. ;;;
    * V2 @& A- }5 I3 _& H7 V* N
  13230. (defun ssx_fe (/ x data fltr ent)
    ; Y" Z+ X2 d/ Y6 R
  13231.   (if (and (= flexvar 1)(/= t2 "Pick"))" Z  \5 c* q$ C1 Y# j  G
  13232.    (setq ent nil)
    0 X, v5 O- _" S0 ^& Y( Y( [- L# k
  13233.    (setq ent (car (entsel "\nSelect object/<None>: ")))6 U. B2 T: P" `" g+ J' y
  13234.   ); o8 b# d  C4 d4 [* N. r" d; i# Q
  13235.   (if ent
    : |; z" k/ W$ j: d' j1 s5 \
  13236.     (progn
    % Z- x  X. H/ p3 C" S) V9 U% O
  13237.       (setq data (entget ent))
    + u' L( n, R- N( F
  13238.       (foreach x '(0 2 6 7 8 39 62 66 210) ; do not include 380 o8 B" E% n6 u
  13239.         (if (assoc x data)
    3 |9 ?4 l/ m( `4 u
  13240.           (setq fltr * K( G  H0 Z) o# y# Z4 z# q4 a
  13241.             (cons (assoc x data) fltr)
      t: W  [5 S/ Q4 D  I
  13242.           )' W0 z& X* f  {: z! k6 L6 f
  13243.         )
    ' K; ?2 E" ]( M% ~5 {. T
  13244.       )   
    + M" u- J0 f3 v; ]% ]5 H
  13245.       (reverse fltr)
    6 R/ q$ q4 w$ O
  13246.     )
    ! J5 X# ?, c4 g* x0 a* X* k* v
  13247.   )
    3 g- L/ i# y- G; ?
  13248. )
    4 Q5 c; f. w! V- t1 i% _
  13249. ;;;
    - W# P$ @# u8 S/ h( g
  13250. ;;; Remove "element" from "alist".
    % W. }, g& y( i4 I
  13251. ;;;
    0 i5 F4 B: w" m1 u5 t* j, D, g9 B
  13252. ;;; ssx_re == SSX_Remove_Element' a$ E7 ]4 Z. P7 K+ E
  13253. ;;;
    ' `2 C' D0 e$ d! \0 Q$ B( C/ _
  13254. (defun ssx_re (element alist)$ h( t% ^) W; Z& ]5 I" Q
  13255.   (append
    8 y5 L( O6 q: j; @, h( T" Z
  13256.     (reverse (cdr (member element (reverse alist))))1 I9 y% h3 p4 Z3 c$ K( g
  13257.     (cdr (member element alist))   6 W4 {% O& e# p0 a
  13258.   )
    " g7 n5 Q4 Z: E! _0 j8 m( S1 h, p/ b
  13259. )3 Q$ L& Y* F4 g& G# K/ X3 x0 l' A
  13260. ;;;
    2 \( \2 A4 ]2 M7 E
  13261. ;;; INTERNAL ERROR HANDLER
    % q  j, u# W& M$ }; I1 }( x4 q
  13262. ;;;5 b! X  T# P4 [( o7 A% \" ?: u0 C+ `
  13263. (defun ssx_er (s)                     ; If an error (such as CTRL-C) occurs: R1 b- I+ [6 r, p9 y/ t# \
  13264.                                       ; while this command is active...
      Y3 y2 d  O& B+ L: J
  13265.   (if (/= s "Function cancelled")( S9 N' X; ?! c% n
  13266.     (princ (strcat "\nError: " s))
    : q2 T9 E/ u# n0 z
  13267.   )
    ' m- M0 }) t) i5 b
  13268.   (if olderr (setq *error* olderr))   ; Restore old *error* handler& N) ?2 z' `9 q5 U  `3 a# O' `
  13269.   (setq flexvar 0)5 A0 w# C" O7 H/ x5 g2 R
  13270.   (princ)
    * H$ M  x# E" @6 }; {& S
  13271. )$ p/ C  K2 [; O+ [! A0 r# @5 w
  13272. ;;;
    # q8 M; {6 T$ _5 p& X! W0 J9 N
  13273. ;;; Flexicon call routine
    4 n/ A5 o7 U5 l* L, s
  13274. ;;;) e) Z2 d" z0 d6 r
  13275. (defun flexmnu (a)
    2 N0 s; ~# a; W; ?' D; H6 N$ ^# a
  13276. (if (= flexvar 1)* u6 A0 J  _+ y3 O/ U* X, o9 J" R
  13277.   (command "FLEXICON" (strcat "FLEX" a))
    3 {: }+ W; j9 s9 `! P( Z1 y, ?
  13278. )
    7 D' e) f, L5 z8 [: ?' \& X( @
  13279. )
    9 G, y2 ]1 v5 F/ e. w

  13280. / |7 D4 |! v* {  j' |
  13281. ;;;   # B" Q- _7 B+ U3 i; A
  13282. ;;; Get the filtered sel-set.# i; \' e5 l' a! y; ~
  13283. ;;;
    9 {4 b8 X! ~/ U8 Y- Q/ ?
  13284. ;;;: h6 E! I6 K6 H. ~: n0 K
  13285. (defun ssx (/ olderr): V/ H; l6 A, ~- N
  13286.   (gc)                                ; close any sel-sets            
    ; k7 i5 `/ i( H, }, o1 R3 ?/ ~
  13287.   (setq olderr *error*
    - Q/ {. d! R9 O2 E) }. W$ e( h
  13288.         *error* ssx_er ) b- z4 E" |# I+ a9 E% n/ ~' T
  13289.   )
    $ I$ t, W! }# a4 r
  13290.   (setq fltr (ssx_fe)) $ S% N! A: V8 E/ n! ]+ ~0 ]
  13291.   (ssx_gf fltr)
    # K/ q1 f/ z+ R9 w9 y
  13292.   (if (= flexvar 1), e& |! o* y3 {5 S( f6 e3 N! O& M1 a
  13293.    (progn  {  I( C* }$ p$ `
  13294.     (prompt "\n \n \nNow select the required EDIT command and (P)revious.")* P; l8 A  m+ P
  13295.     (flexmnu "EDIT")
    $ k" c( ]( l) F
  13296.    )+ n+ q5 O# [1 h& Q0 O9 v
  13297.    (command "p")
      M. m) V- `! O; o3 g
  13298.   ), l' [7 {! B* n7 v
  13299.   (princ)
    & X+ ]7 r5 _; P2 O5 ^
  13300. )4 b% r$ {5 D% d
  13301. ;;;
    & m2 ?& z0 b" I$ C  }6 Y" ~% }
  13302. ;;; Build the filter list up by picking, selecting an item to add,8 }! u5 c! `6 u
  13303. ;;; or remove an item from the list by selecting it and pressing RETURN.
    / O- w/ ~4 U; r3 `. B6 t# w: |
  13304. ;;;
    ; l: j  f/ S) x
  13305. ;;; ssx_gf == SSX_Get_Filters( m7 {' h3 c% F
  13306. ;;;& N; D5 I" g' v, I
  13307. (defun ssx_gf (f1 / t1 t2 t3 f1 f2)
    # p2 ^1 q+ N: {* Q) T
  13308.   (while 7 e) t8 c2 g* M+ w5 o
  13309.     (progn
    8 G2 H6 c* M! U( w/ [
  13310.       (flexmnu "SSX")* {$ n( U' z2 u0 L3 p( O, l
  13311.       (cond (f1 (prompt "\nFilter: ") (prin1 f1)))$ A; _1 O6 v  }2 F# }
  13312.       (initget * H1 M) M, t! t  Y' P3 h2 n6 V; \$ n
  13313.         "Block Color Entity Flag LAyer LType Pick Style Thickness Vector")
    & D# Z# y9 h) B3 T" k1 M5 ?% A# q. t+ w
  13314.       (setq t1 (getkword (strcat" A* ~+ h2 E- z7 K7 @6 ]; l
  13315.         "\n>>Block name/Color/Entity/Flag/"/ u3 V+ u0 Q- w6 Y
  13316.         "LAyer/LType/Pick/Style/Thickness/Vector: "))) 3 H$ a$ \) b  Z! q! R2 b+ X& f
  13317.     )
    7 {9 L/ m$ l; z9 q- p4 A
  13318.     (setq t2* @. h6 V1 E' l- z
  13319.       (cond
    6 {, c5 x# @/ b) I- T% F/ [
  13320.         ((eq t1 "Block")      2)   ((eq t1 "Color")     62)
    : o, `" @* U' o3 D
  13321.         ((eq t1 "Entity")     0)   ((eq t1 "LAyer")      8)  w. n! g; g- |3 i6 Z7 g% |
  13322.         ((eq t1 "LType")      6)   ((eq t1 "Style")      7)
    . ?. r; e# ?. h  C' P4 W  U
  13323.         ((eq t1 "Thickness") 39)   ((eq t1 "Flag" )     66)5 S( o4 E4 i8 g6 a* j
  13324.         ((eq t1 "Vector")   210)
    " x5 {) W0 {: v3 z
  13325.         (T t1)
    % w0 ?2 z1 z* D1 j
  13326.       )4 A$ a" r( \4 ~6 Q
  13327.     )& C; W7 v# p9 @; r/ S' T
  13328.     (setq t3, i$ U7 {& l5 y3 ?
  13329.       (cond! ^5 M) n: b) o" I$ C  c2 e# k
  13330.         ((= t2  2)
    3 Q+ j6 A* Z! x
  13331.          (if (= flexvar gtads 1)6 M! R- B- c6 J4 f4 O) ]+ P  z' z
  13332.           (progn
    1 J% T) }/ ^, E& v' h( H& U5 m
  13333.            (prompt "\n>>Block name to add/<RETURN to remove>: ")
    8 d: W) Z9 P8 \0 F
  13334.            (gttable "BLOCK")- r' Y' J1 R/ D- |7 S# C7 Z& w
  13335.           ); u( I' G' F& o* y
  13336.           (getstring "\n>>Block name to add/<RETURN to remove>: ")5 b% f2 M: M$ E7 H( J# ^1 f
  13337.          )
    & B/ e4 H! u. j9 m' A4 }7 \
  13338.         )8 M7 [2 }+ F' t4 X$ x9 L
  13339.         ((= t2 62)  (initget 4 "?")
    : A4 i9 p1 Z0 D* L
  13340.           (cond
    , Y$ n/ b# w. s7 `& ?4 t: n) E
  13341.             ((or (eq (setq t3 (getint
    ! N. n  i. K2 @( P. Y  y5 T
  13342.               "\n>>Color number to add/?/<RETURN to remove>: ")) "?") $ N9 A8 C, k7 C6 P4 k. l. O
  13343.               (> t3 256))
    1 x/ x8 R  N* v& c- Z: z8 {
  13344.               (ssx_pc)                ; Print color values.0 s+ w& x& L& @* M
  13345.               nil& f7 X) z: V/ y
  13346.             )
    + G$ B" p' F/ K
  13347.             (T
    9 \2 m2 P# I2 d$ T
  13348.               t3                      ; Return t3.
    ' ^3 p, g& C2 ^" [
  13349.             )1 L5 A" e5 I- h" D! O& t  K- T$ G6 Z
  13350.           )4 P/ r" B0 T+ x9 X
  13351.         )
    ' I- x/ g% H" V
  13352.         ((= t2  0) (getstring "\n>>Entity type to add/<RETURN to remove>: "))9 L' M0 z/ h- N" v( d+ v& c7 E; p
  13353.         ((= t2  8)
      @7 [8 H$ a/ [5 M
  13354.          (if (= flexvar gtads 1)
    " \6 E+ Z8 \0 E1 K6 \
  13355.           (progn
    & U) T4 @! l% t, s* M0 s) D$ b
  13356.            (prompt "\n>>Layer name to add/<RETURN to remove>: ")
    . j6 r* E  {' ^) I. X/ a
  13357.            (gttable "LAYER")/ r* ?7 A# @4 T" i; k& J, q
  13358.           )
    + x' _* Q& ?/ U2 Z) ~
  13359.           (getstring "\n>>Layer name to add/<RETURN to remove>: ")
    . h) q6 e; X% o5 Z" @3 p
  13360.          )
    / Y0 \6 N8 a; e3 o* Y# e
  13361.         )! X; n: a5 o. b5 G( m
  13362.         ((= t2  6)
    " a2 N0 x% W  u9 w+ {  q  Q, M% F
  13363.          (if (= flexvar gtads 1)
    / Y' }/ U: S9 w- K! e
  13364.           (progn
    1 I0 i0 Q  n4 C, Q& q5 c  S
  13365.            (prompt "\n>>Linetype name to add/<RETURN to remove>: ")0 ~' g) T7 U/ u- U* K. J1 s* u
  13366.            (gttable "LTYPE")( \) z/ c0 u% J3 Q
  13367.           )
    ! @& m/ f  J- }* S
  13368.          (getstring "\n>>Linetype name to add/<RETURN to remove>: ")$ k2 @7 {( _3 W
  13369.          )8 z8 e, q) O" v$ Z2 G; a) c, Z9 A. U
  13370.         )
    8 S& e: d) e2 q$ t" v( i3 Q: M# f: U
  13371.         ((= t2  7)
    / x$ |$ r9 h- `2 j
  13372.          (if (= flexvar gtads 1)( N2 ]3 Q8 h) Z
  13373.           (progn
    & A* X' \' E' Y" V% x
  13374.            (prompt "\n>>Text style name to add/<RETURN to remove>: ")
    2 F4 J& c  w( @9 F+ Q) Z5 K
  13375.            (gttable "STYLE")# C3 X: r8 ^- ~3 k; S
  13376.           )
    : ~8 s$ N" b5 c
  13377.           (getstring "\n>>Text style name to add/<RETURN to remove>: ")
    7 v6 x! W) F7 r: }7 i0 o
  13378.          )
    4 Q# I  e) ]5 b' \
  13379.         )
      y% S  ]" q! f! d
  13380.         ((= t2 39)% I! c: s, n9 Q9 \6 o/ n8 d
  13381.            (prompt "\n>>Thickness to add/<RETURN to remove>: ")
    ( t8 t5 ]$ ~4 u6 M' M2 n
  13382.            (if(= flexvar gtads 1)(gtfnum"Thickness to add:")(getreal))) }# B; i$ [+ ]1 i9 o
  13383.         )
    - \1 V6 H& C: ^6 z# i& P6 r! O' j- J! C
  13384.         ((= t2 66)  (if (assoc 66 f1) nil 1))6 h, O+ F: E6 B' e$ K: l  [5 o4 e
  13385.         ((= t2 210)
    * x; L: j- j: R0 i
  13386.           (getpoint  "\n>>Extrusion Vector to add/<RETURN to remove>: ")2 G) o8 L: x( U" ^1 {+ X
  13387.         )+ L& J$ ~* h5 ^3 K1 i
  13388.         (T          nil)3 c0 M0 o& x0 O
  13389.       )
    4 Z' A3 b8 m( K
  13390.     )
    2 t3 k5 T0 l6 i
  13391.     (cond
    + \: D& P! x, B+ J
  13392.       ((= t2 "Pick") (setq f1 (ssx_fe) t2 nil)) ; get entity
    # K2 l/ |; C( T1 U
  13393.       ((and f1 (assoc t2 f1))         ; already in the list: ]1 F2 U( Q* @9 z
  13394.         (if (and t3 (/= t3 ""))
    , N; L4 G4 h; ~0 U+ ?, ?) t
  13395.           ;; Replace with a new value...            
    6 t; Z( O9 M  K: n5 `! m
  13396.           (setq f1 (subst (cons t2 t3) (assoc t2 f1) f1))
    ) d3 ]0 j' I: V  |
  13397.           ;; Remove it from filter list...* a9 U; |$ k  K
  13398.           (setq f1 (ssx_re (assoc t2 f1) f1))
    7 }, l' `6 C$ o. h3 x' x$ N' l
  13399.         )  ! p4 P6 Q2 n4 R8 u' V& I; ?
  13400.       )% l; f+ {% {; Q3 U' P
  13401.       ((and t3 (/= t3 ""))* M( V1 r0 a' ~
  13402.         (setq f1 (cons (cons t2 t3) f1))8 \7 p( F- q% m% L
  13403.       )
    0 v. z9 ^2 ^+ \  k! L+ o
  13404.       (T nil)% ]6 V' r8 L. a' b4 P5 r: k
  13405.     )) L) ~+ ]  f* C: ~
  13406.   )
    % f3 e( q2 y9 N  V. h  T
  13407.   (if f1 (setq f2 (ssget "x" f1)))% }  G* \0 w+ g6 s, X5 x
  13408.   (setq *error* olderr): O! b5 z. \  i  `
  13409.   (if (and f1 f2)
    # g* X- O) {& k- t8 R  \# s4 [
  13410.     (progn
    $ [9 V: x- B( f
  13411.       (princ (strcat "\n" (itoa (sslength f2)) " found. "))
    9 ^8 e0 z# V! |/ a6 y8 b
  13412.       f2
    2 U+ N2 ?2 b( Q# [
  13413.     ). [- i/ ]8 c/ c9 P) H3 R
  13414.     (progn (princ "\n0 found.") (prin1))
    : }5 d7 A8 N0 |% w( O1 B. g
  13415.   )
    & H2 R* p' p) C  D- d! J
  13416. )
    , H' s8 a2 K( k0 v( [: E' g5 q
  13417. ;;;% }2 Y5 {* B' L" X
  13418. ;;; Print the standard color assignments.1 u& z, N9 {8 K3 l! f- j3 k
  13419. ;;;
    $ Z5 l6 U4 O6 z0 [- k6 ^
  13420. ;;;+ r) ]9 d4 ]4 T7 [
  13421. (defun ssx_pc ()- w# i5 t2 s2 k! R
  13422.   (if textpage (textpage) (textscr))2 M* K( H/ O/ u  g5 K
  13423.   (princ "\n                                                     ")  V- m$ K& Y+ t* m9 C( \
  13424.   (princ "\n                 Color number   |   Standard meaning ")
    ( x0 M/ t& ?' O! K- I& }7 Z. S
  13425.   (princ "\n                ________________|____________________")
    , U5 a. g5 Y+ C  l9 N, }4 F
  13426.   (princ "\n                                |                    ")
    2 R7 I, X2 Z! [3 A3 |
  13427.   (princ "\n                       0        |      <BYBLOCK>     ")$ @' ]% p5 a8 H4 d+ a
  13428.   (princ "\n                       1        |      Red           ")
    & I' E! j: d& R3 W4 a* `6 f3 X, Q  F
  13429.   (princ "\n                       2        |      Yellow        ")& l  V; `% Z2 _4 c& T2 ~2 n5 P
  13430.   (princ "\n                       3        |      Green         "); {+ i0 b  g% N  o6 A( b4 ]
  13431.   (princ "\n                       4        |      Cyan          ")
    * G& L  F& N. m2 V) m$ Y- d5 ?
  13432.   (princ "\n                       5        |      Blue          "). N# j' h4 w& O; O8 |$ k" M
  13433.   (princ "\n                       6        |      Magenta       ")
    ( t  @! |/ I. t; i5 X3 N
  13434.   (princ "\n                       7        |      White         ")( O) Q1 ]) j- H% W
  13435.   (princ "\n                    8...255     |      -Varies-      ")
    . K( G7 P) k# ^9 i
  13436.   (princ "\n                      256       |      <BYLAYER>     ")
    % g( g# V* D$ L% ?) p$ l6 B
  13437.   (princ "\n                                               \n\n\n")( h3 D4 a. `" m* M: b# t; R
  13438. )
    - ~% L* z; V7 w; l# O. ~; p; `
  13439. ;;;: w! e1 F; R; l" V
  13440. ;;; C: function definition.
    1 H% R) ?* i$ Z: j4 u: P
  13441. ;;;( \6 v% j: G( q8 Y. }3 h' ~
  13442. (defun c:ssx () (ssx)(princ))( }6 V) O. u3 w  b
  13443. (princ "\n\tType \"ssx\" at a Command: prompt or ")8 r* e/ `5 w& n1 ]  ~
  13444. (princ "\n\t(ssx) at any object selection prompt. ")
    & k( W. j  u" m4 z9 X
  13445. (princ)) v' ~7 l7 S, K/ J; E$ n7 l
  13446. ) T* G+ B5 j2 s# L$ o1 {
  13447. ;;;--------------------------------------------------------------------------;' n1 x7 v6 q( }8 ?1 e; C
  13448. ;;;--------------------------------------------------------------------------;
    8 H4 i8 _7 ^: F: x  S, n+ L
  13449. ;;;--------------------------------------------------------------------------;$ i2 C! k; T* K% M2 A2 z( ?% n) N/ H
  13450. (defun S::STARTUP (). i5 E  g" ^+ n5 Q3 N* W7 q
  13451. (setvar "cmdecho" 0)
    ! w0 |6 n' J. z+ e. T7 [( b. H
  13452. (setvar "cmdecho" 1)  e: B3 T1 ~9 o0 B$ j
  13453. (setvar "LTSCALE" 10)
    & u+ G# Y9 ^/ Q

  13454. * `* G. @* \$ z6 j/ Q# ^8 I+ p
  13455. ;(command "_load" "chenKH.fas")5 o2 c! `3 a3 [( Y% A. z2 L
  13456. ;(command "_load" "ctcot.fas")* i$ {) n: |, b
  13457. ;(command "_load" "damdoc.fas")
    * g1 m7 q$ s' s# I4 x- X
  13458. ;(command "_load" "ghichu.fas")
    % b) p0 b. W/ |8 c" F4 U
  13459. ;(command "_load" "hamtutao.lsp")3 ^2 U. k% q; w$ A
  13460. ;(command "_load" "KHOITAO.fas"), ^: o" K% J; W* Z
  13461. ;(command "_load" "KHthep.fas")8 K( R! V6 D: k2 c% H
  13462. ;(command "_load" "mbmong.dcl")
    ( j7 @) [- T4 ^$ P/ y6 u4 U
  13463. ;(command "_load" "mbmong.fas")
    ( H. s$ c) H/ ]+ g- \! h. z
  13464. ;(command "_load" "mccot.fas")$ f/ v6 _1 x$ W. k+ c
  13465. ;(command "_load" "mcdam.fas")/ b& p2 j& H/ L0 D3 ^, `0 y
  13466. ;(command "_load" "mcmong1.dcl")
    & H# Q' m8 S* c6 Y$ h/ N
  13467. ;(command "_load" "mcmong1.fas")
    4 I0 G# m+ F2 m
  13468. ;(command "_load" "mcmong2.dcl")
    ; @# B# V: k2 n( Y
  13469. ;(command "_load" "mcmong2.fas")4 J9 D* |  Z) L( L
  13470. ;(command "_load" "mcmong3.dcl")/ j4 E: N6 u, s3 o
  13471. ;(command "_load" "mcmong3.fas")
    % C7 L( A  H- O( F$ s
  13472. ;(command "_load" "mcsan.fas")
    : f2 ~' p& H# b0 F! G( B! O; ^
  13473. ;(command "_load" "thepdai.fas")( V9 H# _8 w) a5 ?* H
  13474. ;(command "_load" "thepdoc.fas")% h: S& A$ R- m
  13475. ;(command "_load" "thepmb.fas")
    % m+ k" B3 m/ f1 Y& |$ ?& t
  13476. ;(command "_load" "thepphbo.fas")
    ( X. J# u4 R; t7 v
  13477. (command "_script" "thongso.scr")3 l: O: `& D* Z) t  v7 S% s
  13478. ;(command "_load" "thongso1.dcl")
    8 {) @0 g/ @) _
  13479. ;(command "_load" "thongso1.fas"), s" }' U3 f" i, S. b; P6 d7 y
  13480. ;(command "_load" "thongso2.dcl")) v& A, W  x0 f) ~3 r/ w
  13481. ;(command "_load" "thongso2.fas"): ^* Y2 K& P6 [3 ]
  13482. ;(command "_load" "tietdien.fas")
    / G) Z: O8 }/ V
  13483. ;(command "_load" "vehan.fas")* l/ l/ ?) N0 \1 k* x* l
  13484. (command "_load" "phamDuy782006_TKT.lsp")% a4 V0 z, Q7 ~; R1 j2 S
  13485. (command "_load" "phamduy782006ganhtd.lsp")
    ) N- H4 V' a  ]! l
  13486. (command "_load" "phamduy782006ganhtds.lsp")
    8 b5 y( r$ Z& X. k5 C" O- v- y$ D
  13487. (command "_load" "phamduy782006htd.dcl")/ l; _- N7 R5 E* b: M: N
  13488. (princ)4 p/ o; ?& q# }: ~  K9 R  e
  13489. )
    & ]* G+ K: D; }+ L3 r9 ]

  13490. 7 m5 }6 e: D  V) k
  13491. ;; Silent load., J6 w2 v2 j! W7 l& a
  13492. (princ)
    , L# k; K2 K5 }. ^' T4 V. m& q
  13493. - Q" B" L5 n& h7 H
  13494. . V4 |9 z0 o) {* p" \- F
  13495. ;; Silent load for the Express Tools.
    5 t& }) @. \: q3 U2 R
  13496. ;; Altering this line will affect Express Tools functionality+ g4 h/ Z# Z& c' s# V+ X
  13497. (load "acettest.fas" (princ))
    + @# n5 I9 V; M$ l' G3 G
  13498. �32
Sao chép mã

! _* z/ G, C( C00st Cách Thêm Menu & Lisp Vẽ & Fonts Chữ mở Gõ Chữ Administrator để Gõ
- i: x( ]9 m; a) }

2025-04-21 Plot.jpg (70.6 KB, Lượt tải về: 66)

2025-04-21 Plot.jpg

2025-04-21 Text Style.jpg (42.87 KB, Lượt tải về: 57)

2025-04-21 Text Style.jpg

2025-04-21 Layer.jpg (26.81 KB, Lượt tải về: 67)

2025-04-21 Layer.jpg

2025-04-21 AutoCAD Message.jpg (8.58 KB, Lượt tải về: 56)

2025-04-21 AutoCAD Message.jpg

Screenshot_20220406-091212_Facebook.jpg (306.88 KB, Lượt tải về: 48)

Screenshot_20220406-091212_Facebook.jpg

00st Cách Thêm Menu &amp; Lisp Vẽ &amp; Fonts Chữ mở Gõ Chữ Administrator để G.jpg (249.66 KB, Lượt tải về: 56)

00st Cách Thêm Menu &amp; Lisp Vẽ &amp; Fonts Chữ mở Gõ Chữ Administrator để G.jpg

Untitled-1 Da Xong Trump Putin 0 Hoi Xong Chua copy.jpg (299.44 KB, Lượt tải về: 43)

Untitled-1 Da Xong Trump Putin 0 Hoi Xong Chua copy.jpg

RUN-2000.zip

1.11 MB, Lượt tải về: 4, Tải điểm: Thưởng -2 điểm

Zip






Chào mừng ghé thăm Thư viện xây dựng: Tiêu chuẩn xây dựng- Văn bản- File mẫu- Sơ đồ- Quy trình- Phần mềm xây dựng (https://xaydung360.vn/thuvien/) Powered by Discuz! X3.2