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. ********************************************************************************
    ! {3 m/ n. d+ V' l/ c0 P
  2. *             ACADLISP FOR AUTOCAD R.14 -> AUTOCAD R.2012                      *
    + V7 a) B! H: @1 H) S4 r. Y9 t
  3. *         Tran Ngoc Thang DHXD-HaNoi41 from years 1999 -> 2015                 *
    7 m1 c) i$ ^9 U: n3 U) z
  4. *                         Suu tam & Soan                                       *, k) }/ m7 o* X# e' _
  5. ********************************************************************************
      O. ]/ O  g' X. T* }
  6. - P: E' _( K$ d, q. k4 Z
  7. ; Next available MSG number is  104
    . t9 B" p1 n8 i+ l; G- n
  8. ; MODULE_ID ACAD2000doc_LSP_
    / x2 o1 P$ l9 V- F1 P9 A
  9. ;;;    ACAD2000DOC.LSP Version 1.0 for AutoCAD 20001 |6 p+ H" C. b0 g
  10. ;;;
    7 d4 p8 G: l$ t
  11. ;;;    Copyright (C) 1994 - 1999 by Autodesk, Inc.
    0 N8 g5 i+ t  {+ T9 v0 _+ d
  12. ;;;
    ) K; q# J! U$ z; ~
  13. ;;;    Permission to use, copy, modify, and distribute this software* Q3 W! `- h6 f$ h
  14. ;;;    for any purpose and without fee is hereby granted, provided6 c7 ]* K0 E* Z$ u. i8 |5 P
  15. ;;;    that the above copyright notice appears in all copies and
    * Y% \" Y$ ]+ r3 W* [
  16. ;;;    that both that copyright notice and the limited warranty and
    , m2 G8 ^! n9 ?: D: x' c1 u) _
  17. ;;;    restricted rights notice below appear in all supporting
    - r# Q6 V' J' ?0 e
  18. ;;;    documentation.
    ) D2 A6 F$ p' f: ^* T0 I
  19. ;;;
    , W6 o- @6 h$ K- P& D5 [
  20. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.4 S- |6 v4 q7 X& c6 H
  21. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    2 f* j/ [" M7 a# [+ A) _6 D
  22. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.' O& `% L6 j- w$ u! Q
  23. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE) V# N! M1 b: B$ q
  24. ;;;    UNINTERRUPTED OR ERROR FREE.
    ' Z. M) q6 K7 x
  25. ;;;
    : F9 J- o. |( E
  26. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to
    7 Y% P1 y, y5 T  m- c
  27. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    $ M1 a4 b0 V8 Z8 n  z
  28. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    ! O, ~5 U+ t7 q% W, |3 r4 J+ L3 q
  29. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    ; w- I& w0 c5 N$ J; \4 S" L
  30. ;;;
    $ R& e: h2 i6 O+ j( i) K6 Z: ~
  31. ;;;.5 g! |* [' l5 e6 n8 M+ t/ h
  32. ;;;
      I% S6 Y, E0 n) S4 x( q, V
  33. ;;;    Note:
    $ ]+ W& I+ N# L# v. Z. U
  34. ;;;            This file is loaded automatically by AutoCAD every time
    $ T, z, |" _  n6 H
  35. ;;;            a drawing is opened.  It establishes an autoloader and
    6 x) L' N" Z1 B' D
  36. ;;;            other utility functions.
    3 ^& \. X  `0 j7 L1 T
  37. ;;;
    " X  D9 L, Q3 g: B) K, b2 L
  38. ;;;    Globalization Note:   
    6 H* D5 \, u8 t- {6 b
  39. ;;;            We do not support autoloading applications by the native
    / L) m1 r; F) F8 ]
  40. ;;;            language command call (e.g. with the leading underscore
    . P' O# W. t/ q7 R! K4 [
  41. ;;;            mechanism.)8 p% y, \$ [' O# n
  42. ! |9 r+ ]% h* a) O1 A9 w2 \

  43. 2 P/ e/ S4 Y& j2 D! V- I  G! E
  44. ;;;===== Raster Image Support for Clipboard Paste Special =====) Q" p3 y# a( ?: u1 h/ s
  45. ;;
    7 ~. p% v4 }5 d
  46. ;; IMAGEFILE
    : j( o/ p- U+ Q; j
  47. ;;
    6 z' c% G& D2 q1 n( m
  48. ;; Allow the IMAGE command to accept an image file name without
      K- d7 E+ \) ?8 ?- Z. ?
  49. ;; presenting the file dialog, even if filedia is on.1 P0 G; U: I3 |% m
  50. ;; Example: (imagefile "c:/images/house.bmp")# A* Z5 z0 k$ ~8 O2 H" O1 ^3 G' \1 A9 ^
  51. ;;4 g+ s- ~$ w0 X3 [( j4 T
  52. (defun imagefile (filename / filedia-save cmdecho-save)2 o3 J: l6 x; w
  53.   (setq filedia-save (getvar "FILEDIA"))' ?+ c  d3 f; W  y0 f
  54.   (setq cmdecho-save (getvar "CMDECHO"))
    ( Y- d3 ]% \" Q/ x# y: P3 j
  55.   (setvar "FILEDIA" 0)2 [  C! l. _: T) }) N. ^1 W
  56.   (setvar "CMDECHO" 0). v$ J/ o/ t. ?1 R' V
  57.   (command "_.-image" "_attach" filename)) h# ?) l8 u/ ?% F$ m
  58.   (setvar "FILEDIA" filedia-save)
    9 o% Y. L9 H1 [
  59.   (setvar "CMDECHO" cmdecho-save)) e2 K, S9 F: a3 @  F! W9 v6 @
  60.   (princ)% i2 k  V' y3 s
  61. )
    : j# U5 S$ N9 Q! l7 U; X

  62. 2 P/ o  I: j: e% E$ k7 u
  63. (defun c:zx () (command "zoom" ".5x"))9 K( I) U2 j7 ~( k9 ~% K+ R6 T+ k
  64. (defun c:zz () (command "zoom" "p"))
    7 x+ {2 U# m/ S% \$ U5 D, ]
  65. (defun c:za () (command "zoom" "a"))
    ; P  h; c9 ^: Z
  66. (defun c:zd () (command "zoom" "d"))' {) v5 Y. v& V+ y% @
  67. (defun c:ze () (command "zoom" "e"))
    # U$ g! k8 g) Y# s. E5 {% t9 c
  68. (defun c:zr () (command "zoom" "" ""))/ `% k" u4 O( |1 K8 c# R
  69. (defun c:vv () (command "ucs" "v"))
    - d+ W8 F4 N, u
  70. (defun c:co () (ssget) (command "copy" "p" "" "m"))
    2 ^/ F5 Q# v  n. S7 y' k
  71. (defun c:c () (command "circle"))2 P1 n) @( P: r: a5 W. P
  72. (defun c:rt () (command "rotate"))
    ! i2 k: n- e. ^, t/ j+ m5 t. ^
  73. (defun c:3q () (ssget) (command "_rotate3d" "ANGDIR" "value" pause (princ)))- m4 i- q' c$ R8 }9 Z
  74. (defun c:30 () (ssget) (command "rotate" "p" "" pause "30"))
    : n7 V. T% I& {0 ]1 K
  75. (defun c:-30 () (ssget) (command "rotate" "p" "" pause "-30"))
    * w) ~$ ^& O; g5 W6 ?6 D) K
  76. (defun c:45 () (ssget) (command "rotate" "p" "" pause "45")), h& x+ _6 U( z' O& w' @
  77. (defun c:r5 () (ssget) (command "rotate" "p" "" pause "5"))
    * j. z1 P9 m- P5 D4 {% a
  78. (defun c:60 () (ssget) (command "rotate" "p" "" pause "60"))
    $ h0 q2 P0 Q. {' T+ {/ o' J: y! F
  79. (defun c:-60 () (ssget) (command "rotate" "p" "" pause "-60"))
    . F+ F6 b, _( T0 _5 w
  80. (defun c:90 () (ssget) (command "rotate" "p" "" pause "90"))
    + b, c* d! h' N8 @& G0 G
  81. (defun c:180 () (ssget) (command "rotate" "p" "" pause "180"))
    # M+ c5 Q5 L) J7 x" p$ `6 S
  82. (defun c:-45 () (ssget) (command "rotate" "p" "" pause "-45"))
    ' I1 r: E% J, j6 t
  83. (defun c:-90 () (ssget) (command "rotate" "p" "" pause "-90"))
    5 H1 h- [4 }9 a: m
  84. (defun c:md () (ssget) (command "mirror" "p" "" pause pause "y"))/ `! W7 t4 o! R' ^) {; Y! g
  85. (defun c:fd () (command "find" "p" "" )(princ))(princ)
    / L- p& {( o! @! D6 k6 k

  86. $ h4 H; h4 e2 M$ J# B4 O3 h
  87. (defun c:romantdim () (command "-style" "ROMANT-DIM" "romant,vnh.shx" "200""1""0""n""n""n"))(princ), _# G, B7 E, d* V$ M
  88. (defun c:romantext () (command "-style" "ROMANT-TEXT" "romant,vnh.shx" "200""1""0""n""n""n"))(princ)# C. t  `9 T) {: g! v# b
  89. (defun c:vnhelvthuong () (command "-style" "VNHELVLT-Thuong" "vnhelv,vnh.shx" "500""1""0""n""n""n"))(princ)
    8 J! S$ [7 P" h* I- P
  90. (defun c:vnhelvhoa () (command "-style" "VNHELVLT-Hoa" "vnhelvh,vnh.shx" "500""1""0""n""n""n"))(princ)
    ' ^! K' E) R2 m  c  T- ~
  91. (defun c:truc () (command "-style" "TRUC" "impact" "0""1""0""n""n""n"))
    ; e: Y+ l: M) |  G9 X
  92. (defun c:chu () (command "-style" "VERDANA" "verdana" "200""1""0""n""n"))
    ) q( O( D, h0 R; [4 I5 s( [
  93. (defun c:cot () (command "-style" "COTES" "verdana" """1""0""n""n"))4 R" E* G( ^% M4 S, F

  94. $ o- d& D" v+ L1 f) g
  95. (defun c:an () (command "-style" ".AVANT" ".vnavant" "200""1""0""n""n"))
    7 ^4 p7 C- k: b8 H4 i, Y
  96. (defun c:ah () (command "-style" ".AVANTH" ".vnavanth" "200""1""0""n""n"))! ?  ?0 \, L7 {$ d% y8 Q
  97. (defun c:ha () (command "-style" ".ARIALH" ".vnarialh" "200""1""0""n""n"))& F8 a% R* U' P! f7 O) N6 y4 ~
  98. (defun c:na () (command "-style" ".ARIALNARROWH" ".vnarial narrowh""1200""1""0""n""n"))
    0 i& q6 Y+ Q2 j- y" a& V
  99. (defun c:vn () (command "-style" ".VNTIME" ".vntime" "200""1""0""n""n"))
      {) P# a. z5 Q% ]. L
  100. (defun c:vh () (command "-style" ".VNTIMEH" ".vntimeh" "200""1""0""n""n"))
    3 P: r/ H0 d: i% E
  101. " ]- i0 X* ]+ s$ t
  102. (defun c:ps () (command "PSOUT" "CorelDraw-import-Photoshop" "W"))(princ);export the current view of a drawing as an EPS file
    $ B4 }$ v( t- |  [  V# Y) s
  103. : v% i, l  y, S
  104. ;free lisp by cadviet,cd2k446 C# G/ y5 m+ M, g8 c0 J  c
  105. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
    7 F  Z# D) K% j/ B6 i+ [) V
  106. (defun c:FTEXT (/ ent tstyle )0 j0 J! P# z" G5 r3 m7 Z# |$ u8 Q
  107. (command "undo" "be")+ q% j) R6 V. [8 g+ q
  108. (setq ent (entsel "\n Pick text :"))
    : c# i3 z. S6 G
  109. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    4 \. Q% ^" @# c
  110. (command "STYLE" TSTYLE "romant.shx,vnh.shx" "0" "1" "0" "N" "N" "n")
    1 u! L0 z2 ]- f2 V6 b: Y
  111. (setvar "TEXTSTYLE" Tstyle)/ f0 ?- f! v/ e) D
  112. (command "undo" "end")$ N3 X; D4 w& p) ~, U& D. T0 p
  113. )
    9 v0 l0 L+ [+ ~( u. G0 G
  114. ;Cam on cadviet nhieu 27-11-2023 04h15p36s (thanks cadviet)8 z5 N' l: a: y
  115. 4 U4 @  Y) ?4 [( G
  116. ;free lisp by cadviet,cd2k44
    9 B- p7 Z7 l) L8 P
  117. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830
    ! T6 j! c5 b& N* Y
  118. (defun c:Fvnh (/ ent tstyle )
    , @" {( u" `2 H
  119. (command "undo" "be")' \3 Y6 o8 ~/ q9 a) J" y2 \1 W. L, n
  120. (setq ent (entsel "\n Pick text :"))
    - Y5 _+ W& ]2 F" r4 h
  121. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))3 k, j3 `- H6 e- W9 k# ~
  122. (command "STYLE" TSTYLE "vnhelvh.shx,vnh.shx" "0" "1" "0" "N" "N" "n")
    8 k3 f( v* f) r# F* j6 U
  123. (setvar "TEXTSTYLE" Tstyle)' C8 f5 M+ O5 [* g
  124. (command "undo" "end")
    4 \0 H( z' d+ I# T- R/ F6 n
  125. )
    2 {* A/ a6 j+ H

  126. * E7 C* V: v+ E0 e2 d
  127. ;free lisp by cadviet,cd2k44
    3 N2 |: g8 T% y, Y
  128. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=538308 U. a- \$ y6 K% t
  129. (defun c:Chbg (/ ent tstyle )- ?, W) y! B- \0 V! B$ c1 i, a
  130. (command "undo" "be")
    " o: ^- h1 c* e
  131. (setq ent (entsel "\n Pick text :"))
      d% H" j, p6 w' d* l1 `
  132. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    9 z+ E1 r1 m+ x- T3 c
  133. (command "STYLE" TSTYLE "chhbg.shx,vnh.shx" "0" "1" "0" "N" "N" "n")
    2 w( B1 V$ a$ _' M
  134. (setvar "TEXTSTYLE" Tstyle)" H7 N9 T: |. J+ _( i' u
  135. (command "undo" "end")
    2 {8 v1 b2 k: o; _/ u7 O
  136. )7 g6 k& n2 Y. |
  137. ; Y! t) J7 j+ T" i, \- _' m
  138. ;free lisp by cadviet,cd2k44+ z& S' u  r: N. @
  139. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830% A3 j8 A8 S/ `( W5 |2 Q5 n4 S( }
  140. (defun c:Chsm (/ ent tstyle )5 z. I" M- B6 c; A7 D" y
  141. (command "undo" "be")
    . H- L% x: @3 w! i/ T
  142. (setq ent (entsel "\n Pick text :"))1 a! m2 z' c) p" v2 z! u! }
  143. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))) z/ P3 V- @) Q  g/ o
  144. (command "STYLE" TSTYLE "chhsml.shx,vnh.shx" "0" "1" "0" "N" "N" "n")
    5 F9 c4 u- q/ O- R* b* Q% A
  145. (setvar "TEXTSTYLE" Tstyle)
    $ Y$ a; Z3 ~; @" L, V' f5 j
  146. (command "undo" "end")
    $ [% m0 b0 H" @
  147. )
    % K' T0 C; X* k

  148. ; f7 T9 ]  Y, F  }
  149. ;free lisp by cadviet,cd2k44/ P! A3 {9 ~0 `- J* Q2 p
  150. ;link bai viet http://www.cadviet.com/forum/index.php?showtopic=53830. Y5 n. c* ^! H. F/ q
  151. (defun c:Fttf (/ ent tstyle )" d& x6 m  v- C
  152. (command "undo" "be")3 {" h: M' X1 R9 I
  153. (setq ent (entsel "\n Pick text :"))
      @% O9 \4 o, ?6 d2 S* e
  154. (setq TSTYLE (cdr (assoc 7 (entget (car ent)))))
    / d5 G: S! k4 M2 T4 x
  155. (command "STYLE" TSTYLE "verdana.ttf" "0" "1" "0" "N" "N" "n"); T' T& T( v; @9 o+ \0 K9 A  _
  156. (setvar "TEXTSTYLE" Tstyle)
    % w4 o4 O/ K5 S
  157. (command "undo" "end")
    $ n7 \1 ^/ O/ [- q, O5 l( e* m4 @9 ?
  158. ): E) ?- o; W3 l; b  j

  159. % O4 I3 }; w* h- |
  160. ;;; ============================================+ h$ A/ D8 c9 u9 w. |
  161. ;;;
    / F, [* d5 }! E' d; ]9 P0 U
  162. ;;;   LISP Creater Tao Duong Dan AUTOCAD20008 d/ ^9 G! Z/ f
  163. ;;;
    5 p: n6 M/ i7 h8 Q
  164. ;;; ============================================
    9 m( M/ m' w, s3 q: C0 {
  165. 5 X* Z& C/ U2 x, T) j
  166. ;;; ============================================
    $ c) [& {  r5 X9 ?6 }' x
  167. ;;;' \+ [& x9 G- F, G
  168. ;;;          CREATING FROM AUTOCAD2000
    2 d" \7 p' t6 M+ W5 [) P9 V
  169. ;;;
    5 _' R( P% o7 N9 S( }: K. k- ]) ?
  170. ;;; ============================================* Z, f, m, k$ [: w. Y2 L2 N) A* G) n
  171. 2 T( x5 u/ B6 D  F
  172. (setvar "INSUNITS"4)% b0 C6 Z5 |" y- X
  173. (setvar "ANGBASE"0)
    7 `% f+ G) W6 E$ j* Y
  174. (setvar "ANGDIR"0)( R9 d/ [+ g: I: O7 a( B
  175. (setvar "AUNITS"0)1 [  L* o6 S3 S3 a9 n) l/ E; k! M
  176. (setvar "AUPREC"8): }6 _! I8 x# N/ s0 p6 [
  177. (setvar "LUNITS"2)2 z) K% E7 |* S. Y4 D
  178. (setvar "LUPREC"8)
    : s$ w7 v. M# |7 M# j+ e! M# _% M1 y
  179. (setvar "ACADLSPASDOC"1) + s6 y5 S5 H9 l6 n" }  j3 @7 `
  180. (setvar "pickbox"5)
    5 g3 W& f8 j) [! F5 p9 ]
  181. (setvar "blipmode"0)
      p! ?4 k- ^, `3 p5 o6 S9 F$ A
  182. (setvar "mirrtext"0)
    % N9 a3 a7 X1 A: t% T# }! t4 k
  183. (setvar "cursorsize"100)9 b+ I% _: b8 l' |) C% i
  184. (setvar "ZOOMFACTOR"75)! f/ O: G: s4 N  x- U% R- t* O+ d
  185. (setvar "LTSCALE" 10)
    5 g5 p, b* z8 p6 r
  186. (setvar "lwunits"1)9 e0 j- l& f+ X  g* E
  187. (setvar "DIMBLK" "Closed")
    & L& V! _6 Y. w' O
  188. (setvar "DIMGAP"0.0693)
    7 P( N0 M( |( f7 p; n( z( {
  189. (setvar "DIMASZ"0.20)
    + @& T6 y6 V6 l( ]) F2 R
  190. (setvar "DIMCEN"0.2)
    1 r+ F3 g. S. _3 H9 B
  191. (setvar "DIMDLI"0.1)$ c* _4 N8 M+ M& Q7 h% z
  192. (setvar "DIMEXE"0.0693)
    : q1 K- }- Z( D& |
  193. (setvar "DIMEXO"0.25)" s, H; `* W' U* s
  194. (setvar "DIMDEC"0)2 S, h/ V. z3 r. x4 E
  195. (setvar "DIMTIX" 1). E% M* q- k7 x) E" I
  196. (setvar "DIMTXT" 0.099); N" L& q: Q0 |! ]
  197. (setvar "DIMCLRT" 7)
    5 ]8 `2 X" b( L" h
  198. (setvar "DIMTVP" 1)
    8 ]- n& x. H8 L
  199. (setvar "DIMJUST" 0)
    2 _/ c' S3 n/ \# _
  200. (setvar "DIMTIH" 0)
    & H3 A  l0 R7 u; o! s1 }2 z8 J: w
  201. (setvar "DIMTOFL" 1)& V  V( l  d" b) ?2 S! f( @  D
  202. (setvar "DIMSCALE" 1111.1111)" x+ w1 ?  a5 a* p, y, {
  203. ' |+ X) f8 g: x

  204. ; g" }) A  x" B- ]* I+ ]( @/ K

  205. - w, m& K2 o. T/ m) M0 J0 F
  206. (defun c:zp ()  (command "'.zoom" "p"))9 |7 q' y8 C& x" P6 y
  207. (defun c:zz ()  (command "'.zoom" "p")); O* `2 V) `1 B& {
  208. (defun c:ze ()  (command "'.zoom" "e"))& w& {, R5 }$ y
  209. (defun c:za ()  (command "'.zoom" "a"))
    $ b1 h- {" _( ~- m, n
  210. (defun c:zd ()  (command "'.zoom" "d"))
    0 d, N6 g) n5 i2 t8 k8 j
  211. (DEFUN C:ZZZ () (COMMAND "ZOOM" ".25X")); o) D' C2 f6 E! v: E$ S$ m* ^' [5 j" u
  212. (DEFUN C:ZX  () (COMMAND "ZOOM" "2X")): u9 I% U4 N% S, {1 A, Y$ v
  213. (defun c:de () (command "ddedit")(princ))
    : |7 J! A8 a. i. [
  214. (defun c:dda () (command "Dimaligned"))8 U7 e. E. c; g9 ]( x+ H3 |
  215. (defun c:ddb () (command "Dimabaseline"))5 s! F  v) J! R1 V! `0 z
  216. (defun c:ddc () (command "Dimcontinue"))
    * g( U" o4 M$ y+ I  \, \) P9 [
  217. (defun c:dde () (command "Dimtedit")); U$ W6 n; |/ Q; m
  218. (defun c:ddf () (command "Ddattdef"))
    5 w3 ]! Z( ]  `1 `( g* f* y# S
  219. (defun c:ddi () (command "Dimdiameter"))
    5 i: L* |- G, z$ h3 T2 D0 p- ~
  220. (defun c:ddl () (command "Dimlinear"))
    * y' n- U. [/ P
  221. (defun c:ddn () (command "Dimangular"))
    ; H$ C: i* d4 |1 b( [) |
  222. (defun c:ddo () (command "Dimordinate")): e3 x7 ]& W+ U! H2 P( f( k
  223. (defun c:ddr () (command "Dimradius"))" s( j) H- Y2 \# _) u5 ^
  224. (defun c:dds () (command "Dimstyle"))
    ; t, q; W8 m! D8 e! m1 j: E
  225. ! \! s- h! g8 F6 z
  226. (defun c:DU () (command "dim1" "up" "select" "exit" pause ))(princ)* U6 o% M2 n" I" r% E$ M$ n6 o
  227. (defun c:DH () (command "Dim1" "home" "select" "exit" pause))(princ). Z5 Y$ {; d- P  X
  228. (defun c:UU () (command "dim1""update""all"))
    ' w- f9 T( x+ W# N, q
  229. (defun c:ded() (command "dim1""tedit"))6 g" C" ]& H* l- v4 K5 i& J5 m
  230. (defun c:da () (command "dim1""ali"))" s5 S( o" R* U* q) k( Z* |
  231. (defun c:dll() (command "dim1""l"))' z8 R1 G( {) j7 {7 b/ U0 x
  232. (defun c:dan() (command "dim1""an"))
    2 u  d0 q4 J0 W3 F2 x
  233. (defun c:d1 () (command "dim1""ra"))
    % q8 m  v- ]$ t1 Q3 Q; o! ^8 y
  234. (defun c:n  () (command "dim1""new"))% |- A  M+ ]( d" j5 ]

  235. : z2 p! k# T# ~. Z% y7 i
  236. (DEFUN C:PE  () (COMMAND "PEDIT"))+ I/ A  i! v/ {& K( Z
  237. (DEFUN C:PL  () (COMMAND "PLINE"))/ m* k9 Y& j, E0 ~) i2 ^$ D6 E
  238. (defun c:dd () (command "dist")(princ))
    ; \, C. A6 N3 q) a+ m: _. Z
  239. (defun c:w () (command "pedit" pause "w" "au")(princ))2 W; v" Q7 ~* o
  240. (defun c:pg  () (command "polygon" "polygon"))
    # i! Y6 c  e2 |* o
  241. (defun c:el  () (command "ellipse"))& o% j% `- |* n( p* I: R" B2 j5 G$ `
  242. (defun c:xe  () (command "explode"))1 d+ Y0 ^% P* R- v+ ]( Z' O  \5 H
  243. (defun c:eex  () (command "extrude"))& f+ _6 t$ q3 f+ v3 C) k8 e
  244. (defun c:xg  () (command "xline""a"))- z* D$ J( D/ \+ m$ t( J
  245. (defun c:xh  () (command "xline""h"))- |- t$ f. y8 W5 r/ a* }3 j  s8 |
  246. (defun c:xv  () (command "xline""v"))' c( y  V, ?3 S) H# C& v
  247. - N  N) j: V# v. E. [
  248. (defun c:oc () (command "osnap""cen"))6 K  \- ?& i) R1 r5 G1 b; R
  249. (defun c:od () (command "osnap""nod"))
    " n# A- s* n0 n, `& Y" |
  250. (defun c:oe () (command "osnap""end"))
    . ]% ?1 z$ b* |. o3 b# o
  251. (defun c:oi () (command "osnap""int"))
    8 @; c7 Y; T+ q
  252. (defun c:or () (command "osnap""per"))& C) {$ P6 ?& d  p7 R6 A
  253. (defun c:on () (command "osnap""none"))
    6 s. c8 z  f8 Y" ?9 D
  254. (defun c:oq () (command "osnap""qua"))
    1 K9 e9 v: E) o' s" b
  255. (defun c:om () (command "osnap""mid"))3 `! E4 b* W' G
  256. (defun c:ot () (command "osnap""tan"))  J8 P. O" [/ H5 o& |6 e$ y; |% W
  257. (defun c:oin () (command "osnap""ins"))4 L& N2 ~- `' }  T# ?
  258. (defun c:oa () (command "osnap""nea"))! [" l1 ^! n6 s3 D1 d
  259. (defun c:ol () (command "osnap" "End,Mid,Cen,Node,Nea,Int,Perp,Qua")(princ))) u  j' j+ `$ U2 [6 G6 l, W7 {
  260. ;(defun c:du () (command "dim1" "up" "s" "pick" "other"))
    ) C! ], ^8 o* h  J
  261. ;(defun c:nn () (command "new" "y" ))  V6 e: z+ u4 S: l" Y

  262. # |0 g$ w7 ?5 E
  263. (defun c:/ () (command "limits"))2 K6 r( J4 W! T" Z; @& s. s
  264. (defun c:`1 () (command "region"))
    ( U& A4 Z0 `8 U7 i  W: ^
  265. (defun c:`2 () (command "subtract"))
    % ]6 ^; ^$ S, A: v& Z* H, V
  266. (defun c:`3 () (command "union"))6 B* \* W1 @) ~5 F' `
  267. (defun c:`4 () (command "intersect"))5 J' a( O5 Q; X# P4 I. d' @8 S
  268. (defun c:`c () (command "cal"))
    * S3 Y9 u8 x* h7 O$ C
  269. (defun c:`g () (command "Polygon"))1 N1 B# O4 b9 e  I, t. I5 K

  270. * Z# q% Y+ c3 t6 v0 I
  271. (defun c:lmi() (command "LIMMAX" pause "" "zoom" "all" )(princ))8 ]/ V! B0 s( B6 a' i( w, Y8 e" E
  272. (defun c:drt () (command "DRAWORDERCTL" pause "Integer" "" "" )(princ))1 {2 F$ t/ \0 Y( o: W
  273. (defun c:ip () (ssget) (command "print,_plot" ))(princ)5 I& n$ w' a+ g

  274. $ x/ j4 c9 |9 |
  275. (defun c:ddm () (command "ddlmodes" pause))+ [* E( J" p5 x& ^. W6 T

  276. : }! j) P& k1 z3 E
  277. (defun c:sha () (command "shade" pause))
    & S: \2 w* L! h% J( l1 `

  278. & p- {% C! d/ ~( z, J% s
  279. (defun c:sr1 () (command "surftab1" "p" "" pause))
    3 S5 v) s1 i2 Y0 u3 y8 d+ P) K% `
  280. (defun c:sr2 () (command "surftab2" "p" "" pause))
    2 C& N- S; o+ W  @* I% p, @
  281. ( P+ q) n6 H8 U
  282. (defun c:ad () (command "audit""y"))4 b1 H5 \  Y5 j6 J7 Z/ P
  283. (defun c:q () (command "quit"))  }3 u9 {  _, X% h. f

  284. 3 a/ v  D( }3 a% |
  285. (defun c:30 () (ssget) (command "rotate" "p" "" pause "30"))3 l( r& o, |2 W5 P+ A5 ~  @
  286. (defun c:-30 () (ssget) (command "rotate" "p" "" pause "-30"))# o' x* Z/ x  H% M
  287. (defun c:45 () (ssget) (command "rotate" "p" "" pause "45"))$ k+ K3 ?0 b9 V* L4 A" b
  288. (defun c:-45 () (ssget) (command "rotate" "p" "" pause "-45"))7 G* L, l( _" w
  289. (defun c:60 () (ssget) (command "rotate" "p" "" pause "60"))
    1 c. N! D  P+ |
  290. (defun c:-60 () (ssget) (command "rotate" "p" "" pause "-60"))4 i  A1 d9 l8 R- A) f
  291. (defun c:90 () (ssget) (command "rotate" "p" "" pause "90"))
    & K  l8 @8 c% [/ B* W7 K
  292. (defun c:-90 () (ssget) (command "rotate" "p" "" pause "-90"))
    + A' k% J. @) {" P
  293. (defun c:180 () (ssget) (command "rotate" "p" "" pause "180"))& V, |* u5 b' K) _, z/ ~
  294. 6 U8 p! Q6 p0 z& N2 j! C
  295. (defun c:u3 () (command "ucs""3"))
    1 `5 i9 a' s4 m0 S
  296. (defun c:ue () (command "ucs""o""end"))
    7 y+ q! Z# C/ ?9 f2 @1 |% Q
  297. (defun c:ui () (command "ucs""o""int"))0 ^8 M4 W2 J4 f9 B. O
  298. (defun c:um () (command "ucs""o""mid"))
    4 `' q% q, e; q; d
  299. (defun c:uc () (command "ucs""o""cen"))
    2 S* `& f, \: Q
  300. (defun c:uq () (command "ucs""o""qua"))$ u8 ^/ N4 n  T9 t9 l2 l. J- \
  301. (defun c:3s () (command "ucs""3"))% n& q2 S- Z* L4 N
  302. (defun c:sx () (command "ucs""s"))( c3 f5 r5 G1 C) C( f! R
  303. (defun c:sf () (command "ucs""o"))( ~- H7 M  y0 m3 q$ S
  304. (defun c:sz () (command "ucs""p"))5 q2 Z; ]4 x/ E- V: @
  305. (defun c:sr () (command "ucs""r")): @  E& E0 l% z/ d; L* N5 n# H
  306. (defun c:sw () (command "ucs""w"))7 Z( \: ?! U$ O: n
  307. (defun c:fv () (command "ucs""v"))
    % ]1 k8 B0 v# r) u0 |; M5 u+ b
  308. (defun c:ux () (command "ucs""x"))2 B' F/ W1 R' T, x
  309. (defun c:uux () (command "ucs""x""90"))
    6 Q. L0 [/ w# W/ F0 n9 k( U1 N
  310. (defun c:xxu () (command "ucs""x""-90"))
    1 F: a- A4 X8 S) V# e! a
  311. (defun c:uy () (command "ucs""y"))1 Y6 t: H( g0 L( i  @
  312. (defun c:uuy () (command "ucs""y""90"))
    / d+ A0 [7 v& I/ n
  313. (defun c:yyu () (command "ucs""y""-90"))
    & l( h6 l1 N# S7 k
  314. (defun c:uz () (command "ucs""z"))
    ' F, ~% B6 z! w# \
  315. (defun c:uuz () (command "ucs""z""90"))% L1 U1 U; m0 x
  316. (defun c:zzu () (command "ucs""z""-90"))' Y) [- W' `& B5 [; X2 \
  317. (defun c:uci () (command "ucsicon" "Properties" ))(princ)
    0 N  r$ n1 S' l# ~! i5 e: w
  318. (defun c:ucm () (command "ucsman" ))(princ)
    # D" a* C  ^. g% P
  319. " o4 ~) v: }1 U& x" C
  320. (defun c:sa () (command "vpoint""_non""-1,-1,1"))
    2 s! }8 {( t' x/ O6 V4 W
  321. (defun c:sd () (command "vpoint""_non""1,-1,1"))$ g! B- S' f. m* H$ k1 O
  322. (defun c:se () (command "vpoint""_non""1,1,1"))' A/ E. `; M) s$ O/ ^
  323. (defun c:sq () (command "vpoint""_non""-1,1,1"))
    6 G, \0 f" ]% k: |2 [+ @
  324. (defun c:vc () (command "plan"""))7 e2 _" |/ R7 }9 u6 E
  325. (defun c:vd () (command "dview""all"))
    ' W. _2 A5 w! P- s( i3 f* p
  326. ) C- ]& J, @$ s
  327. (defun c:TT0 () (command "tilemode""0"))7 E1 t6 F: F2 r/ [: T+ z9 |1 \; {5 {
  328. (defun c:TT1 () (command "tilemode""1"))$ ?' f2 P! O" X# K
  329. : b# F! ~4 E3 [( o. w  N
  330. (defun c:vt () (command "vpoint""_non""0,0,1"))
    ) t3 }# }: F; ^+ w- k; e- W
  331. (defun c:vb () (command "vpoint""_non""0,0,-1"))6 N' V- S7 D7 s' G
  332. (defun c:vl () (command "vpoint""_non""-1,0,0"))
    ! t9 o7 l: Q0 y( y' H4 z) ]
  333. (defun c:vr () (command "vpoint""_non""1,0,0"))' G* [  k7 {( D4 V! M) N* V5 I
  334. (defun c:vf () (command "vpoint""_non""0,-1,0"))
    2 A4 C( y* K5 j: i& y
  335. (defun c:vk () (command "vpoint""_non""0,1,0")). s  G# @8 n$ v  _
  336. 6 _: P& s1 O' }! i+ z
  337. (DEFUN C:MM  () (COMMAND "MIRROR"))7 G( W9 t6 y( @
  338. (DEFUN C:MP  () (COMMAND "MOVE" "P"))
    8 G. n( X5 R) B( A

  339. 7 A: U1 N2 g& \& M, ~2 h
  340. (defun c:mee (/ a)+ u" O+ T" j, J8 @: [+ Y( I
  341.   (setq a (ssget))(command "move"a"""end"pause"end"))3 P! b- z9 j- y; g2 e: t2 w
  342. (defun c:mc (/ a)
    ( ?1 J& u' f  q* i
  343.   (setq a (ssget))(command "move"a"""cen"pause"cen"))
      ~1 q3 M& j9 E5 X8 `
  344. (defun c:cc (/ a)2 R+ F/ d) p4 V3 W( ^" O" _
  345.   (setq a (ssget))(command "copy"a"""m"))
    % L8 L2 ]& Q! d: ~* t$ _
  346. (defun c:ce (/ a)
    : @$ {% S# o4 l3 ?
  347.   (setq a (ssget))(command "copy"a"""m""end"pause"end"))
    : n- I$ C% I7 D' h8 ^/ i( `* H
  348. (defun c:cn (/ a)
    , ]! i! @7 r- c5 K$ \/ t" f9 k+ s
  349.   (setq a (ssget))(command "copy"a"""m""cen"pause"cen"))
    ; c9 t. T$ O# \/ D! T1 V/ \3 J/ y( H
  350. (defun c:tl ()(command "trim""l"""))' ^) Y7 C9 O& Q! q& }
  351. (defun c:tf (/ a)
    # P& m2 K2 |  a& t$ q9 G
  352. (setq a (ssget))(command "trim"a"""f"))
    - |4 k- {0 \+ I* K; H: Z2 g
  353. (defun c:el ()(command "extend""l"""))9 a5 W6 [; \5 g0 e% ~" Q
  354. (defun c:ef (/ a), [  f! S# x+ j3 o
  355.   (setq a (ssget))(command "extend"a"""f"))7 j0 p3 A0 x3 [( @9 E

  356. 5 R0 r  ~5 \+ y3 ~4 Z- R3 K
  357. , X2 g0 X5 I* ~
  358. (DEFUN C:110   ()(princ "\nChon doi tuong can offset ra 110.......") (COMMAND "offset" "110"))
    , S9 S7 h# f+ S' Y
  359. (DEFUN C:220   ()(princ "\nChon doi tuong can offset ra 220.......")(COMMAND "offset" "220"))* y; q3 n. Z- F$ _
  360. (DEFUN C:330   ()(princ "\nChon doi tuong can offset ra 330.......")(COMMAND "offset" "330"))
    7 _7 x5 m0 W4 q) L7 o
  361. (DEFUN C:400   ()(princ "\nChon doi tuong can offset ra 400.......")(COMMAND "offset" "400"))+ D: S! K. ?) t/ b) Z
  362. (DEFUN C:55   ()(princ "\nChon doi tuong can offset ra 55.......") (COMMAND "offset" "55"))
    0 y/ l1 n8 ?* O7 w* e+ C
  363. (DEFUN C:600   ()(princ "\nChon doi tuong can offset ra 600.......") (COMMAND "offset" "600"))
    0 r" a- ^& X9 r9 B* \# t- [
  364. (DEFUN C:700   ()(princ "\nChon doi tuong can offset ra 700.......") (COMMAND "offset" "700"))
    % \1 [/ m/ O- e: {6 j
  365. (DEFUN C:800   ()(princ "\nChon doi tuong can offset ra 800.......") (COMMAND "offset" "800"))
    8 l6 q$ w" x( M; h( _
  366. (DEFUN C:900   ()(princ "\nChon doi tuong can offset ra 900.......") (COMMAND "offset" "900")): g; p3 c) @  s1 c' w$ R
  367. (DEFUN C:1200   ()(princ "\nChon doi tuong can offset ra 1200.......") (COMMAND "offset" "1200"))& }2 X: ]  r& z, P5 E
  368. (DEFUN C:1500   ()(princ "\nChon doi tuong can offset ra 1500.......") (COMMAND "offset" "1500"))
    1 k. L* r  O: r# {/ E' q& F" `
  369. (DEFUN C:1800   ()(princ "\nChon doi tuong can offset ra 1800.......") (COMMAND "offset" "1800"))
    ; j: ]+ ?, u' P! Y  V4 t  m
  370. (DEFUN C:2400   ()(princ "\nChon doi tuong can offset ra 2400.......") (COMMAND "offset" "2400"))% V0 W7 Z6 _# W3 M3 q6 o% j1 e
  371. (DEFUN C:3000   ()(princ "\nChon doi tuong can offset ra 3000.......") (COMMAND "offset" "3000"))1 o/ e3 u% c0 {0 s# B
  372. (DEFUN C:3600   ()(princ "\nChon doi tuong can offset ra 3600.......") (COMMAND "offset" "3600"))
    ; j  Z2 C! u% W5 g7 }7 ^
  373. (DEFUN C:4200   ()(princ "\nChon doi tuong can offset ra 4200.......") (COMMAND "offset" "4200"))
    9 \( U* W; f& k$ U
  374. (DEFUN C:5000   ()(princ "\nChon doi tuong can offset ra 5000.......") (COMMAND "offset" "5000"))
    - v- B9 a3 w: U
  375. " _# g) R! r4 m4 V
  376. (defun c:mla () (command "-mledit""av"))% E: E1 [/ D) Z  w
  377. (defun c:mlc () (command "-mledit""mc"))( `  i" E: n  v7 X
  378. (defun c:mld () (command "-mledit""dv"))
    8 D  f! h7 E* U' K
  379. (defun c:mle () (command "mline""end"pause"end"))% i1 r4 T) Q# w: r3 r' \( b
  380. (defun c:mli () (command "-mledit""ca""int"pause"int"))
    2 E/ S' {( B6 M6 \% Y6 l5 e& ~
  381. (defun c:mlj () (command "-mledit""cj"))
    ' K" w& t& T5 c; _  y& m& s
  382. (defun c:mlt () (command "-mledit""mt")), n9 h7 P0 W- I2 L, Z& j" R
  383. (defun c:mlk () (command "-mledit""ca""end"pause"end")). `  W, C; t* ~
  384. (defun c:mlw () (command "-mledit""wa"))5 k4 F- B4 M" x, C
  385. : o' `" V- D; `, `. H
  386. (DEFUN C:DCA () (COMMAND "DVIEW" "all" "" "CA"))
    - A4 A5 @7 j& h0 F2 s
  387. (DEFUN C:DPA () (COMMAND "DVIEW" "all" "" "PA"))1 u: M# Q5 ?' g2 d. z8 ]
  388. (DEFUN C:DPO () (COMMAND "DVIEW" "all" "" "PO"))& Y1 v% D" I4 Q" y0 c
  389. (DEFUN C:DDD () (COMMAND "DVIEW" "all" "" "D"))
    & o# \  o$ F6 `! l) G5 J
  390. (DEFUN C:DZ  () (COMMAND "DVIEW" "all" "" "Z"))* u4 ?6 p' |* u: x+ c3 U

  391. ' I- C4 K) p3 i$ N$ D% T
  392. (defun c:p0 () (command "pline""""w""0""0"))5 n6 Y# x2 h. U
  393. (defun c:ot  () (command "offset""t")), ]4 k: i9 H: C! K( c+ b! J
  394. (defun c:t  () (command "mtext"pause"j""bl""h"pause))
    $ e9 D, I2 w& c0 k
  395. (defun c:uo () (command "ucs""ob"pause))
    * I  W2 I9 Q$ q1 n
  396. (defun c:f0 () (command "fillet""r""0"))
    6 d! ]. n8 C0 T9 o' L& ]* p
  397. (defun c:fr () (command "fillet""r"))
    5 X$ W( J$ f  h* c# r$ ^6 h
  398. 3 w, h8 H) v* W9 `9 `: O
  399. ;CHAMFER
    * \* D9 V) M8 ]' ~4 L
  400. (defun c:cf () (command "chamfer"))9 l+ D* |& [4 |  p
  401. (defun c:cfd () (command "chamfer" "d"))
    . E% ?- W$ X% y; q7 p+ |
  402. (defun c:cf0 () (command "chamfer" "d" "0" ""))
    . b2 a% `  R" W# u5 V0 e

  403. * s5 ^% I7 k- P; j4 j( a' R
  404. ;FILLET
    ' W' F# M' W: [2 N
  405. (defun c:f () (command "fillet"))
    # x% E" H" z; K: W0 P+ P4 l6 l
  406. (defun c:fr () (command "fillet" "r"))8 |3 C9 ?' h$ M8 w
  407. (defun c:f0 () (command "fillet" "r" "0"))% \# w  e2 I" _  y5 }: o; E4 a
  408. % L; E& }# M" t7 Y/ E/ w9 @2 t) c" y
  409. (defun c:OO  () (command "oops"))
    % o& @# n7 ]- I- m7 C
  410. (defun c:dln  () (command "dimlinear")). H. T4 ~. O' t  k4 t
  411. (defun c:dan  () (command "dimaligned"))6 G* p2 Z. w3 ~1 A9 D$ ^
  412. (defun c:ddc  () (command "dimcontinue"))3 A; f4 q% O5 l2 E7 U* {5 D7 I

  413. . Q) X& B6 f" j/ `6 `7 {- Z: {
  414. (defun c:sc () (command "scale" "auto"))" I- }2 @$ I/ m' @. a0 o; v
  415. (DEFUN C:XO  () (COMMAND "snapang"))
    4 D$ h( ?" c& T) W6 n4 J
  416. (defun c:cc (/ a)
      d" I0 u" j9 P. O- Y9 C! ^
  417.   (setq a (ssget))(command "copy"a"""m"))3 f3 y1 B' E3 ~! ]. G/ I

  418. & S# \- a) }0 Y5 R* P
  419. (defun c:PJ (/ a)* U6 ]! ?& W. q' D1 ~8 K2 |
  420.   (setq a (ssget))(command "pedit"a"""j""all""y"))8 E8 h: e) [& @' @+ V6 {
  421. (defun c:JJ (/ a), y+ X& l# C8 J6 R2 L1 w7 ?3 N! r3 ~
  422.   (setq a (ssget))(command "pedit"a"""j""y")): h7 ~, _, f1 F1 o
  423. (defun c:TN (/ a)
    3 u* W* s: x, M+ [) u
  424.   (setq a (ssget))(command "change"a"""p""T"))
    0 P) Z: t% S- v! @& n  ^5 u
  425. # T% X& Z  f% E  q

  426. 5 ]7 A% H5 A- z5 h4 b% c7 z
  427. ;=======================Tran Ngoc Thang - Tu nam 2000 - Hoc nam cuoi KTS . DHXD=========================" ~0 {) M% b, B. K2 f' K3 \9 R

  428. 5 E# u/ u  [1 i- @+ I
  429. (defun C:IB ()(setvar"cmdecho"1)
    2 ^- F( l& h: Q2 H2 r0 S+ E
  430.   (setq pt(cadr(entsel"\nSelect Block:")))
    . S, s7 ^: ]3 w7 P9 G/ w( P
  431.   (setq e1(ssget pt)) 3 z1 h; e8 O" ]0 }1 o* x5 F
  432.   (setq e2 (entget (ssname e1 0)))% s) e0 {; @2 ~) Q
  433.   (setq blname (cdr(assoc 2 e2)))) p5 W4 r% [+ Q% T1 M1 D+ r
  434.   (setq oer *error* *error* err2)(command ".insert" blname))+ m! U6 C; P' s8 E  V

  435. - k8 _6 h9 g; g2 O
  436. (defun c:II ()( r5 @. ~* F+ T
  437.     (setvar "cmdecho" 0)
      {7 m' ]% ^# m9 Q
  438.     (setq olderr *error* *error* myerror). C# g9 _4 U: R% I
  439.     (prompt "\nSelect objects: ")
    . x6 a2 `- M7 ]  D  o
  440.     (command "select" "au" pause)% h& p% j! [2 K/ T( f
  441.     (setq sstxt (ssget "p")* B: G" C. k8 S) d
  442.           sslen (sslength sstxt)
    ( o: q/ z. v( z' N( A& t
  443.           ctr 0
    4 t- T+ n5 T9 s# b. [, ^
  444.     ). r! z% c" w3 N5 M( |( p8 w# L
  445.     (command ".undo" "mark")) ^4 p0 H+ ]+ t8 {4 _+ X
  446.     (while (< ctr sslen)
    5 K) O0 g1 J; V
  447.            (setq listxt (entget (ssname sstxt ctr))5 Y7 V) \7 U: b* C
  448.                  txttxt (cdr (assoc 1 listxt))4 u5 b( x: ~  e/ e) O
  449.                  enttxt (cdr (assoc 0 listxt))# T% o3 e7 X. N- Z; U7 _  M9 {
  450.            )  w* r* J  |# S* V' B* z* J
  451.            (if (= enttxt "TEXT")
    . J  e& L& v" u$ S
  452.                (progn
    / q+ U0 E5 b9 g6 W# }% ]
  453.                    (setq testxt (substr txttxt 1 3))9 t$ m$ t6 f' \1 Y% H4 O
  454.                    (if (or (= testxt "%%C") (= testxt "%%C"))  H5 f" I$ ~7 z) H3 m3 j3 A
  455.                        (setq newtxt (substr txttxt 4))  v& k- c3 M. P- o6 C
  456.                        (setq newtxt (strcat "%%C" txttxt))+ U" R8 K: t- [2 w6 E
  457.                    )7 l/ T. [6 T3 v: r& b
  458.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    # f6 b7 ?/ R, D) ^
  459.                    (entmod listxt)% f, G9 X3 k" E7 f- m% D
  460.                 )
    2 }, X% l3 Y9 b8 d" B9 h6 z
  461.             )9 R1 z. j, ~' a! `
  462.             (setq ctr (1+ ctr))- ^" ^4 D" T9 }/ j
  463.     )9 s3 I3 B5 ?; X3 u
  464.     (setq *error* olderr)
    4 Y3 D$ F& c# N
  465.     (setvar "cmdecho" 1)- @4 K$ V: g; }1 p/ s/ B! _
  466.     (princ)
    " f& X* {* I6 [% e
  467. )8 V# h0 L9 I" U. v; Y6 \: N! E

  468. 5 F$ T# X# s. t& d  R
  469. (defun c:DG ()) d1 d" H2 _# @# u( @% s
  470.     (setvar "cmdecho" 0)
    3 F8 `  }# {5 L- h* W/ L
  471.     (setq olderr *error* *error* myerror)
    ; i8 W4 j/ ?- f4 }+ ~% `
  472.     (prompt "\nSelect objects: ")
    0 P: [- _/ r8 l7 N' ?  {# r
  473.     (command "select" "au" pause)# H; ]$ f4 V8 d) C; C! W
  474.     (setq sstxt (ssget "p")
    ) L" E, b2 q" `2 f
  475.           sslen (sslength sstxt)
    : r& X3 \) z5 H0 b
  476.           ctr 07 Z# |' ]; W! p; n/ g  q0 `
  477.     )
    & f- b8 K* A/ J& e$ q* b
  478.     (command ".undo" "mark"): `+ v/ q! f8 q; F4 e
  479.     (while (< ctr sslen)
    4 ~: A8 S  _* m9 G
  480.            (setq listxt (entget (ssname sstxt ctr))
    + V7 x: z: n, e" l
  481.                  txttxt (cdr (assoc 1 listxt))# A" s/ D! O3 o7 N5 U. q9 o+ Z
  482.                  enttxt (cdr (assoc 0 listxt))3 a. M9 E# G- ~. ]. h6 b9 V) n) Z
  483.            )
    ) w# q; S% h( N3 A; h5 i1 {2 U. m5 Z
  484.            (if (= enttxt "TEXT")
    ! J+ W- Q/ E. g
  485.                (progn
    5 Q: d! F. G, f4 {6 }
  486.                    (setq testxt (substr txttxt 1 3))
    0 C9 x3 q2 S3 y) d3 O# }# U1 C
  487.                    (if (or (= testxt "%%d") (= testxt "%%d"))
    5 [! D) b- k) g6 A0 f/ O4 g
  488.                        (setq newtxt (substr txttxt 4)), l: c, n5 K- R" V; u
  489.                        (setq newtxt (strcat txttxt "%%dC" ))7 ?1 h; e% Q5 G" M1 r, r
  490.                    )  |5 u4 w! x# l# c( _
  491.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    # N( f6 F6 g6 s* J+ t
  492.                    (entmod listxt)
    2 ], q5 j2 p" l) r6 C% R
  493.                 ): N3 Y& `& H$ I* Q
  494.             ), k: ?1 C* ~; O1 {
  495.             (setq ctr (1+ ctr))
    ' z/ {/ |; G2 h5 t" B
  496.     )/ Y. u. k% }5 O, x1 Q5 d; |
  497.     (setq *error* olderr)0 _" @3 C2 h9 y' V
  498.     (setvar "cmdecho" 1)
    * ]* W* i* Z, ~$ m
  499.     (princ)0 |8 q0 Q/ q# e9 m' i- Y
  500. )) q; u3 m# p( O& y
  501. * d4 H, J3 ?: _" J& F/ K: E
  502. (defun c:PI ()
    # X/ F, C" }6 V
  503.     (setvar "cmdecho" 0)
    ( a. e7 K1 t5 l1 d, n
  504.     (setq olderr *error* *error* myerror)" g( [+ _( J6 Z: E$ ~  x! C. d
  505.     (prompt "\nSelect objects: ")
    # `6 q8 y4 z2 Y- _/ V+ `' n, _( X
  506.     (command "select" "au" pause). _/ x, ]) @! i, E# w
  507.     (setq sstxt (ssget "p")
    # J9 u  y+ G4 n0 L
  508.           sslen (sslength sstxt)
    / L# _5 T8 ~* F  K
  509.           ctr 0
    2 ^0 K& \, f( n5 T
  510.     )
    * r* s- Z0 @/ F% Y
  511.     (command ".undo" "mark")
    ( {+ M* l, s- p
  512.     (while (< ctr sslen)
    7 T3 x+ }# c8 @5 e! p
  513.            (setq listxt (entget (ssname sstxt ctr))
    9 g6 o6 b4 v# S+ w5 q% w! T
  514.                  txttxt (cdr (assoc 1 listxt))
    ; E# f4 J' V9 D" H0 B
  515.                  enttxt (cdr (assoc 0 listxt))" w; k. |; ^& L4 H
  516.            )' c) ~! [% D) t& ~) _* ~# }
  517.            (if (= enttxt "TEXT")
    : d* n9 m5 W- F/ A  j7 h
  518.                (progn
    / t0 I( ]  m# t/ u
  519.                    (setq testxt (substr txttxt 1 3))
    % n4 C! g6 m! d4 Z4 u7 ?+ C1 ?
  520.                    (if (or (= testxt "%%p") (= testxt "%%p"))
    ; z5 g; X; ?  |: K' e0 s
  521.                        (setq newtxt (substr txttxt 4))
    : U! j- r, [, S7 m. T
  522.                        (setq newtxt (strcat "%%p" txttxt))
    3 Z9 {. M5 E& `: x9 n
  523.                    )
    5 K8 C: J: c1 N" T8 h" }% A9 y
  524.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))1 i# _& I8 p$ Q0 y
  525.                    (entmod listxt)
    ( `6 E* x( ?, r  k
  526.                 )0 a% L6 V' d' p  r+ \! O
  527.             )7 ~* X8 K& d/ Z; i
  528.             (setq ctr (1+ ctr))# L! B4 |* z; I
  529.     )$ Q. |! v: K( Y6 T  p0 G
  530.     (setq *error* olderr)
    % X2 q* |9 E8 J; Y" n9 b! ]- `
  531.     (setvar "cmdecho" 1)( q4 w$ h$ z$ S! d/ B: R: E
  532.     (princ); t% r+ Q, v" W/ K; `: B  M# I
  533. )6 B. [0 }: F: W, ^: X$ c
  534. " c7 L+ a' M4 x5 L$ ~+ x: X" h
  535. (Defun c:CB (/ a)* Z* k' s4 ^! K  x
  536.    (setq olderr *error* *error* myerror)
      n& v2 v& s  B; _2 x2 @; g
  537.    (setq ocmd (getvar "cmdecho"))
    - [+ G( p* ?# S, n( N  h
  538.    (setq oblp (getvar "blipmode"))
    / M: A  u  l9 M: p: z
  539.    (setvar "cmdecho" 0): e* c! k* {3 P) u  j
  540.    (setq a (ssget))
    # N- ~, ~9 q7 e8 u) I8 y0 U
  541.    (command "CHPROP" a "" "C" "bylayer" "")* z' R$ `+ V# x/ c
  542.    (setvar "cmdecho" ocmd)
    6 ?' ~  i, O- ?; s' R
  543.    (setvar "blipmode" oblp)4 C  H2 k" I" W- `, R
  544.    (setq *error* olderr)
    ; ]* j0 a" b$ O1 A8 E
  545.    (princ)1 p! B, q1 k2 {6 h1 X
  546. ); B) k; y( [  A5 w2 ?0 f

  547. # p0 H  X4 M) F1 q: C9 a# n
  548. (defun c:LCC (/ co43 obj23 la23)" e9 O( a( G3 k( X1 \# b  W9 C
  549.    (setvar "cmdecho" 0)0 n# a6 f5 t- K7 p" d( `- j, Y3 {' g
  550.    (setq co43 (getstring "\nNew color : "))
    ) t$ p& Q& T& y( T. |3 f
  551.    (setq obj23 (car (entsel "\nPick object on desired layer: ")))0 z2 f* t$ C6 S3 o  w
  552.    (if obj23 (progn, i% m7 a4 m' X- m
  553.              (setq obj23 (entget obj23))
    1 ?' x& ], K- a7 L
  554.              (setq la23 (cdr (assoc 8 obj23)))
    8 t7 m4 E  z; \" t) J; W
  555.              (command "layer" "c" co43 la23 "")
    9 P/ l( c' }3 W$ p" m
  556.           )
    : c* c' q( [0 R7 M
  557.     )0 r6 \  x, Q% O9 j  o; W# ?
  558.    (prompt (strcat  "\nLayer has changed..." la23))
    ; G6 f0 b, J2 [' V2 u
  559.    (setvar "cmdecho" 1)
    3 p& u8 p/ M+ _
  560.    (princ)2 `% x0 ?  S! f4 ?4 r$ j0 D3 y
  561. )  
    ! Q) e# s, O+ t. _) {+ Z
  562. / P  j. ^0 I, D" l7 s7 v
  563. (Defun c:RP (/ a)  l' f% K0 d. x3 F0 o
  564.    (setq olderr *error* *error* myerror)
    8 Y" D9 _  \! e$ Z$ ?" v
  565.    (setq ocmd (getvar "cmdecho"))7 D; y, c$ r! c1 s4 c- F, x
  566.    (setq oblp (getvar "blipmode"))5 d2 s( k- r2 q4 W' J0 Y; `& o
  567.    (setvar "cmdecho" 0)" a  |/ Y. b- U: \
  568.    (prompt (strcat "\nUSE: Delete object(s) belonging to"- D7 F) ~- a3 J
  569.                    " the layer of the entity picked...!"))# J/ j3 \* a5 u& e6 I7 Z* g
  570.    (setq a (entsel "\nPick the entity with the desired layer to delete: "))1 h+ \' L6 J( H0 v0 k1 n4 W
  571.    (if (/= a nil)
    : }1 B; q( J" Y1 Q+ l! W
  572.       (progn (setq a (cdr (assoc 8 (entget (car a )))))
    ' H0 z8 ~& A! S& \; X0 q+ l
  573.       (command "Erase" (ssget "x" (cons (cons 8 (eval a)) tempword)) ""))( u; f" b6 ?* U1 }' Q' v; m
  574.       (prompt "\nNo entity selected!"))
    ! }0 J; e9 p: S6 L' \9 N" c( e( ~' V, H
  575.    (setvar "cmdecho" ocmd)" E8 X4 a6 u5 G1 V- L) o2 B
  576.    (setvar "blipmode" oblp)! B4 |+ A9 ]  ~5 i- I
  577.    (setq *error* olderr)
    2 Q/ a, \% k$ m% T8 ^  a0 c6 Q" l
  578.    (princ)" N7 G7 F( s# }; E# i5 P& D- ?
  579. )! e- A9 W! o& ~& Y8 R# |0 U- D. `

  580. 5 X4 R: E) e7 T7 k; A& i+ z
  581. (DEFUN C:WL(/ SSET NET SSL M)
      \( {/ K6 ^$ f" P
  582.    (PRINC "\nSelect lines :")
    7 ?9 I, y0 [# K
  583.    (SETQ SSET (SSGET))& G; D6 ~8 _* c7 i# x& ]9 g5 a
  584.    (IF (/= NIL SSET) (PROGN
    9 g; M6 n  h$ D1 H5 j* i
  585.    (SETQ SSL (SSLENGTH SSET))
    : r; t3 Z8 m" `
  586.    (INITGET 4)
    # O8 E9 N% m* \, `
  587.    (SETQ NET (GETREAL "New width : "))% i4 h1 q; j! G- W
  588.    (IF (/= NIL NET)% H" y4 ~+ d/ E4 `3 `( F
  589.     (WHILE (> SSL 0)
    # {. L- z$ R; U4 O& Q
  590.       (SETQ M (SSNAME SSET (SETQ SSL (- SSL 1)) ))
    8 {5 f* e6 M+ e7 K
  591.       (IF (= (CDR (ASSOC '0 (ENTGET M))) "LINE") 9 {6 J$ W! y4 {) H- f" U
  592.           (COMMAND "PEDIT" M "Y" "W" NET "") 6 s" \8 K; O* l( l
  593.       )
    - Y/ S: h% ^/ x. s9 i
  594.     ) $ j! P5 R' d+ w: b% p: V5 r" G
  595.    )))
    , Q- p9 {- |6 O6 G" j# z
  596.    (PRINC)
    7 R) L# j& x) W1 Y
  597. )
    ! B( K. r  b, ]0 q9 C

  598. 6 ]5 O$ y+ R+ i& R; P: ?6 q
  599. (defun C:MML (): T$ F7 O" i! q! P! A8 S
  600.   (princ "\nSelect objects to move to another Layer.")* \6 r* \* p7 X3 H* G: n3 ^8 j2 b
  601.   (setq ss (ssget))/ S/ K" s! P6 r0 I
  602.   (SETQ UL1(GETSTRING "\nLayer to move entities to : "))
    3 L: Q$ `/ N# U5 a
  603.   (setq counter 0)
    - v' k) m" K6 B4 n
  604.   (prompt "Moving to layer.....")(princ ul1)
    + @. h# `% O- Q
  605.   (setq e (ssname ss counter))
    1 T- `% O5 a  Q% ?+ `; J+ d) \
  606.   (setq l (cdr (assoc 8 (entget e))))% R. P" V/ j4 y6 R0 |1 A# G
  607.   (setq S (ssget "X" (list (cons 8 l))))
    " ?  P: H* r' R: T
  608.   (command "CHANGE" ss "" "P" "LA" UL1 "")0 F5 M* t% x7 e$ H. X1 K# g
  609.   (setq counter (+ counter 1))
    - `7 J, B: ^4 ?9 c/ k+ t( n
  610. (princ)
    ( i+ O6 I: F- Y1 L" H% P; V( B$ \
  611. ) & f# N1 _! n1 Y9 j, C8 t

  612. + O6 ?/ r- x* a$ \7 K& z, ^
  613. ;;; ================================ GHI CHU ============================9 ^7 Z* D9 y% w/ M: w% c0 [6 t
  614. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========! p8 ?+ ^- _1 R, L$ s& y" a
  615. ;;; =======================Thuong Dung Font Romant.vnh===================
    % i9 C! O) `* m3 u8 j8 }
  616. " h9 S3 }8 y% c+ B
  617. (defun c:RS (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)* U4 I, D/ O; z+ ^1 J! [, L/ O1 B
  618.   (setq oer *error* *error* err2)' `: ^$ D' Z7 @* M
  619.   (PROMPT "\n(UNICODE-Verdana)(D)ining room. (S)torage. c(L)oset. (C)onference. (O)ffice. (K)itchen. (B)ath. (M)aster Bedroom. ")/ @$ j# \0 q, {6 y" M& J
  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)."))2 G2 N2 z2 T% W7 I! z
  621.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT ' "Nha`  Bê´p"))
    + Q& c% h$ [- D* R% W: ]
  622.   (IF(OR(= cpt "B")(= cpt "b"))(SETQ CPT ' "Pho`ng Vê? Sinh"))" J1 G- c- z0 R6 d& _6 d
  623.   (IF(OR(= cpt "C")(= cpt "c"))(SETQ CPT ' "Pho`ng  Ho?p"))
    5 C# C' k* w0 I# Z2 A. {" p
  624.   (IF(OR(= cpt "O")(= cpt "o"))(SETQ CPT ' "Pho`ng La`m Viê?c"))
      `2 L, M8 o, E" F& n. S' w
  625.   (IF(OR(= cpt "M")(= cpt "m"))(SETQ CPT ' "Pho`ng Ngu?"))1 ]( G; A: Y6 s3 g+ p3 t
  626.   (IF(OR(= cpt "D")(= cpt "d"))(SETQ CPT ' "Pho`ng Bê´p + An"))
    , {! o' Q4 O9 Y& H
  627.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT ' "Nha`  Kho"))
    / Y8 X5 V8 ]) z) N
  628.   (IF(OR(= cpt "L")(= cpt "l"))(SETQ CPT ' "Pho`ng Ðê? Ðô`"))) m( T8 _2 d0 ~# k( [: D
  629. , z% Z' ~; k3 _; }) v
  630.   (IF(OR(= Cpt "KK")(= cpt "kk"))(SETQ CPT ' "Nhµ BÕp"))% P, ?/ z+ |$ _
  631.   (IF(OR(= cpt "BB")(= cpt "bb"))(SETQ CPT ' "Phßng VÖ Sinh"))
    7 R. H( o7 @7 ^' `1 W% D" s& f
  632.   (IF(OR(= cpt "CC")(= cpt "cc"))(SETQ CPT ' "Phßng Häp"))
    4 Z0 u( Y0 d: J! z# }$ m
  633.   (IF(OR(= cpt "OW")(= cpt "ow"))(SETQ CPT ' "Phßng Lµm ViÖc"))
    ' H$ ?' U2 \, S. P- u# a2 w4 Q
  634.   (IF(OR(= cpt "MM")(= cpt "mm"))(SETQ CPT ' "Phßng Ngñ"))6 V; o0 S8 e; M! S
  635.   (IF(OR(= cpt "DD")(= cpt "dd"))(SETQ CPT ' "Phßng BÕp-¡n"))
    ( l/ {* Z& ~4 Y
  636.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "Nhµ Kho"))  u& Z: E" B$ v
  637.   (IF(OR(= cpt "LL")(= cpt "ll"))(SETQ CPT ' "Phßng §Ó §å"))) l2 D4 P% {5 |# b' K3 E! \8 c1 `% c

  638. : p7 W9 {  e% ?2 D5 s  a
  639.   (IF(OR(= Cpt "oK")(= cpt "ok"))(SETQ CPT '"NHA/F BE/M/SP"))2 @9 x7 J) V8 c  }* \' W8 A, _- z
  640.   (IF(OR(= cpt "oB")(= cpt "ob"))(SETQ CPT '"PHO/F/NG TA/W/SM"))
    1 i- R. V6 I7 q0 \3 n! }2 ?
  641.   (IF(OR(= cpt "oC")(= cpt "oc"))(SETQ CPT '"PHO/FNG HO/JP"))/ F" X5 U. k# z/ H3 S/ ^
  642.   (IF(OR(= cpt "oww")(= cpt "oww"))(SETQ CPT '"P.LA/FM VI/E/M/JC"))
    % d0 j7 _' R7 D7 ~  k
  643.   (IF(OR(= cpt "oM")(= cpt "om"))(SETQ CPT '"PHO/FNG NGU/R"))
    6 N: X$ c9 g  b" k5 \$ p" p5 c
  644.   (IF(OR(= cpt "oD")(= cpt "od"))(SETQ CPT '"PHO/FNG A/WN"))) c1 X. ^+ m7 N% e" ^
  645.   (IF(OR(= cpt "oS")(= cpt "os"))(SETQ CPT '"NHA/F KHO"))
    - C% ]' a+ P+ R4 O9 `' I  _/ |
  646.   (IF(OR(= cpt "oL")(= cpt "ol"))(SETQ CPT '"PHO/FNG /DO/M/F"))
    % t4 L  b2 z4 S# ~8 Q5 e- }
  647. (setq pta (getpoint
    . b, x, U3 w  J  P7 `( R* J9 A2 v; a
  648.     "\nPick first corner. : "))% K, |# z3 w, V+ a8 g. O
  649.   (setq ptb (getcorner pta2 f0 b% A* i5 y  t2 d
  650.     "\nPick second corner. : "))
    4 y5 j& D# K5 e& y: `' e
  651.   (setq ptc (list (car ptb)(cadr pta)))
    7 S' f/ K9 F+ i6 u1 P8 J  t
  652.   (setq ptd (list (car pta)(cadr ptb)))
    - `$ S4 r8 Y" F2 p
  653.   (setq ang (angle pta ptb))' X4 S' U& m9 ]& v/ q  j4 j
  654.   (setq d1 (/(distance pta ptb) 2))+ G: ~0 z! T/ }
  655.   (setq cp (polar pta (- ang (dtr 0)) d1))/ `2 }; D* q% e& f
  656.   (setq X (distance pta ptc))5 E- Z6 [1 j% e8 Z8 n9 {0 ?
  657.   (setq Y (distance pta ptd))! A) L. X( @- O+ P8 ?
  658.   (setq X1 (rtos x 2 1))
    ( p. |' t3 T5 [, a. W6 S6 o
  659.   (setq Y1 (rtos y 2 1))
    ) m. x$ W0 E: c9 _9 v' D7 p
  660.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))9 {9 V/ B/ `5 |
  661.   (command "TEXT" "c" cp "0" CPT "ROMANT-TEXT" "" rmsz))
    ) m# i# A9 b; ?7 e# Z
  662.   (defun dtr (angg)8 }/ a! B* {1 ^6 c2 q
  663.   (* pi (/ angg 180.0)))! B' k$ X0 j/ t# {9 K3 V$ @

  664. 3 R- ~3 w" G6 j4 @* k, Y
  665. (defun c:WS (/ pta ptb rmsz pl1)8 x0 Q$ I$ E" ^' B" O
  666.   (setq oer *error* *error* err2)1 @6 U+ w9 T4 J! k
  667.   (PROMPT "\n (RomanT.TXT)floorp(L)an.(E)levation.(S)ection.(M)planFoundation.(C)Found.(K).(P).")6 Z( c. G& @% @2 r+ E' t- J2 \
  668.   (SETQ Cpt(GETSTRING "\n (VnHELVH.Vnh)(LL)floorplan.(EE)elevation.(SS)section.(BM)planFoundation.(CM)foundation.(KC)Structure.(PP)perspective."))0 f6 @  n* D4 {. p8 y4 t" X" s6 ?
  669. % ?. I1 f. F: \1 Z1 E: p
  670.   (IF(OR(= Cpt "LL")(= cpt "ll"))(SETQ CPT ' "MÆt B»ng TÇng 1 : TØ LÖ - 1:100"))5 z( ]; R1 C& @# {3 h) L/ w
  671.   (IF(OR(= cpt "EE")(= cpt "ee"))(SETQ CPT ' "MÆt §øng Trôc ?-? : TØ LÖ - 1:100"))( K8 b7 \4 N+ B3 Q4 o- k0 v
  672.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "MÆt C¾t A-A : TØ LÖ - 1:100"))1 o( ~6 A8 Z. L7 k8 W# c4 s; S& ~2 ~$ b
  673.   (IF(OR(= cpt "BM")(= cpt "bm"))(SETQ CPT ' "MÆt B»ng Mãng : TØ LÖ - 1 : 100"))8 @1 q+ U$ w2 T* I4 g
  674.   (IF(OR(= cpt "CM")(= cpt "cm"))(SETQ CPT ' "MÆt C¾t Mãng : TØ LÖ - 1 : 100"))9 R! m3 b  V# |0 ^# M* {
  675.   (IF(OR(= cpt "KC")(= cpt "kc"))(SETQ CPT ' "KÕt CÊu Khung Däc Nhµ : TØ LÖ - 1 : 100"))
    " z$ I% v- h  f: p. M
  676.   (IF(OR(= cpt "PP")(= cpt "pp"))(SETQ CPT ' "Phèi C¶nh Mét Gãc Nh×n"))0 W9 o' X: s2 X* y+ K

  677. ' P2 E1 ?" C* S8 e
  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"))
    5 i5 I8 x: f! d6 u% I# M" A
  679.   (IF(OR(= cpt "E")(= cpt "e"))(SETQ CPT '"MA/W/JT /D/}/SNG TRU/JC ?-? : TI/R LE/M/J - 1:100"))
    8 U$ a: g4 y+ a) n4 |/ z
  680.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT '"MA/W/JT CA/W/ST A-A TI/R : LE/M/J - 1:100"))
    ; K! R' e) d; c+ W
  681.   (IF(OR(= Cpt "M")(= cpt "m"))(SETQ CPT '"MA/W/JT BA/W/FNG MO/SNG : TI/R LE/M/J - 1:100"))- q: C$ v! {5 k0 j( R
  682.   (IF(OR(= Cpt "C")(= cpt "c"))(SETQ CPT '"MA/W/JT CA/W/ST MO/SNG : TI/R LE/M/J - 1:100"))' Z4 S- m5 E% j9 t
  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"))
      B  t0 M0 U& \! E
  684.   (IF(OR(= cpt "P")(= cpt "p"))(SETQ CPT '"PHO/M/SI CA/R/NH MO/M/JT GO/SC NHI/FN"))
    & n7 T- H. \, |, \5 `( h
  685. (setq pta (getpoint- _' ^# Y3 T) n! r2 t
  686.     "\nPick first corner. : ")): I6 G! W% F3 ~8 V
  687.   (setq ptb (getcorner pta0 X4 i' h5 E% G/ }+ T' z) O8 y$ u: J" @
  688.     "\nPick second corner. : "))
    $ y' H+ V) @8 E
  689.   (setq ptc (list (car ptb)(cadr pta)))3 Q( R, u5 W( q. |) Y
  690.   (setq ptd (list (car pta)(cadr ptb)))4 Q4 U3 j' _) @8 Z9 H3 W1 |5 v1 A
  691.   (setq ang (angle pta ptb)): p3 K1 A& I/ T3 k
  692.   (setq d1 (/(distance pta ptb) 2))
    1 s0 ~1 d6 K; P
  693.   (setq cp (polar pta (- ang (dtr 0)) d1))2 N6 ^  r* ^; o% r" v
  694.   (command "TEXT" "c" cp "0" CPT "ROMANT-TEXT" "" rmsz))
    ' h, A/ K# @/ w- M5 |' Q0 S. T
  695.   (defun dtr (angg)( s$ n6 h- d6 k- B7 v! h4 a4 X
  696.   (* pi (/ angg 180.0)))
    # L  h) U+ _/ U# m( Z

  697. 5 o% i7 r; C4 x/ d
  698. ;;; ================================ GHI CHU ============================. c1 A4 ?/ V( h! R, x# \, t9 q
  699. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========. A* e+ X5 r3 F( S1 x) Y( ^
  700. ;;; =======================Thuong Dung Font Romant.vnh===================
    + H6 U! o( g6 a2 s) S4 T3 w

  701. 4 L* I1 ?6 ~! t% J# C' c' s# l
  702. (defun c:RRS (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)7 _" j! L( k) G& z' m5 [! D
  703.   (setq oer *error* *error* err2)
    . E& A7 X( G; \; t6 M6 p2 Y5 @
  704.   (PROMPT "\n(D)ining room. (S)torage. c(L)oset. (C)onference. (O)ffice. (K)itchen. (B)ath. "). e* y7 a* r- x. i
  705.   (SETQ Cpt(GETSTRING "\n(M)aster Bedroom. (DD). (SS). (LL). (CC). (OO). (KK). (BB). (MM). "))
    ! |8 C3 v: p$ a5 O) g7 V
  706.   (IF(OR(= Cpt "K")(= cpt "k"))(SETQ CPT ' "Nhà B?p")), i2 N4 E. P$ ]. V* {2 {2 f
  707.   (IF(OR(= cpt "B")(= cpt "b"))(SETQ CPT ' "Phòng T?m"))5 m! S0 S' _7 i# v5 x: e: J- F5 c
  708.   (IF(OR(= cpt "C")(= cpt "c"))(SETQ CPT ' "Nhà H?p"))
    " i5 P8 q# M+ s  Q+ O
  709.   (IF(OR(= cpt "O")(= cpt "o"))(SETQ CPT ' "Phòng Làm Vi?c"))  y' P( T  q- n2 l# {1 g
  710.   (IF(OR(= cpt "M")(= cpt "m"))(SETQ CPT ' "Phòng Ng?"))
    ! t' e- @: U, I( o& o* Y* j3 ]3 h
  711.   (IF(OR(= cpt "D")(= cpt "d"))(SETQ CPT ' "Phòng B?p-An"))7 v6 _- B* L5 F
  712.   (IF(OR(= cpt "S")(= cpt "s"))(SETQ CPT ' "Nhà Kho"))
    # B" y! L- m* j1 y0 x
  713.   (IF(OR(= cpt "L")(= cpt "l"))(SETQ CPT ' "Phòng d? Ð?"))/ b+ O5 `7 V* V# b- H+ j
  714.   (IF(OR(= Cpt "KK")(= cpt "kk"))(SETQ CPT ' "Nhµ BÕp")): k. C' I- T' A& S; l$ r7 R; e8 R) g) R  f
  715.   (IF(OR(= cpt "BB")(= cpt "bb"))(SETQ CPT ' "Phßng VÖ Sinh"))& D0 c1 U$ K7 R
  716.   (IF(OR(= cpt "CC")(= cpt "cc"))(SETQ CPT ' "Phßng Häp"))
      D( A1 M: M" i$ d$ \5 c
  717.   (IF(OR(= cpt "OO")(= cpt "oo"))(SETQ CPT ' "Phßng Lµm ViÖc"))
    . y0 q4 |( N8 W- x
  718.   (IF(OR(= cpt "MM")(= cpt "mm"))(SETQ CPT ' "Phßng Ngñ"))
    / m, b6 |% c# r( D9 V* m4 x
  719.   (IF(OR(= cpt "DD")(= cpt "dd"))(SETQ CPT ' "Phßng BÕp-¡n"))9 r/ ~9 e% _9 s
  720.   (IF(OR(= cpt "SS")(= cpt "ss"))(SETQ CPT ' "Nhµ Kho"))# H1 X4 B4 o2 T) ~# s
  721.   (IF(OR(= cpt "LL")(= cpt "ll"))(SETQ CPT ' "Phßng §Ó §å"))
    ) \) o" I+ x% B/ H. B
  722. (setq pta (getpoint& S4 A8 q0 \# ]4 w$ Y7 t3 V
  723.     "\nPick first corner. : "))1 p: t7 V* M& u+ k! P
  724.   (setq ptb (getcorner pta" t0 j8 q: j) ~: }' _# i
  725.     "\nPick second corner. : ")); W3 {) u3 V: F; s. R
  726.   (setq ptc (list (car ptb)(cadr pta)))$ t) b3 }* p* @
  727.   (setq ptd (list (car pta)(cadr ptb)))0 U, A) ~0 C% f/ d# H# ~: D
  728.   (setq ang (angle pta ptb))8 f9 ?- N7 [! b2 _+ _/ G
  729.   (setq d1 (/(distance pta ptb) 2))
    $ }( b5 n3 I- B4 W
  730.   (setq cp (polar pta (- ang (dtr 0)) d1))+ e3 S) Q6 @  w8 T3 J' r
  731.   (setq X (distance pta ptc))  J% l+ e8 j0 m5 t
  732.   (setq Y (distance pta ptd))( k0 n, P2 E3 Z/ d
  733.   (setq X1 (rtos x 2 1))
    6 G" [: O: |" Z
  734.   (setq Y1 (rtos y 2 1))
    2 B; H; E) M# _3 J( q+ \' [9 l" j. l& `6 u
  735.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))/ e) y$ Z3 ^5 [
  736.   (command "TEXT" "c" cp "0" CPT "text" "" rmsz))' v. X8 v' k: ]7 H& b. @/ \
  737.   (defun dtr (angg)
    2 d$ a; ^+ z* {
  738.   (* pi (/ angg 180.0)))
    , D+ q$ k. n, d9 G# S8 H: C& P

  739. 8 Q$ f5 g& m$ R0 }2 b7 I
  740. ;;; ================================ GHI CHU ============================
    , E$ H# e% @% O: i' }+ q# L
  741. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========
    ' \6 M2 \2 j3 ~6 a9 _* q1 Q' R
  742. ;;; =======================Thuong Dung Font Romant.vnh===================8 g: v$ c- c9 }6 p. [

  743. 6 a6 V. b0 k6 R& F# d, M6 ^
  744. (defun c:GS (/ a b c d)$ U' w% F/ O  R8 K4 C% t! r& t
  745.   (graphscr)" t) ~' S' n4 i/ N
  746.   (prompt "\nSelect text to set style....")9 M6 W# V6 e/ C; S
  747.   (setq a (entsel)): [% o1 T) c2 @/ {
  748.   (setq b (entget (car a)))' q4 H- o4 s) A  o9 ~1 n0 O3 Y$ \
  749.   (setq c (cdr (assoc 7 b)))
    ; ^' k! m0 H+ u: r. m5 {) d1 p0 c# p
  750.   (setq d (cdr (assoc 40 b)))
    + |" P% |2 ~  ~- R$ Y' c9 }
  751.   (command "style" c "" d "" "" "" ""))  ~, w" |9 m% r% \
  752.   (princ "\nType GS to set text style.")
    ( u; C! r# p5 m# r7 A, n& r
  753. 6 D, C. G: ?, Z0 X' A: w
  754. (defun c:RC (/ olderr ocmd oblp pt1 pt2 pt3 pt4 l w)
    1 o' b  ~' ~7 s
  755.   (setq olderr *error* *error* myerror)
    5 }  w7 V: o- F! L; z$ l/ O! D
  756.   (setq ocmd (getvar "cmdecho"))
    2 S9 l1 H& y$ P8 Y4 G, w
  757.   (setq oblp (getvar "blipmode")). y7 V1 A9 z. Q1 l9 C' C" h
  758.   (setvar "cmdecho" 0)6 Y! j6 |, ?, t/ j0 d% b
  759.   (initget 1)                         ;3D point can't be null
    5 l, ~5 |' `1 E1 X: H
  760.   (Setq pt1 (getpoint (strcat "\nCorner of rectangle or square: ")))) U  r( t+ p# ]+ c
  761.   (setvar "ORTHOMODE" 1)
      V3 Y5 k; C- b9 @" y1 E  q
  762.   (initget 7)                         ;Length can't be 0, neg, or null" v- ^4 u+ Z4 t% O5 a0 i
  763.   (Setq l (getdist pt1 "\nLength: "))5 |$ O. W/ G; X
  764.   (Setq pt2 (list (+ (car pt1) l) (cadr pt1) (caddr pt1)))# T7 L" J# `- t# @' F+ h
  765.   (grdraw pt1 pt2 2)
    ( P5 u& N5 V4 O  d* ?: C
  766.   (initget 7 "Square")                ;Width can't be 0, neg, or null' B3 E% L. [" A& [
  767.   (setq w (getdist pt1 "\nSquare/<Width>: "))
    ; @5 _1 I8 b2 s% H
  768.   (if (= w "Square")
    % O4 F6 w; N5 N2 N9 M/ C1 M
  769.       (setq w l), p+ A6 |1 p1 T9 a2 M
  770.   )4 G7 H0 |( O5 @
  771.   (setq pt3 (list (car pt2) (+ (cadr pt2) w) (caddr pt2)))
      y4 Y% i7 Y9 V; J1 j
  772.   (setq pt4 (list (car pt1) (+ (cadr pt1) w) (caddr pt1)))
    $ _$ v" M3 U, Q/ o$ l
  773.   (grdraw pt2 pt3 2)
    3 R" u* t6 k$ F% r. {: Y
  774.   (grdraw pt3 pt4 2)- V. a4 B! W' V; M
  775.   (grdraw pt4 pt1 2)5 K2 @5 ]: G( O2 z4 Y5 O9 |7 e
  776.   (setvar "ORTHOMODE" 0)4 F* N5 a8 L. F  E
  777.   (command "pline"  pt1 pt2 pt3 pt4 "close")
    0 X" L& E# G* h4 R
  778.   (setvar "cmdecho" ocmd)
    / }2 _8 |% }6 [. }# `% n
  779.   (setvar "blipmode" oblp)+ A/ b9 ^! q+ y! w: v4 z( r  i
  780.   (setq *error* olderr)               ; Restore old *error* handler
    ! S$ I2 W! S2 R. R/ m( d) U
  781.   (princ)
    * Y1 Q1 o4 H" n) Z0 M9 ]" e" H9 L
  782. ); v3 Q0 E1 ~% b

  783. 2 Y" i6 Z* _  p- N
  784. (defun c:SG (/ ent pt1 pt2 ang)
    . F" K. N5 F0 r5 S/ M4 {
  785.   (setq cmd (getvar "cmdecho"))
    4 c- n6 Y" p+ c# |- q; ?- t
  786.   (setvar "cmdecho" 1)
    4 ]5 w  ?  \( l  L6 M: X
  787.   (prompt (strcat"\nSnap angle will be set to angle of line"))
    6 D9 d# `) U- |' ~8 N
  788.   (setq ent (entget (car (entsel))))
    / M$ h, J  g+ r* G0 A0 U% |: m
  789.   (setq pt1 (cdr (assoc 10 ent)))
    # M( D. F# U1 n- O. Y
  790.   (setq pt2 (cdr (assoc 11 ent)))
    4 B2 a% e" n, ?& h+ k0 ]
  791.   (setq ang (angle pt1 pt2))
    . L3 t4 J( D2 B0 m4 ?9 ?
  792.   (setq ang (/ (* ang 180.0) pi))) p7 C: S" c8 u: a4 a& G
  793.   (setvar "cmdecho" 0)7 w: Q% Z1 }( x6 H" @& l4 W% @
  794.     (command "setvar" "snapang" ang)
    ( G9 g% ^# b+ L. E3 F9 Q" f9 n, Q
  795.     (setvar "cmdecho" cmd), |4 H8 i( G+ _) Z
  796. )
      y% R# ]! U" B$ k* J

  797. ( o4 K. p+ M6 M; c# u4 g# ]  M' ~) i
  798. (defun C:TG ()- B$ R# d# B0 a; h& S
  799.   (initget "Increase New")% q$ S9 u' B/ Q8 F
  800.   (setq ans (getkword "Increase/<New>: "))( w7 J/ O! P" \. o) A
  801.   (modang)1 P- F7 @& O: O& @% }0 w
  802. )- X% y+ n9 w7 h% `3 ]
  803. (defun modang (/ ang ss ca e na ssl)
    3 x. ^3 P/ k' T" d2 W9 D# O
  804. (if (= ans "Increase")
    $ L! U3 x/ t$ P7 S1 v2 Q# E, w
  805.      (princ "\nIncrease angle for text by: ")
    $ q2 s# `9 S* X6 H
  806.      (princ "\nNew angle for text: ")
    ( Y4 d# P  q& q7 X* [9 j
  807. )
    4 ], S( c* y+ @" K) F4 K
  808. (setq ang (getreal))
    7 b% c% E$ f/ g
  809. (setq ang (* (/ ang 180) pi)), _; _+ g: ]4 Y
  810. (setq ss (ssget))
    9 L3 O( J: V' y' |
  811. (setq ca 0 ssl (sslength ss))
    % N8 U) J& F( D0 P# Y* S, J
  812. (while (< ca ssl)
    . y5 S0 p, d2 ]. o/ I
  813.   (if (= "TEXT" (cdr (assoc 0 (setq e (entget (ssname ss ca))))))
    0 I" ~( v5 M- d' M, {1 r
  814.    (progn
    4 `; o. B( M8 f. T/ N
  815.     (if (= ans "Increase")- H/ U3 k" l" D* F, Q0 s! _
  816.         (setq na (cons 50 (+ (cdr (assoc 50 e)) ang)))
    - N4 Y8 N4 @2 L" B. G7 w7 M
  817.         (setq na (cons 50 ang))7 @% @/ t0 ]" ~
  818.     )
    ( s5 J4 e! s: l( R/ m$ S+ Y
  819.     (setq e (subst na (assoc 50 e) e))
    0 M, j6 x3 y4 @/ v5 x3 m& h
  820.     (entmod e)2 Z7 q/ B2 Z$ h# B
  821.   (setq ca (1+ ca))( ]+ O. |1 V# K/ ?
  822. )
    6 v  W0 y5 L/ k2 V' l2 y) K# k
  823. )) c' q; [( _5 c5 l
  824. )! X  p" k8 d$ Q$ R
  825. (terpri). W& b$ c5 \6 u7 a
  826. ). a; O9 \; ]* a$ }% z

  827. $ l, _! _& M) I; ?$ K+ t

  828. 2 n3 F; ^4 K; C8 C/ x6 ?$ b
  829. (defun c:WL ()& M6 A' ~# j; ~6 L, b5 H. y
  830.   (setvar "cmdecho" 0)
    , y0 \: r& i$ [5 w: n: N
  831.   (setq a 1)
    ( J  @% C0 x; ?8 ?4 c+ b, m
  832.   (prompt "\nSelect Polylines to change: ")$ |2 {2 F$ Y' t' k$ C4 f
  833.   (while (/= a nil)* A( D) k- t8 Z9 u) d2 T
  834.     (progn2 E. t3 D) o+ w; l7 k
  835.     (setq a (entsel))
    + v1 L0 x7 F  C# ?+ B+ O& w4 X
  836.     (if (/= a nil)
    6 g2 ^  c! w; @2 r2 b( o" l
  837.         (progn
      W, ^, l( W: `; Q2 x! `
  838.           (setq b (entget (car a))). T$ ~2 q# ^4 ^0 r$ C  a) k
  839.           (setq c (cdr (assoc 40 b)))6 E9 E7 T& g8 l: G0 o6 R- q. i! \
  840.           (princ c)
    0 }# h$ |0 \- B  O
  841.           (command "pedit"a"w""lw""")8 F4 q2 U9 e$ B
  842.         )))) 7 j2 I, w8 D1 k# w6 V
  843.   (princ)* h6 Y2 n8 Y  C! D; O% H
  844. )4 D  Z. q7 b! C* O; ]

  845. 1 N+ _7 G$ B, w4 |( U& U; C
  846. ;;; ================================ TEXT FIT ============================+ r, ]; Y. ^- U; m7 y* v* K: G( ^
  847. 0 v: V$ a' A" P/ V$ j  F0 W
  848. (Defun c:FT ( )! `1 N% C! h% _2 j9 S, A
  849.   (defun setsnapang (arg /) (setvar "snapang" (angtof (angtos (cdr (assoc 50 arg)) 0 8) 0 ))  ); @4 d9 v  S% A4 Q: Z" p2 o7 w
  850.   (Defun LL-xyz (arg) (CAR (TextBox arg))  )
    ' O2 r' n* o. Y) l  l
  851.   (Defun UR-x (arg) (CAADR (TextBox arg))  )' |8 ~2 |+ l5 z
  852.   (Defun LL-y (arg)     (CADAR (TextBox arg))  )/ t1 a. {* W! g# P
  853.   (Defun LR-xy (arg)     (List (UR-x arg) (LL-y arg))  )
    . ]* a+ U$ E  M8 N$ i
  854.    (Setq ename (CAR (EntSel "\nSelect Text to stretch/shrink:"   )  )
    : \, b, n) r2 ?% f" m5 Y* g
  855.       Textent (If ename (EntGet ename))   )   
    : M/ ]3 h$ e# {9 i
  856.    (If (= (CDR (Assoc 0 textent)) "TEXT")0 g2 s/ b1 ^- D* V4 h2 d* }( X$ X
  857.       (Progn (initget 0 "Start")
    : L# H  g. R0 a2 w3 l- _
  858.          (Setq  NewEnd  (Distance  (LR-xy Textent) (LL-xyz Textent) ) )! `1 `* S) A) @7 K# N
  859.          (setsnapang Textent)                 ;set snap along text entity
    : y& @6 w( ~7 X3 _
  860.          (setvar "ORTHOMODE" 1)                   ;drag along the text/ D. S( W  P" O9 R; C/ O+ S
  861.          (setq
    $ E7 i9 Y6 u( D  y, ?1 P% N+ S# _
  862. TMP (getpoint (cdr (assoc 10 Textent)) "\nStarting Point/<Pick new ending point>: ") )7 m2 M5 Y9 H. {8 P% D
  863.          (setvar "snapang" 0)
    , {7 r, C. ^3 |
  864.          (cond) X* u% B1 H$ p; O, ~
  865.            ((= (type TMP) 'STR) ;;new starting point to be selected
    0 ?8 i* V) W$ V* E5 h
  866.                (setq Start (getpoint "\nPick new starting point: "))
    4 @, H6 o2 T( I& `" c% y/ f! }7 f
  867.                (if Start  (progn7 s$ l! F- o7 w( @
  868.                   (command "_UCS" "_E" (cdr (assoc -1 textent)))4 i+ \! X% P  p9 Q% v
  869.                   (setvar "ORTHOMODE" 1)
    & ]+ t9 t, a; `) }, T
  870.                   (setq NewPt. o0 R4 `# j* \7 D% Q8 ], M5 G
  871.                         (if Start
    $ p5 T0 L$ ?* g, Y
  872.           (getpoint (trans Start 0 1) " ending point: ") nil ) )5 w; ]8 W& s: M
  873.                   (if NewPt (setq NewPt (trans NewPt 1 0)))* I4 Y: C, {1 L3 K( m
  874.                   (setvar "ORTHOMODE" 0)
    / I5 I. m! e0 x- n7 x. h. R
  875.                   (command "_UCS" "_W") ) ) )
    7 o$ P4 _8 H4 s( y) D
  876.            ((not (null TMP))    ;;new ending point selected9 v& t0 X1 k% z/ z- x
  877.                (setq Start (cdr (assoc 10 Textent)) NewPt TMP)  )! ^3 u+ O, _+ k$ J7 w9 @' w% {
  878.            (t  (setq Start nil NewPt nil) ) )
    7 p( f& ]/ {" S$ c+ ~
  879.          (if (and Start NewPt) (progn
    1 x& C3 t2 J- |
  880.            (setq Val (Assoc 41 Textent) ;;current width factor
    ) c0 K. Q4 R2 e1 ]
  881.                  Val (if Val (cdr Val) 1.0)  LTC_%       # N1 b  T, j/ ]* W5 o, }; J
  882.           (* (/ (Distance Start NewPt) NewEnd ) Val )9 {2 A# L% Y! l3 Q8 [$ Z, J1 A
  883.                  textent (Subst (cons 41 LTC_%): o9 T9 D+ f( ?4 F1 d3 J
  884.            (assoc 41 textent) textent)( l9 Z# j4 `' p- y/ [7 w
  885.   textent (subst (cons 10 Start) (assoc 10 textent) textent)+ o+ ?9 `& @+ w6 }! X
  886.   textent (subst (cons 11 NewPt) (assoc 11 textent) textent) )
    # r& T; b3 r' J' `) T4 N% }
  887.    (EntMod textent) (EntUpd (cdr (assoc -1 textent))))))) (Princ)). g; n" T0 Z0 V2 F' ]
  888. ( \  y9 }2 j4 k' G& P. Y( |
  889. ;=====================================================================
    8 a$ H2 l$ p, @9 @
  890. ;=========================COPY + ROTATE ==============================
    & {$ P$ @; g. w  m% @
  891. ;=====================================================================
    , u/ g1 ?2 e+ u$ Q" d8 [  f

  892. 7 Q9 Y. w1 M1 \9 V1 h& |2 K. q/ v
  893. (defun c:CR(/ olderr cm loop ss1 ss2 bp mult lent ss2 lp1 lp2)
    ; o* a# [7 y' i8 I8 z
  894.   (setq olderr *error*
    ' F' t0 E1 B3 ?1 v
  895.         *error* croerr)
    & a: P+ `$ P6 O9 y
  896.   (setq cm (getvar "cmdecho"))
    ; T0 U; K, ~0 `' F" P& p. [5 H/ M
  897.   (setvar "cmdecho" 0)* z; b8 R3 w$ G
  898.   (setq loop t)
    : |4 |7 ^/ j, ~. E! [( B% a  r5 A( k
  899.   (while (not (setq ss1 (ssget))))
    4 V& t6 E0 j" w1 X4 a' ?1 ^
  900.   (initget 1 "Multiple")
    8 A8 d9 v: R5 }1 z- }! C) Q0 Y- d
  901.   (setq bp (getpoint "\nBase point or displacement>/Multiple: "))
    0 d, |1 K% y) H3 t: S1 U3 G
  902.   (if (= bp "Multiple")( [3 k4 W; V- I
  903.     (progn% y+ F6 p) p& i4 g% Z
  904.       (setq bp (getpoint "\nBase point: "))) k1 t4 }; m% x; Y
  905.       (setq mult t)' {7 v, e. y  W0 i+ w7 @
  906.     )
    4 _  C# T! t' _6 [" g2 A
  907.   )  q# `6 q. }( [/ e2 F3 y
  908.   (while loop
    / b, y9 ~3 Y' i2 b& Z* N5 B
  909.     (setq loop mult)5 V) _" U, d$ P. M3 z
  910.     (setq lent (lastent))4 B) d9 `/ m' w+ _: Z# C
  911.     (command ".copy" ss1 "" bp bp)
    & N" v- ^4 `  h" B( h' X/ ]% S* K
  912.     (setq ss2 (lss lent))
    + `9 M( g" K# Y( _% R' j2 p
  913.     (setq lp1 (getvar "lastpoint"))3 b2 B& d. f& s! K  c
  914.     (prompt "\nSecond point of displacement: ")
    3 A! L7 O# a; ^$ t' {% \
  915.     (command ".move" ss2 "" bp pause)! k1 U# A" b& s( I3 V
  916.     (setq lp2 (getvar "lastpoint"))  z( P2 L8 T$ G# D$ S1 X) {
  917.     (redss ss1)3 w# I* u9 V3 \4 A3 F8 U% E
  918.     (if (and (not mult)" B+ j+ d5 F  R! i) ]7 d
  919.              (= (distance lp1 lp2) 0)
    ' I  n/ s  e) a' ^3 m$ D
  920.         )  ~4 M" c# i& G7 d  s; |
  921.       (setq lp2 (getpoint "\nRotation Point: "))2 _8 l* l2 Z8 W
  922.     )' O/ H& l" m6 L# `( \- l) z
  923.     (if mult: [! s3 S4 ]0 c# k3 F% T% @
  924.       (prompt "\nRotation angle ")6 z' p8 m3 D2 E7 ^. N5 |. X) e2 n
  925.       (prompt "\nReference/<Rotation angle>: ")
    , {1 Q- B. O0 @( K3 ]! t
  926.     ): A% W7 B, Z: m( `5 t* s
  927.     (command ".rotate" ss2 "" lp2 pause)
    $ f. a; f- d. B
  928.   )
    : _8 x: c3 e4 Z5 ~" D5 [" w
  929.   (setvar "CMDECHO" cm)
    - y% M7 T( z5 s1 Q
  930.   (setq *error* olderr)) d! t6 ^+ @% X0 f
  931.   (princ)
    # T( n, M9 y, k: n) |/ ?& R* K
  932. )
    + @8 z8 h5 N2 g8 r( g. |
  933. (princ)  ~' c; U6 g4 c! R8 C6 p1 h( o
  934. (defun croerr (s)        
    # t) a9 a5 b& A) Q& j6 P* B0 Q7 @
  935.   (if (/= s "Function cancelled")
    7 p3 S/ Q3 A$ z
  936.     (princ (strcat "\nError: " s))
    ' b& n, d; g0 J# R
  937.   )
    3 }! G- J7 {$ [6 H. I7 O
  938.   (setq S nil)
    # v6 l( I5 p0 a, H6 s7 w* ^
  939.   (setvar "CMDECHO" cm)7 X* \) r7 }( m
  940.   (setq *error* olderr)" W. Z  p+ |3 ^6 M+ N* k, }
  941.   (princ)
    & ^& [! _! B- l) `# @( S7 ?$ g
  942. )
    $ [, a0 D+ o; f4 j% i* [2 b
  943. (defun lastent (/ a b)& ?+ V$ ~! U0 K% b' Z. z8 {4 c. |
  944.   (if (setq a (entlast))
    ) L; p, Y) m: B* J% {
  945.     (while (setq b (entnext a))& B/ h+ \: e/ i  N6 Q
  946.       (setq a b)6 }  f+ R8 N; i- n7 D5 t0 S) y' P
  947.     )6 p% b0 H2 \* g. o' c, [' {
  948.   )
      j- l) ?+ f2 a+ T0 {" ]* y( R
  949.   a  v4 [1 O  \2 u9 j# {. G
  950. )
    + s2 D: X% t* m8 I- h
  951. (defun redss (ss / en i)
    / E' Q8 i; F' P& U) x7 A$ ]# j" y1 s% e
  952.   (setq i 0)
    ) `6 y" n, y& F- d+ A8 Z# q
  953.   (while (setq en (ssname ss i))
    - {0 {: U$ F7 ], B
  954.     (redraw en 1)6 |) U" G3 Y; X8 X5 p- q
  955.     (setq i (1+ i))1 n- k* U; s( i" ?1 T; \2 x$ i
  956.   )  B1 t- |9 t+ r- x, T- Q- R* E6 L, @  M
  957. )1 c6 e- f9 {6 _, N
  958. (defun lss (en / sels ed)
    . z  y2 S7 }5 U! o
  959.   (setq sels (ssadd))( v0 l7 o2 W( D- J
  960.   (while (/= en nil)1 z% {9 ]4 S/ `7 d' Q% j0 F
  961.     (if (setq en (entnext en)) (setq ed (entget en)))
    + j( N. ?, R1 e, [
  962.     (if (/= en nil) (setq sels (ssadd en sels)))( V$ l. d; H. H0 p: l) w+ k
  963.     (if (or (= (cdr (assoc 0 ed)) "Polyline")) @! ^0 I. Q3 [/ a8 A  \% z% l8 z: C
  964.             (= (cdr (assoc 0 ed)) "Insert")& q( I6 K1 Q% @: i) h& |
  965.         )
    $ L" q9 S* ?4 u. |3 d+ j0 X$ i
  966.       (while (/= (cdr (assoc 0 (entget (setq en (entnext en))))) "Seqend"))
    1 k! G: H0 x, U+ l) P
  967.     )
    + K2 y8 {( V. u) w
  968.   )
    0 v8 d" W/ ~) x8 x& P9 K
  969.   sels
    5 M0 u( \) V" ~5 Q. G. A6 @  Q
  970. )1 F$ H, y- ^. Z2 n& A: K" Z5 q& L
  971. 3 v" z. }" m9 S2 j& G: h
  972. ;;;; ================== CAC FUNCTIONS DUNG TRONG ACAD.LSP ==================' T. D: j/ o" q. g

  973. 6 L( d7 q# X4 z! c- S
  974. (defun c:00 ()(princ "\nChon doi tuong net Defpoints")(ssget)(command "change" "p" "" "p" "la" "Defpoints" ""))7 Y5 F# X+ y! C5 N  [) l
  975. (defun c:0 ()(princ "\nChon doi tuong net 0")(ssget)(command "change" "p" "" "p" "la" "0" ""))
    0 `/ s! o* i3 j5 M5 e
  976. (defun c:1 ()(princ "\nChon doi tuong net COT")(ssget)(command "change" "p" "" "p" "la" "COT" ""))
    # o" K* f" y4 P+ u& l
  977. (defun c:11 ()(princ "\nChon doi tuong net DIM")(ssget)(command "change" "p" "" "p" "la" "DIM" ""))6 K- y/ X  e4 l8 @5 {# \. n/ P$ N
  978. (defun c:22 ()(princ "\nChon doi tuong net MANH")(ssget)(command "change" "p" "" "p" "la" "MANH" ""))* T. W; k  a2 d. r0 n
  979. (defun c:33 ()(princ "\nChon doi tuong net NETMANH")(ssget)(command "change" "p" "" "p" "la" "NETMANH" ""))
    : ~7 n3 i0 w. p# m1 n% H3 ~! G
  980. (defun c:2 ()(princ "\nChon doi tuong net NETDUT")(ssget)(command "change" "p" "" "p" "la" "NETDUT" ""))( m8 s% ?; P9 E6 ~
  981. (defun c:3 ()(princ "\nChon doi tuong net NOITHAT")(ssget)(command "change" "p" "" "p" "la" "NOITHAT" ""))7 P% o% T+ R) e  ~$ r9 ?; @
  982. (defun c:4 ()(princ "\nChon doi tuong net TUONG")(ssget)(command "change" "p" "" "p" "la" "TUONG" ""))$ L1 _2 `) q2 {' h; t5 a" f
  983. (defun c:44 ()(princ "\nChon doi tuong net KHUNGTEN")(ssget)(command "change" "p" "" "p" "la" "KHUNGTEN" ""))) W4 X6 o0 T! d+ r4 E! c
  984. (defun c:5 ()(princ "\nChon doi tuong net TIMTUONG")(ssget)(command "change" "p" "" "p" "la" "TIMTUONG" ""))
    ! E  |) M0 W! x6 F0 u3 ~/ S
  985. (defun c:6 ()(princ "\nChon doi tuong net CUA")(ssget)(command "change" "p" "" "p" "la" "CUA" ""))
    4 X. h5 h8 n* \1 D2 S
  986. (defun c:7 ()(princ "\nChon doi tuong net THAY")(ssget)(command "change" "p" "" "p" "la" "THAY" ""))
    - s# P# i5 D7 ]" Y5 p
  987. (defun c:77 ()(princ "\nChon doi tuong net NETTHAY")(ssget)(command "change" "p" "" "p" "la" "NETTHAY" ""))# M0 e. l: w# J9 A; S: p4 \
  988. (defun c:8 ()(princ "\nChon doi tuong net HATCH")(ssget)(command "change" "p" "" "p" "la" "HATCH" ""))" K. P( B% n8 Z7 w; l" l
  989. (defun c:9 ()(princ "\nChon doi tuong net TEXT")(ssget)(command "change" "p" "" "p" "la" "TEXT" ""))
    % o% R! t7 g7 [# j
  990. (defun c:99 ()(princ "\nChon doi tuong net CUAMATDUNG")(ssget)(command "change" "p" "" "p" "la" "CUAMATDUNG" "p" "C" "bylayer" ""))
    8 D% m! o0 i9 A
  991. (defun c:td ()(princ "\nChon doi tuong net THEPDOC")(ssget)(command "change" "p" "" "p" "la" "THEPDOC" "")): I% p" X, T( i
  992. (defun c:ddt ()(princ "\nChon doi tuong net THEPDAI")(ssget)(command "change" "p" "" "p" "la" "THEPDAI" ""))
    6 t" K$ Z4 k3 K0 J& E+ B

  993. ; D' \/ K0 s+ L% I
  994. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =============1 |; N+ Q8 D9 z

  995. # E" v8 Y3 V1 @
  996. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =============
    9 T! B; O, K( n& C+ I
  997. * p, U7 p; l/ G( s$ ?1 e
  998. (alert "Using the NetXuatAnh-[ 5940.00 x 4200.00 <pixels> ] command!")  w8 E: X+ J6 R) |, }5 x" J# `+ Y3 X
  999. (princ "\nEnter (DEFUN C:netxuatanh () to get to real LAYER command.\n") (command "NETXUATANH")
    ) g! O5 H) Z, L$ c# n
  1000. 7 \1 U# p  A( X
  1001. ;=============== DAT LAYER NET de xuat anh JPG [W x H] [5940.00 x 4200.00] ===DRAW===% L- I# v; [: w/ o& S" Q3 O4 `' `$ n

  1002. 1 m* V) H, Z6 y" E; M1 }+ [) `
  1003. ;(DEFUN C:netxuatanh ()- t- e. N; K. _; I) D7 ~
  1004.                  (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.6" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "5" ""
    5 J9 o* C' q, |$ C1 O9 s1 P+ x
  1005.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "1.58" ""
    # N% ~# D3 `* x( |
  1006.                                            "M" "MANH" "C" "9" "" "Lw" "0.5" "", s* w4 F, f) ]# h6 A2 G( C
  1007.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""
    6 Q5 N6 T, P# k% A+ K
  1008.                                        "M" "DIM" "C" "1" "" "Lw" "0.6" """ z* @, j* B( n( H
  1009.                                        "M" "THAY" "C" "7" "" "Lw" "0.7" ""
    * l5 R% a) ^& o1 e* J) S
  1010.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.5" ""- j* I0 p& F  l# ]6 C' A" v% F
  1011.                                        "M" "HATCH" "C" "5" "" "Lw" "0.35" ""
    1 a3 T0 H' ~5 w" e8 M2 j
  1012.                                        "M" "COT" "C" "2" "" "Lw" "2" "", j- M" M6 x1 z- E! t$ y
  1013.                                        "M" "Defpoints" "C" "7" ""3 A+ p$ `1 X' {" ^  D" V# S
  1014.                                        "M" "0" "C" "3" "" "Lw" "0.5" ""+ `5 F1 o3 m* L0 X$ O
  1015. ;                                       "M" "1" "C" "1" "" "Lw" "0.5" ""
    ' N' H4 [' ]* `, c4 ?, t
  1016. ;                                       "M" "2" "C" "31" "" "Lw" "0.5" ""
    ) d) I9 U1 R: G2 h1 h4 z& s' v8 j$ }" E
  1017. ;                                       "M" "3" "C" "8" "" "Lw" "0.35" ""$ H( Y) ~1 [( |' c
  1018. ;                                       "M" "4" "C" "4" "" "Lw" "0.8" ""
    0 r0 r: [( u+ l- \( Q- u
  1019. ;                                       "M" "6" "C" "6" "" "Lw" "0.35" ""( z. d9 E2 D+ ^3 t2 n9 J
  1020. ;                                       "M" "7" "C" "7" "" "Lw" "0.4" ""9 H# }0 T& V1 ]0 N3 H  N" x
  1021. ;                                       "M" "8" "C" "8" "" "Lw" "0.35" ""! @) ]; K/ D7 g% s( u
  1022.                                        "M" "DAY-DIEN" "C" "3" "" "Lw" "0.5" ""
    9 ~/ `( O  n& M2 v1 D
  1023.                                        "M" "DUONGBAO" "C" "7" "" "Lw" "1" ""
    ) R  B% z* `: g! x0 C. I8 N" L* M3 A
  1024.                                        "M" "KE" "C" "8" "" "Lw" "0.3" ""2 v4 X# r1 N8 r
  1025.                                        "M" "KT" "C" "9" "" "Lw" "0.35" ""
    0 L5 F( r( g* H% q- ~
  1026.                                        "M" "NETTHAY" "C" "255" "" "Lw" "0.7" ""
    2 F( J; Q; g  M$ v" t
  1027.                                        "M" "NETMANH" "C" "43" "" "Lw" "0.5" """ S  Y, p( }6 D0 X& w& D
  1028.                                        "M" "TBD" "C" "2" "" "Lw" "0.8" ""
    ( F4 f: i4 f8 Z# E
  1029.                                        "M" "TEXTTXT" "C" "7" "" "Lw" "0.4" ""
    3 _. @& R& A9 p& ?$ ?
  1030.                                        "M" "TEXTVN" "C" "132" "" "Lw" "0.4" ""
    ' u2 ?  K, o3 \, G9 P
  1031.                                        "M" "THEPDAI" "C" "3" "" "Lw" "0.7" ""5 ~+ @/ D6 N! k' Q1 H3 s
  1032.                                        "M" "THEPDOC" "C" "2" "" "Lw" "1.58" ""1 h. i1 v% Z1 a( V4 Q* {9 {* [
  1033.                                        "M" "CUA" "C" "6" "" "Lw" "0.5" ""7 N  I+ l! j% ?  {/ {9 d
  1034.                                        "M" "CUAMATDUNG" "C" "6" "" "Lw" "0.5" ""
    3 D: E' s4 J9 f5 b' m' R/ [

  1035. 9 k8 u  W( i8 w! S  C- b5 j1 s
  1036. ;=============== DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] ===NUOC===- V$ L$ R/ S. E) u  t; \2 C

  1037. 2 J* g, `$ o% Q/ S
  1038.                                        "M" "10-VAN_KHOA" "C" "10" "" "Lw" "0.5" ""
    3 }, R2 b' f$ }& `# I
  1039.                                        "M" "4-WateR_IN" "C" "4" "" "Lw" "0.6" "" "LT" "FENCELINE1" ""1 `% z0 j. n4 |% C/ d
  1040.                                        "M" "4-WateR_OUT" "C" "4" "" "Lw" "0.6" "" "LT" "FENCELINE2" ""/ a7 l3 G2 ^4 V: f
  1041. ;                                       "M" "250" "C" "250" "" "Lw" "0.35" ""
    4 H$ {& z3 X. A- p0 v$ I# Y; ?- E! U
  1042.                                        "M" "KHUNGTEN" "C" "4" "" "Lw" "1" ""
    6 ]6 V! ~: `0 t" T
  1043.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.5" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "10" "" )
    : Y6 g. \9 a8 \+ r
  1044. % ~6 n+ h" Q. g& s+ g
  1045. ;=============== DAT LAYER TEXT de xuat anh JPG [DIM] [TEXT] [GHI CHU]======
    $ j- x8 D* N( e) v
  1046. ;===================================30|04|2024==============================: w; t! Y8 M% ^, b* I* Q- k

  1047. : b4 Q; x1 I0 s2 j1 w4 l/ n/ e5 q
  1048.                      (Command "-style" "Vni-VietNam" "vn_vni,vns.shx" "0" "1" "0" "n" "n" "n" )
    1 j' O. h5 V& F9 ~% u2 H
  1049.                      (Command "-style" "Vni-ROMANS-TEXT" "vni-romans,vns.shx" "200" "1" "0" "n" "n" "n" )3 r/ N1 U6 Z4 p! d% M
  1050.                      (Command "-style" "COTES" "verdana" "" "1" "0" "n" "n" )
    $ h8 o1 y2 {6 `
  1051.                      (Command "-style" "TRUC" "impact" "0" "1" "0" "n" "n" "n" )
    6 n% N$ Y! D$ E' P
  1052.                      (Command "-style" "VNHELVLT-Hoa" "vnhelvh,vnh.shx" "500" "1""0" "n" "n" "n" )2 \4 T% I: X  w( Q3 M
  1053.                      (Command "-style" "VNHELVLT-Thuong" "vnhelv,vnh.shx" "500""1" "0" "n" "n" "n" )
    ! b, a/ u' s0 ]. _: v" O: U8 s
  1054.                      (Command "-style" "STANDARD" "Verdana" "200" "1" "0" "n" "n" "n" )
    - P) L. x1 O; Y* ?: o4 F% Y  P
  1055.                      (Command "-style" "VERDANA" "verdana" "200" "1" "0" "n" "n" )' Z6 V! N7 c! y
  1056.                      (Command "-style" "ROMANT-DIM" "romant,vnh.shx" "0" "1" "0" "n" "n" "n" )
    8 b& z0 J9 N' {% F
  1057.                      (Command "-style" "ROMANT-TEXT" "romant,vnh.shx" "200" "1" "0" "n" "n" "n" )(princ)
    1 Z" R$ U+ f- u- i

  1058. ; e  x# _, R' \* g9 ^: B3 p- b1 }
  1059. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=6 y: V) U4 J) }% A3 O% i. q. J
  1060. ;===================================17|10|2024===================================
    ; `- M+ o- q( p# V( t
  1061. " c  U2 f9 }* Z& M9 m; X
  1062.                      (Command "DIMTXSTY" "ROMANT-DIM" )
    9 D& s+ c* P& g! Q4 ^( @$ U
  1063.                      (Command "DIMBLK" "" "Closed" )2 y( {% }3 L7 |# h/ B/ C1 {
  1064. % M6 w; j$ h2 e$ E5 w5 ?
  1065. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=% T! i% y" Y# b. }' C
  1066. ;===================================17|10|2024===================================
    " ]* r/ w& H' P0 T( x- {# _- ^+ ~
  1067. / z5 H! _6 x4 T' R! a. T4 g3 \
  1068. ;(Command "-units" "2" "8" "1" "8" "" "N")7 B& Z# @4 q; S# q- A" v5 V
  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)
    & i0 d8 E' t  u5 ~* W

  1070. 0 u, F; g5 B2 [; M+ x( y
  1071. ;============= DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =DIM-STYLE=
    - K  ^4 D% w+ x5 C4 L* V
  1072. ;===================================17|10|2024===================================0 M6 W  G4 w. c5 T# f  l  X0 z7 h

  1073. ; D# E& J: R1 \# W5 Y" I: Y
  1074. ;======== KET THUC - DAT NET IN de xuat anh JPG [W x H] [5940.00 x 4200.00] =====3 r: C5 ^' |4 G9 d5 ^, K+ K

  1075. . ?4 ?2 s+ b! s
  1076. ;======================== DAT NET IN & TI LE BAN VE =============================) q" I* g: [2 Z$ K' {( T

  1077. % ]* o! w0 N9 x3 ?; L' G9 C  v# x
  1078. ;=================LENH VE KHUNG TEN - Tieu Diet Lenh==================
    8 I2 F! d# F) v& w# d
  1079. ;=============== DAT KHO GIAY BAN VE - KIEU KHUNG TEN ================
    ( }: n5 m: d, o! C/ `6 Q
  1080. ;=============================11|07|2025==============================
    ; O  w3 X1 c' A8 c3 [4 A) W4 u
  1081. ;Ti Le Ban Ve - 1 : 100) X* w  v4 h% |/ X- R; o
  1082. (Defun c:kta4 ()5 s$ D0 c& Y# \6 l& Z
  1083.     (setq mv_sc 100);Ti le  ban ve8 U) n4 }# H- ~2 i1 B
  1084.       (setq x4  297)/ j3 D; }3 K( k4 i2 k
  1085.       (setq y4  210)
    8 L4 U% S7 Z* G) |! V! |% A
  1086.   (setq x4 (* mv_sc x4) 5 ]4 }6 r/ ^- W
  1087.         y4 (* mv_sc y4)  )
    4 N( S  s' E, S$ q1 ?" L! m' r4 p
  1088.   (command  
    " v6 s4 w6 B/ k) k
  1089.     "LIMITS" "0,0" (list x4 y4)
    4 Y$ V/ v% q( k
  1090.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"( z  u* G" S# K& q1 o9 C$ i6 U, Y; D
  1091. ;Khung CHU NHAT Chinh    ' ]" H" g+ e- T8 f4 M3 c
  1092.     "RECTANG" "500,500" "@28700,20000"7 I/ F4 K  c7 }; E) x$ R
  1093.     "RECTANG" "700,700" "@28300,19600"
    ' B& R0 e& Z, Z% w# f1 V
  1094. ;Khung Ten Chung5 M: j& t: s. N3 h2 m7 `1 b# [8 h
  1095.     "RECTANG" "700,700" "@8000,1250"" B$ e* T% A$ a- Q
  1096.     "RECTANG" "700,700" "@17300,2500"' c. F1 O  ~! s" i1 H0 V( f
  1097. ;Ten Ban Ve1 s! x! }* r& W; B7 A: k+ }
  1098.     "RECTANG" "18000,700" "@11000,1250"
    ! K; f  b5 Y1 f- _$ A+ z
  1099.     "RECTANG" "18000,700" "@11000,2500"# y- D2 _/ |7 w% b
  1100. ;Khung Ti Le + Ngay Thang Nam. G, {! H* k( F
  1101.     "RECTANG" "22500,700" "@2000,2500"
      p6 T  C, f$ h
  1102. ;Khung CHU TRI( m6 B2 v  ~: m: D% o5 W" b; Q
  1103.     "RECTANG" "8700,700" "@3800,2500"
    , g$ i- P2 o) a  z5 f1 S0 y  k
  1104. "ZOOM" "_a"  ))
    # f  _0 z1 L5 e$ H
  1105. ;=====================================================================
    ( ~3 @% ^2 K, |7 Y  w
  1106. ;Ti Le Ban Ve - 1 : 100% q  |" C6 m, D2 n2 Y* B7 N  e+ O* ~
  1107. (Defun c:kt4a ()
    1 x: d1 x( P( F5 w& ~
  1108.     (setq mv_sc 100);Ti le  ban ve
    % {0 m' S  a; Y$ }2 b7 b
  1109.       (setq x4  297)
    $ ~9 M$ h0 U! U" N  ]$ h6 A/ f
  1110.       (setq y4  210)
    % `+ U5 w+ N- r& Y7 N
  1111.   (setq x4 (* mv_sc x4) + P# Y. n, D( O+ f
  1112.         y4 (* mv_sc y4)  )
    ! g2 k0 M1 d% g% e# j+ F  c
  1113.   (command  ; O# B4 Y* P) H$ r1 j
  1114.     "LIMITS" "0,0" (list x4 y4)9 e  M& M, ?6 k
  1115.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C", y1 G( J  M5 k" B' A
  1116. ;Khung CHU NHAT Chinh  6 n1 ^+ ~4 d/ P% [: F
  1117.     "RECTANG" "2000,500" "@27200,20000"  R+ c! {* N/ Q
  1118.     "RECTANG" "2200,700" "@26800,19600"3 Z  R! A: O. \& l: s9 g5 `7 {% ?
  1119. ;Khung Ten Chung
    0 F4 G% x9 s5 C" x: M$ }
  1120.     "RECTANG" "2200,700" "@6500,1250") V# w, I& O+ Q& d: o
  1121.     "RECTANG" "2200,700" "@15800,2500"7 u& D0 k  L( A3 S# l6 H9 I! O
  1122. ;Ten Ban Ve: f* W+ Q4 {3 U
  1123.     "RECTANG" "18000,700" "@11000,1250"4 `& Y$ P! q+ }* i( Z: D
  1124.     "RECTANG" "18000,700" "@11000,2500": K; @) n! F, }" g0 e$ \
  1125. ;Khung Ti Le + Ngay Thang Nam: {/ L9 t  T6 H% X
  1126.     "RECTANG" "22500,700" "@2000,2500"/ T; z& T  o* q) {4 ]
  1127. ;Khung CHU TRI
    . x- K9 \6 [6 t1 b# N/ P
  1128.     "RECTANG" "8700,700" "@3800,2500"
    - R+ S# W3 e8 g' u1 Y' C
  1129.     "ZOOM" "_a"  ))
    # V1 u! ]& P. o  f& l

  1130. / a! i/ u' p, l
  1131. ;;; ============================GHI CHU Khung Ten========================. g) e$ R. ?: P: Y$ g% B' e1 k
  1132. ;;; ======== Phai Vao STYLE Tao LAYER Ten TEXT + Phai Dat Height ========0 B- G, H- b  `. k
  1133. ;;; =======================Thuong Dung Font Romant.vnh===================
    ) C5 J( z! S6 w, U9 A7 J
  1134. ) ~3 D. S4 }6 g- }, Q. G9 g
  1135. (defun c:GhiChu (/ pta ptb ptc ptd X Y X1 Y1 rmsz pl1)
    & z7 Q1 @: `$ {: V6 D( e9 U
  1136.   (setq oer *error* *error* err2)
      ?. O5 R7 Z. Q
  1137.   (PROMPT "\nChuTri. ThietKe. KiemTra. TiLe. Ngay. HangMuc. QuyMo. KieuNha. CongTrinh. KyHieu. TenBanVe. Kts. TranNgocThang. ")
    # [# I/ W) Z/ A) i7 @4 r4 Y
  1138.   (SETQ Cpt(GETSTRING "\n(CT). (TK). (KT). (TL). (Ng). (HM). (QM). (KN). (CTr). (KH). (TBV). (Kts). (TnT). "))
    + B0 u% u1 c0 N* ?& g) @4 L
  1139.   (IF(OR(= Cpt "QM")(= cpt "qm"))(SETQ CPT ' "Hå S¬ ThiÕt KÕ Nhµ D©n Dông quy M« :"))
    4 c6 D% F" a5 ?
  1140.   (IF(OR(= cpt "KN")(= cpt "kn"))(SETQ CPT ' "2 TÇng 1 Tum Thang"))
    8 k" b9 \4 {" C/ d) R( q/ o
  1141.   (IF(OR(= cpt "CT")(= cpt "ct"))(SETQ CPT ' "Chñ Tr× :"))
    4 A) N; b( _" X2 N2 _) |
  1142.   (IF(OR(= cpt "HM")(= cpt "hm"))(SETQ CPT ' "H¹ng Môc :"))
    + N, {! o8 r7 W: s) K4 W
  1143.   (IF(OR(= cpt "CTr")(= cpt "ctr"))(SETQ CPT ' "Nhµ ë Gia §×nh - Nhµ LiÒn KÒ"))
    : a2 ^, k  U! A" [& X* h7 l
  1144.   (IF(OR(= cpt "TK")(= cpt "tk"))(SETQ CPT ' "ThiÕt KÕ :"))
    ( J; @- j8 K$ P7 Z( [2 x! L7 U9 Z
  1145.   (IF(OR(= cpt "KT")(= cpt "kt"))(SETQ CPT ' "KiÓm Tra :"))
    ' e- w# W* r1 {! n9 s( z
  1146.   (IF(OR(= cpt "TL")(= cpt "tl"))(SETQ CPT ' "TØ LÖ :"))% O& M7 h; }2 h) M0 M
  1147.   (IF(OR(= cpt "KH")(= cpt "kh"))(SETQ CPT ' "Ký HiÖu :"))/ u2 h3 `7 K; S) Q
  1148.   (IF(OR(= cpt "TBV")(= cpt "tbv"))(SETQ CPT ' "Tªn B¶n VÏ :"))" \2 z7 K: ]; ~  ]9 O
  1149.   (IF(OR(= cpt "Ng")(= cpt "ng"))(SETQ CPT ' "Ngµy :"))
    ' Z/ t: N& `9 e
  1150.   (IF(OR(= cpt "Kts")(= cpt "kts"))(SETQ CPT ' "Kts. TrÇn Ngäc Th¾ng"))" K. D/ O; h9 K% r8 P- g
  1151.   (IF(OR(= cpt "TnT")(= cpt "tnt"))(SETQ CPT ' "TrÇn Ngäc Th¾ng"))) Q4 }0 `8 R, a7 I) ]" {3 ]! {
  1152. (setq pta (getpoint
    8 n; {! }% K- u( ]- @# O
  1153.     "\nPick first corner. : "))
    2 Q( ?% b  H* i0 C9 z/ e
  1154.   (setq ptb (getcorner pta3 Z$ \' u! i$ j( N
  1155.     "\nPick second corner. : "))
    ) Z& I! Q1 \8 ^  H% k* \
  1156.   (setq ptc (list (car ptb)(cadr pta))): M* ~5 {, N  J1 u# T  Y
  1157.   (setq ptd (list (car pta)(cadr ptb)))
    8 |* l9 E) a7 i
  1158.   (setq ang (angle pta ptb))
      ^( }/ \4 [4 i* U' V
  1159.   (setq d1 (/(distance pta ptb) 2))
    % e  ?4 n0 g# H% [# Z
  1160.   (setq cp (polar pta (- ang (dtr 0)) d1))
    4 z3 ?4 r& _! }# C1 d4 @+ d
  1161.   (setq X (distance pta ptc))/ G' K( i+ W; g3 ^& \* x) K
  1162.   (setq Y (distance pta ptd))7 r+ S9 ], t/ \# m' V
  1163.   (setq X1 (rtos x 2 1))- l+ s, q0 {9 P6 E; P$ [0 L
  1164.   (setq Y1 (rtos y 2 1))/ a/ U) L& y1 b- \* q9 M) f) V
  1165.   (setq rmsz (strcat "(" X1 " x " Y1 ")"))
    4 c( R4 {, e+ l( r$ `% W3 z: ?$ E
  1166.   (command "TEXT" "c" cp "0" CPT "text" "" rmsz))# }6 v8 K0 z7 W! E8 w! [
  1167.   (defun dtr (angg), `) f; }# X: e7 ]; N0 F6 \6 U. |
  1168.   (* pi (/ angg 180.0)))8 W; O  r+ \/ z; W( B

  1169. ' w) d* r: Z" T5 U& {0 R
  1170. ;=====================================================================
    0 v+ [  j, l) `* z
  1171. ;==========================DAT KHO GIAY BAN VE - KIEU 1========================
    : ~6 ~& ^- t  x: u) R
  1172. ;=====================================================================. h$ L( H( w! W1 X

  1173. % u' ~$ h+ |+ F9 c2 N3 G
  1174. (Defun c:a6 ()
    - S( B- ^% R1 s
  1175.         (setq mv_sc 100);Ti le  ban ve
    5 P% q0 c, l' W
  1176.       (setq x4  74.25)3 l; ~5 b: f0 z  {& Y6 d
  1177.       (setq y4  52.5)6 a' v9 _: Y4 ?8 ?( X- b
  1178.   (setq x4 (* mv_sc x4) 5 e  n) |+ @" }! T6 @8 `
  1179.         y4 (* mv_sc y4)  )
    2 u8 s6 T. Y% [  T9 t
  1180.   (command  3 Q7 b( m' {  ?8 c: x
  1181.     "LIMITS" "0,0" (list x4 y4)
    4 s8 m# b) d$ `# `. `/ q. K9 }
  1182.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    6 f7 N. @0 S  U0 U1 Q
  1183.     "RECTANG" "125,125" "@7175,5000"- }1 N# S. F2 k& B! b' P9 d8 A
  1184.     "RECTANG" "175,175" "@7075,4900"
    : g8 C: E( F1 l. C/ D" q; g4 g
  1185.     "ZOOM" "_a"  ))
    + V* W- o" G! H1 A0 D: g2 i2 j
  1186. ;=====================================================================4 K% O& F# P/ Y- O/ E7 d
  1187. (Defun c:a5 ()
    . d6 w0 P) d; r: F
  1188.         (setq mv_sc 100);Ti le  ban ve
      G! M% k! `4 O% ?6 Q( t
  1189.       (setq x4  147.5)
    / K, R2 t' [& N, Y! L* N
  1190.       (setq y4  104)" ^! N) U' s( H9 c
  1191.   (setq x4 (* mv_sc x4)
    & A& b8 b' Q/ Q" l+ g
  1192.         y4 (* mv_sc y4)  )
    ; v' R1 l1 t. ~0 K+ g
  1193.   (command  
    $ L1 `0 h8 @2 D: ^0 p' f# \4 ~
  1194.     "LIMITS" "0,0" (list x4 y4)
    . `- L4 u* i; ]  b5 K
  1195.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    ; E3 a5 n! e  M8 |
  1196.     "RECTANG" "250,250" "@14350,10000"
    . ?6 o6 a  Q- s
  1197.     "RECTANG" "350,350" "@14150,9800"3 r2 ^2 \. Q$ b% `% |9 z
  1198.     "ZOOM" "_a"  ))+ v- k7 g  o( R( @! E
  1199. ;=====================================================================0 a8 N2 d4 Z) n  T
  1200. (Defun c:a4 ()/ G8 A) L! `7 ?
  1201.         (setq mv_sc 100);Ti le  ban ve
    & Z" Q. W2 w  k$ l* B" }( ~
  1202.       (setq x4  297)
    0 _  G( |% y" Z- r; Z
  1203.       (setq y4  210)
    ) N: b1 ?; B- w* z2 k, Q- S/ m
  1204.   (setq x4 (* mv_sc x4)
    / m2 U, ?: y' ?" u
  1205.         y4 (* mv_sc y4)  ): s4 V4 X+ C  O0 O* o
  1206.   (command  : x" \# j" l+ A2 [
  1207.     "LIMITS" "0,0" (list x4 y4)
    8 C2 G& X6 G" Q0 t
  1208.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    : Q( f$ Y( e" }2 H
  1209.     "RECTANG" "500,500" "@28700,20000"
    6 v+ p/ A" H; t1 ^# {" {7 E
  1210.     "RECTANG" "700,700" "@28300,19600") q. ?/ Q5 }6 h' ~  r# }
  1211.     "ZOOM" "_a"  ))" s' f. j0 s% B1 C7 r
  1212. ;=====================================================================" ?, v9 N1 A& _' g
  1213. (Defun c:a3 ()
      M4 h8 t) {/ h$ E$ g+ s" ]* s
  1214.         (setq mv_sc 100)
    $ K6 A3 i5 o; l
  1215.       (setq x3  420)$ x7 n" \$ g5 l( Y; J- v
  1216.       (setq y3  297)
    9 g$ J. k2 F+ ?
  1217.   (setq x3 (* mv_sc x3)
    + R" U- {% ?# X0 H8 M& ]- I: ]
  1218.         y3 (* mv_sc y3)  )9 }- e8 T3 @2 W; }8 _: Z2 Q3 g
  1219.   (command  + z4 M: a2 {/ x; w+ }
  1220.     "LIMITS" "0,0" (list x3 y3)
    , H, C  o1 P$ I  H9 V( `
  1221.     "PLINE" "0,0" (list 0 y3) (list x3 y3) (list x3 0) "0,0" "_C"
    $ A. f7 J: S+ `3 Y, S* k
  1222.     "RECTANG" "707.14285714,707.14285714" "@40590,28285.71428571"
    , h$ t" B% b$ j/ J3 }, b
  1223.     "RECTANG" "990,990" "@40024.28571429,27720"* X6 b# S8 ^0 f4 ?2 J- u* x5 f1 R
  1224.     "ZOOM" "_a"  ))/ J1 O* r( u9 N' r# u  y0 X7 U  n
  1225. ;=====================================================================
    ' C7 u; T6 V# x- N- @( L5 r
  1226. (Defun c:a2 ()
    & }' {( N, H( m: r/ q# ~( l8 T
  1227.         (setq mv_sc 100)' m" o9 Z. \* i& [3 `7 n
  1228.       (setq x2  594)
    / b1 S; G3 d* G" d1 o1 R
  1229.       (setq y2  420)7 A; x: w6 P! r+ A8 |& d7 [
  1230.   (setq x2 (* mv_sc x2)
    & n+ a9 f/ m& a6 {8 Q$ n
  1231.         y2 (* mv_sc y2)  )/ f! G- }/ l* ~2 V0 M( m( M) O
  1232.   (command  5 d0 L+ B2 p& w
  1233.     "LIMITS" "0,0" (list x2 y2)
    % C* K! w. A8 k$ V
  1234.     "PLINE" "0,0" (list 0 y2) (list x2 y2) (list x2 0) "0,0" "_C", T9 o: h+ {) }
  1235.     "RECTANG" "1000,1000" "@57400,40000"
    5 b2 a8 h! G6 a* ^5 C* A/ {' I& w# K
  1236.     "RECTANG" "1400,1400" "@56600,39200"' b; q2 ?# \; s8 d$ A
  1237.     "ZOOM" "_a"  ))
    # M. W. f7 V* |- \! B) d
  1238. ;=====================================================================
    1 q# J% K9 f, U" z' |
  1239. (Defun c:a1 ()
    % P2 |+ {5 i, \' O8 i1 ~+ H' v( Z' v
  1240.         (setq mv_sc 100)
    " r. p9 b5 B* o1 b" {. j
  1241.       (setq x1  840), ~8 ~: Q, }# _# Z0 m. x' y
  1242.       (setq y1  594)
    1 ?& K' U) Q* l% K" S  o
  1243.   (setq x1 (* mv_sc x1) ! ?' |6 M, B  D0 Y
  1244.         y1 (* mv_sc y1)  ), c3 t4 `  |" p; D
  1245.   (command  
    ) U: b: s6 \( V- }$ o
  1246.     "LIMITS" "0,0" (list x1 y1)' |5 r" K- ^, K/ A; J& s" e+ G, O
  1247.     "PLINE" "0,0" (list 0 y1) (list x1 y1) (list x1 0) "0,0" "_C": Y' j1 T% m; w5 s  m8 R8 I) ?
  1248.     "RECTANG" "1414.28571429,1414.28571429" "@81180,56571.42857143"
      H! j+ ^! t. A2 R) W2 k9 v4 |3 X/ ?
  1249.     "RECTANG" "1980,1980" "@80048.57142857,55440"! n, s3 C+ H: K% E! F
  1250.     "ZOOM" "_a"  ))
    + v' b' E- Q5 v- T
  1251. ;=====================================================================
    7 H/ q$ |) k2 }7 B" G
  1252. (Defun c:a0 ()' x, `) t+ S7 W; m4 J9 Q
  1253.         (setq mv_sc 100)
    8 N! Z6 c* U! o* j4 U$ M# l
  1254.       (setq x0  1188)- `$ W  j/ n0 g. v
  1255.       (setq y0  840)
    . Y# `9 \, M6 s/ e" Q
  1256.   (setq x0 (* mv_sc x0)   d/ ^4 G' M! Q/ H8 o! \- \
  1257.         y0 (* mv_sc y0)  )/ z6 g0 O* [5 {" Z
  1258.   (command  $ m; a7 M5 h- E4 Q' G
  1259.     "LIMITS" "0,0" (list x0 y0)6 @- H/ {0 Q2 |
  1260.     "PLINE" "0,0" (list 0 y0) (list x0 y0) (list x0 0) "0,0" "_C"9 a+ P7 d8 L3 S2 T5 n
  1261.     "RECTANG" "2000,2000" "@114800,80000"
    ' _% r' F) ]/ u' ~$ ]
  1262.     "RECTANG" "2800,2800" "@113200,78400"+ v* G0 B. X8 V& f+ [) R
  1263.     "ZOOM" "_a"  ))
    " Y+ t8 W" k) ^7 }+ }
  1264. : q0 _- b8 j3 t4 |
  1265. ;=====================================================================' N- P' ?, ~/ z7 ]
  1266. ;=========================DAT KHO GIAY BAN VE - KIEU 2=========================4 F1 A4 Y/ k0 K) q6 o% R6 ]
  1267. ;=====================================================================
    * N, `0 s5 }3 L- M1 K& `

  1268. 4 ^" ~; h, ]3 i% w
  1269. (Defun c:6a ()
    - n+ G$ g" K- J, B, a- b
  1270.         (setq mv_sc 100);Ti le  ban ve
    * a9 H5 e0 [: o3 D4 k( R
  1271.       (setq x4  74.25)
    ; j. F) c5 d/ g
  1272.       (setq y4  52.5)3 ]0 A7 D1 m- o" _3 h2 E; K8 S
  1273.   (setq x4 (* mv_sc x4)
    : B$ [4 U+ Y6 r
  1274.         y4 (* mv_sc y4)  )
      ]9 z, C7 V: Z' V4 [
  1275.   (command  
      y3 m! R9 ?+ X; j$ w
  1276.     "LIMITS" "0,0" (list x4 y4)" i" B* k* ~6 ^
  1277.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    6 \4 R% }) T- J
  1278.     "RECTANG" "505,125" "@6800,5000"' k! h0 A0 ?# \  A+ p  s# ^5 G
  1279.     "RECTANG" "555,175" "@6700,4900"
    5 |9 j1 H4 F$ O
  1280.     "ZOOM" "_a"  ))# J6 s# X" ~( b( K* U2 _
  1281. ;=====================================================================7 x# b/ Q6 D1 T) t& b" W
  1282. (Defun c:5a ()
    4 n- T0 J: U2 ]. K* k3 k
  1283.         (setq mv_sc 100);Ti le  ban ve, c: U3 d2 R! r1 P: q8 W* F
  1284.       (setq x4  148.5)! b- ^6 g7 [/ {1 O
  1285.       (setq y4  105)
    1 ~# \: j0 f  v6 V
  1286.   (setq x4 (* mv_sc x4) . Q0 N: r3 O+ h
  1287.         y4 (* mv_sc y4)  )
    ; H! i$ i/ g! x  }: W: @
  1288.   (command  
    - X. H7 Q. }4 e' Z/ A% \2 R" e
  1289.     "LIMITS" "0,0" (list x4 y4)# b4 R- m2 i1 Y) E. A7 t' u4 T+ b
  1290.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"
    & ], f8 u; ~2 x  T, h
  1291.     "RECTANG" "1000,250" "@13600,10000"
    + R- ~4 v& W$ A* q/ F1 ~& a% J
  1292.     "RECTANG" "1100,350" "@13400,9800": v0 ?' S6 A% Y* V8 g1 ?; Q
  1293.     "ZOOM" "_a"  ))" H1 [4 P; ?  F+ ?' G' [& ]3 \  _
  1294. ;=====================================================================
    - o* h- F) v- _- d
  1295. (Defun c:4a ()% P  q$ K- n3 [) F" s! m# H9 |5 q( _6 N
  1296.         (setq mv_sc 100);Ti le  ban ve
    ) y/ D5 I2 Q# `; W
  1297.       (setq x4  297)
    & `2 f- |) S1 m+ b
  1298.       (setq y4  210)* k' [2 h6 F3 }
  1299.   (setq x4 (* mv_sc x4)
    ; c7 ?& q" L* S
  1300.         y4 (* mv_sc y4)  )3 U+ r! y- D0 C- w" M7 @' V
  1301.   (command  
    " t( V% D1 u& S* z- Y
  1302.     "LIMITS" "0,0" (list x4 y4)
    2 s, S$ I1 l& z# ]. u1 h3 @
  1303.     "PLINE" "0,0" (list 0 y4) (list x4 y4) (list x4 0) "0,0" "_C"* J# |2 L/ g4 W( |- h! S
  1304.     "RECTANG" "2000,500" "@27200,20000"
    " ^! d% @; }# @+ }% }' l7 S# b* v7 R
  1305.     "RECTANG" "2200,700" "@26800,19600"
    - N% ~+ l, g/ n! Q& m
  1306.     "ZOOM" "_a"  ))
    ' }& M, A% @+ J1 l) T0 r3 Q( v
  1307. ;=====================================================================* {% R- n0 k8 [8 ?* T" c4 ~7 }
  1308. (Defun c:3a ()
    + y7 q" X% x' s0 i
  1309.         (setq mv_sc 100)
    + c  j, |/ J* O& a' }9 U" T7 _& X( i
  1310.       (setq x3  420.0428571429)
    , b7 s. K) T0 v7 B$ o+ x/ J6 [
  1311.       (setq y3  297)
    . a1 P0 N( n4 D2 D; r% X  L* G
  1312.   (setq x3 (* mv_sc x3)
    . Y% y+ A4 w2 Z/ e$ W+ Y
  1313.         y3 (* mv_sc y3)  )- o; y3 \: o" H; q$ h) M9 M
  1314.   (command    x, e2 ]' J! ?  a- g3 |7 _) w
  1315.     "LIMITS" "0,0" (list x3 y3)9 y4 S$ O# R5 b$ K
  1316.     "PLINE" "0,0" (list 0 y3) (list x3 y3) (list x3 0) "0,0" "_C"
    " r! f% ]' F6 U9 [( m" R, w
  1317.     "RECTANG" "2828.57142857,707.14285714" "@38468.57142857,28285.71428571"# K, A0 Z; X7 f5 `
  1318.     "RECTANG" "3111.42857142,989.99999999" "@37902.85714287,27720.00000001"' V. t/ ], @, `3 n
  1319.     "ZOOM" "_a"  ))% R' ^' l5 m% ]+ n. d  c
  1320. ;=====================================================================- i0 |  M, }3 {' p: x2 R8 s7 G
  1321. (Defun c:2a (): V1 A0 o" T) @! b. Z* ]6 t! F
  1322.         (setq mv_sc 100), U5 ~# f9 v" [. v! L
  1323.       (setq x2  594)2 q& {1 W8 G8 D8 D" O5 h2 T" M8 _
  1324.       (setq y2  420)- ]4 g. X1 n+ G3 t6 K
  1325.   (setq x2 (* mv_sc x2) ! d! N! f8 f9 x( {
  1326.         y2 (* mv_sc y2)  )
    . V. \7 S! o  G
  1327.   (command  
    ; |6 v$ r% \0 Q3 S! g; r. n" k
  1328.     "LIMITS" "0,0" (list x2 y2)
    6 `; _, U2 }/ W1 \& O
  1329.     "PLINE" "0,0" (list 0 y2) (list x2 y2) (list x2 0) "0,0" "_C"
    8 R8 ?, w& c( W; N+ V7 ~+ v
  1330.     "RECTANG" "4000,1000" "@54400,40000"
    : b7 b" Q% a; y# g4 B" M
  1331.     "RECTANG" "4400,1400" "@53600,39200"# O  o% m5 S# v' q* s" [
  1332.     "ZOOM" "_a"  ))% f& m- J9 X0 u/ Q/ C: W; \: k
  1333. ;=====================================================================
    ' @" U* [. `7 N4 l2 D0 i$ G
  1334. (Defun c:1a ()
    ! a* q: a1 V0 k+ g5 N0 w( q
  1335.         (setq mv_sc 100)
    + ]; q. M; _8 H; \  u, F5 o6 A
  1336.       (setq x1  840.0857142857)/ T4 V! C9 K; W" [
  1337.       (setq y1  594)6 ~' N8 p( l1 Q1 v" O' ]$ N1 L% Z5 z9 t; {
  1338.   (setq x1 (* mv_sc x1) % W) K2 d# T1 p
  1339.         y1 (* mv_sc y1)  )
    : A" V) R# O6 @7 T3 Z0 C
  1340.   (command  
    . l& \# @& W0 y  R" c% p* f
  1341.     "LIMITS" "0,0" (list x1 y1)- s! D( h' F5 K1 |% M7 Y  R5 V
  1342.     "PLINE" "0,0" (list 0 y1) (list x1 y1) (list x1 0) "0,0" "_C"+ H" T) J% v8 a. f3 ]# C
  1343.     "RECTANG" "5657.14285714,1414.28571429" "@76937.14285714,56571.428571436"
    * m1 M: Z4 J& d$ H& t" f
  1344.     "RECTANG" "6222.85714286,1980.00000001" "@75805.71428570,55440"
    * ?. E6 I2 F; w1 z1 N; {4 P, }4 F
  1345.     "ZOOM" "_a"  ))
    4 @( e" j! }& O- J
  1346. ;=====================================================================  Q9 f/ ~) L; k8 ~3 |5 u3 Y" B
  1347. (Defun c:0a ()5 B) v2 e* N: j4 L! z
  1348.         (setq mv_sc 100)- \6 ^3 |  M! k9 c9 f
  1349.       (setq x0  1188)
    * E. m" c5 s  I8 h( z) b. B
  1350.       (setq y0  840)# ?& t$ v1 s$ f. ?9 C
  1351.   (setq x0 (* mv_sc x0) 9 I* U$ n3 Q# a& _
  1352.         y0 (* mv_sc y0)  )& D3 E% A5 _0 I3 ?' J! }/ p
  1353.   (command  
    - d  h% E# k7 h$ m, j: \  T
  1354.     "LIMITS" "0,0" (list x0 y0)2 `* e- D! U% k; r6 |; d# j: L' f9 Q
  1355.     "PLINE" "0,0" (list 0 y0) (list x0 y0) (list x0 0) "0,0" "_C"
    # }' s" _7 ?: c7 a; M( L6 q) S0 E7 d& L
  1356.     "RECTANG" "8000,2000" "@108800,80000"7 ?& v. b* t! I0 K' x' E3 @  Z
  1357.     "RECTANG" "8800,2800" "@107200,78400"5 B7 _" T; S3 l) {4 G# T
  1358.     "ZOOM" "_a"  ))9 K" c& j; }% E9 y" \6 @- F* l

  1359. 8 s2 ~$ c, g6 I' K) ^. r
  1360. ;=====================================================================
    , l  o- O/ }, |3 K
  1361. ;==================DAT KhoGiay Theo KHO GIAY BAN VE===================4 o) @) h5 e" d" l" M9 G0 F
  1362. ;=====================================================================
    ! J8 J$ x# \6 G6 g4 v
  1363. (defun c:khogiay (/ oldlst a b c d e f g h kho TL)
    ( c- P& N. A% ^' P# J4 ^
  1364. (command "undo" "be")/ j& _7 u/ i2 t* F
  1365. (setq oldlst (mapcar 'getvar (list "CMDECHO" "OSMODE" "cecolor")))2 B/ B( b; _( p+ Y# Y8 ~7 _7 y
  1366. (setvar "CMDECHO" 0)
    7 X4 _0 f! B: t. U2 k$ ?
  1367.     (setq a (getpoint "\n chon diem chen :"))
    # }% Z; c: C$ {; u4 F( r* M
  1368. (if (not TL) (setq TL 1.00))" b* w) c! W7 q. x) e) ~
  1369. (setq TL1 (getDIST (strcat "\nScale <" (rtos TL 2 2) ">:")))5 C( J! X2 N- [6 z+ I0 Q1 r
  1370. (if TL1 (setq TL TL1)). l, o2 L6 F/ n& Q
  1371. (setvar "osmode" 0)+ T% K7 o! ^1 ~7 T: g( x
  1372. (if (not (tblsearch "layer" "Defpoints")) (Command "layer" "N" "Defpoints" ""))
    " U+ E0 e* S0 H
  1373. (initget "0 1 2 3 4")
    , \7 {! q7 w8 T; A* ~" j
  1374.        (setq kho (getkword "\Kho A0 _ Kho A1 _ Kho A2 _ Kho A3 _ Kho A4 [0/1/2/3/4]? <0>:")), K/ m. B/ s% w# o
  1375. (if (= kho "0")) P1 n4 q1 l  [6 \* U/ l; b
  1376.      (progn  [2 x5 J1 c3 ^6 K
  1377.              (setq b (polar a 0 (* TL 1189)))
    # |- P( S9 C2 a- x" {% ~" m) r
  1378.                      (setq c (polar b (/ pi 2) (* TL 841)))
    4 Y; E" w. z2 G8 o, P
  1379.                      (setq d (polar a (/ pi 2) (* TL 841)))
    ! y) s# E. K# u, a( E8 e8 D" q
  1380.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 12 12)))))6 c! T6 [+ @. z. `9 Y! k  i" T
  1381.                      (setq f (polar e 0 (- (* TL 1189) (* TL 24))))/ [3 L5 w2 k$ `: j, D; J
  1382.                      (setq g (polar f (/ pi 2) (- (* TL 841) (* TL 24))))
    $ z' w1 v- t6 V& D
  1383.                      (setq h (polar e (/ pi 2) (- (* TL 841) (* TL 24))))
      @1 b. h# M" f9 R
  1384.   (command "Pline" e f g h "c")            * X8 _+ c9 n8 Z; d
  1385. (command "change" "last" "" "properties" "layer" "0" "")& r4 n: }- M' q0 Q9 \1 D3 w
  1386. (setvar "cecolor" "4")
    ) u3 ?' z. R: P1 ?: \( J% r
  1387.   (command "Pline" a b c d "c")3 w: Q# d; r, J+ S4 P3 x% k- H
  1388. (command "change" "last" "" "properties" "layer" "defpoints" "")))   
    7 @' f- W/ |/ J: U4 q- K9 O2 g5 m
  1389. (if (= kho "1")# R* L8 P6 S. J% e( M, I
  1390.      (progn% X2 a$ B/ }. U! v
  1391.              (setq b (polar a 0 (* TL 841)))0 u* w+ {* L  s- ~
  1392.                      (setq c (polar b (/ pi 2) (* TL 594)))$ c/ h# A* r8 N/ O1 p2 {* h
  1393.                      (setq d (polar a (/ pi 2) (* TL 594)))6 O- z2 u# \5 L
  1394.             (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 12 12)))))9 I  Z8 ~7 r# J; A3 x6 W
  1395.                      (setq f (polar e 0 (- (* TL 841) (* TL 24))))
    , E8 @5 ~: Z0 a
  1396.                      (setq g (polar f (/ pi 2) (- (* TL 594) (* TL 24))))
    3 E, P% e- P3 I5 U
  1397.                      (setq h (polar e (/ pi 2) (- (* TL 594) (* TL 24))))* z+ D! }3 j/ z7 [: f
  1398.   (command "Pline" e f g h "c")            
    - |$ o8 J& d, K/ d% }
  1399. (command "change" "last" "" "properties" "layer" "0" "")
    % E& v- {9 e+ P6 \% S  j
  1400. (setvar "cecolor" "4")9 I, f" ?# @$ T$ j. f% s; n" w6 Y8 K
  1401.   (command "Pline" a b c d "c")
    - T' I9 c: u6 u" R8 t3 m% M& F0 z
  1402. (command "change" "last" "" "properties" "layer" "defpoints" "")))8 {) Q  c: k, J7 {
  1403. (if (= kho "2")
    ! i5 T1 g9 g& k) K
  1404.      (progn
    + p* d' T# a, r, L: Y0 M3 @
  1405.              (setq b (polar a 0 (* TL 594)))9 f( B% p- `/ K* e2 ^
  1406.                      (setq c (polar b (/ pi 2) (* TL 420)))5 r, ]- W3 n# F
  1407.                      (setq d (polar a (/ pi 2) (* TL 420)))" l* D, t5 g: U- M/ g4 q
  1408.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 100)))))/ L0 i: o% K$ p+ p! j
  1409.                      (setq f (polar e 0 (- (* TL 594) (* TL 20))))
    ' t, j$ ~8 ^7 Z) L0 \2 x
  1410.                      (setq g (polar f (/ pi 2) (- (* TL 420) (* TL 20))))" y1 d3 h) K' u, D% R7 f; d
  1411.                      (setq h (polar e (/ pi 2) (- (* TL 420) (* TL 20))))
    ; F8 ~, a8 O# l* C2 P
  1412.   (command "Pline" e f g h "c")            6 U7 ?7 I( R6 ^: l/ G0 J+ V+ \" g
  1413. (command "change" "last" "" "properties" "layer" "0" "")
    , q. |( Y. i" [2 s! M
  1414. (setvar "cecolor" "4")8 B! L7 p5 p( T% Z& |
  1415.   (command "Pline" a b c d "c")
    ) o5 F; O$ t2 g3 d/ d' f
  1416. (command "change" "last" "" "properties" "layer" "defpoints" "")))
    $ N) q. g3 |9 ]- f5 w- R, @+ y
  1417. (if (= kho "3")+ N+ I# d% B# _) x  e/ u' O
  1418.      (progn
    9 C2 Y) o- c( g2 R* K
  1419.              (setq b (polar a 0 (* tl 420))). d* a1 D. |. M
  1420.                      (setq c (polar b (/ pi 2) (* TL 297)))  K5 k( ]/ w( A: P/ U& o
  1421.                      (setq d (polar a (/ pi 2) (* TL 297)))
    ) s) I+ K/ ^( z- v. S% t
  1422.              (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 100)))))3 z5 Y6 e+ R/ E; j+ h. g, \
  1423.                      (setq f (polar e 0 (- (* TL 420) (* TL 20))))
    : b4 Q; U6 o) g
  1424.                      (setq g (polar f (/ pi 2) (- (* TL 297) (* TL 20))))& H9 b$ U5 M1 Y7 N4 y; d4 k
  1425.                      (setq h (polar e (/ pi 2) (- (* TL 297) (* TL 20))))* ?1 e2 G+ U- ?- R3 G- C# u. p" K! }
  1426. (command "Pline" e f g h "c")
    ) S; e# M  u6 S
  1427.   (command "change" "last" "" "properties" "layer" "0" "")
    9 D9 E) ^7 ~9 v$ u: F
  1428. (setvar "cecolor" "4"), W1 R% Q1 e7 d( U3 ?
  1429. (command "Pline" a b c d "c")2 q4 r+ f5 ~( L% Y
  1430.   (command "change" "last" "" "properties" "layer" "defpoints" "")))* j+ W3 W+ V2 Y8 w2 E* x
  1431. (if (= kho "4")
    / j; F! E% t  P- t/ U1 G; W
  1432.      (progn4 K+ _6 z- |9 c/ w$ T! b! @
  1433.              (setq b (polar a 0 (* TL 297)))8 i6 \9 Y5 P) n6 d" R
  1434.               (setq c (polar b (/ pi 2) (* TL 210)))
    6 M6 O0 J' ]# _: t3 Q4 Y1 B
  1435.                      (setq d (polar a (/ pi 2) (* TL 210)))
    9 m% ~! V+ {9 F- S, u# e
  1436.             (setq e (polar a (/ pi 4) (* TL (sqrt (* 2 81)))))
    2 H+ f0 i3 X% `& ~2 b9 x+ {
  1437.                      (setq f (polar e 0 (- (* TL 297) (* TL 18))))$ J( V0 U. o  b$ {
  1438.                      (setq g (polar f (/ pi 2) (- (* TL 210) (* TL 18))))
    " u* J" X3 v3 h4 _9 N% ?* O
  1439.                      (setq h (polar e (/ pi 2) (- (* TL 210) (* TL 18))))
    3 p$ I) n- B: L1 p$ F9 }. J( ]  c
  1440.   (command "Pline" e f g h "c")            
    - y1 a0 [1 U# R+ h3 [$ }# ^
  1441. (command "change" "last" "" "properties" "layer" "0" "")8 _' O: U. H; u2 |# }
  1442. (setvar "cecolor" "4")& m& C: q0 t( O# X
  1443.   (command "Pline" a b c d "c")
    ) G; [9 t, j; O- F
  1444. (command "change" "last" "" "properties" "layer" "defpoints" "")))% a0 y" s9 M1 G% r4 y8 C' L, d! i
  1445. (mapcar 'setvar (list "CMDECHO" "OSMODE" "cecolor") oldlst)
    " X/ T8 o% J' B8 n8 u% |
  1446. (command "undo" "e")
    5 l2 Y' K; Z2 |1 V+ b
  1447. (princ))
    ) m8 R2 U6 _1 L% G( q2 Q8 E( N
  1448. ;=====================================================================* I3 I- f" N% J) T4 j
  1449. ;==================DAT KhoGiay Theo KHO GIAY BAN VE===================  V+ B+ f6 V4 Z& b- h
  1450. ;=====================================================================
    6 S6 o2 U7 G9 q/ J7 Y- R

  1451.   W1 B, D% p! x. V  Q6 G& i
  1452. ;=====================================================================; f: }: E5 O5 Y" x) R' s
  1453. ;===================DAT Ti Le Theo KHO GIAY BAN VE====================  K5 H* U7 l$ A4 j# B3 q
  1454. ;=====================================================================
    8 ?' m7 r7 W5 @7 ^5 H

  1455. ' U* N- z  [6 x7 E# W! p8 K
  1456. (DEFUN C:SA6 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.1" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "5" ""$ Z9 C7 P* ]" }  N
  1457.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.3" ""3 b9 }, U% K' w9 ?, I6 ~7 D
  1458.                                            "M" "MANH" "C" "9" "" "Lw" "0.1" ""+ r6 J& ]: a4 V1 |
  1459.                                        "M" "TEXT" "C" "7" "" "Lw" "0.12" ""  n$ @9 _: y  K2 }+ m& d) M
  1460.                                        "M" "DIM" "C" "1" "" "Lw" "0.12" ""  |7 {3 j: M1 U& c* L8 K" h
  1461.                                        "M" "THAY" "C" "7" "" "Lw" "0.2" ""9 h0 O& ]) z  y# g9 H. o8 G
  1462.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.12" ""4 U3 y7 g1 }' ?
  1463.                                        "M" "HATCH" "C" "5" "" "Lw" "0.1" ""
    ' M/ W0 w" L7 V, z7 t
  1464.                                        "M" "COT" "C" "1" "" "Lw" "0.3" ""
    - }( s9 B, p8 O0 l. k
  1465.                                        "M" "Defpoints" "C" "7" ""
    0 f" [' s3 S7 N& J  H
  1466.                                        "M" "0" "C" "3" "" "Lw" "0.12" "". |/ R* f$ M% d7 S) w1 M, M5 @
  1467.                                        "M" "CUA" "C" "6" "" "Lw" "0.12" ""
    * J  p5 ^2 ]* t! [9 @% d. R! k
  1468.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.12" ""
    5 T  N) e8 c) ?, N
  1469.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.1" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "3" ""))
    ) {; ?1 a9 y6 q8 b
  1470. (DEFUN C:SA5 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.12" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "10" ""
    : Z; o! x& p2 A3 G6 l& W
  1471.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.4" ""* Z! B* u7 T0 F( a" N
  1472.                                            "M" "MANH" "C" "9" "" "Lw" "0.12" ""4 l( h( O; j; p: @
  1473.                                        "M" "TEXT" "C" "7" "" "Lw" "0.12" ""7 ~& }4 u+ J4 P  c2 q# F/ Z
  1474.                                        "M" "DIM" "C" "1" "" "Lw" "0.2" ""
    1 f7 P1 o, }. A
  1475.                                        "M" "THAY" "C" "7" "" "Lw" "0.2" ""
    " D7 J% l' m. v. y  I+ L1 U- o
  1476.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.2" ""
    8 X; _+ {# g7 F# b) C9 y
  1477.                                        "M" "HATCH" "C" "5" "" "Lw" "0.1" ""$ f$ m* B$ T) `+ f0 T% q6 }
  1478.                                        "M" "COT" "C" "1" "" "Lw" "0.4" ""
    $ s3 J' G" B5 a4 w
  1479.                                        "M" "Defpoints" "C" "7" ""+ S* `# z$ |/ a4 A* T
  1480.                                        "M" "0" "C" "3" "" "Lw" "0.2" ""0 C' {; ~$ u5 D! P2 H% _
  1481.                                        "M" "CUA" "C" "6" "" "Lw" "0.12" ""
    ' s4 @. ?6 H6 y1 ]
  1482.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.12" ""
    * y4 H& m% X5 O6 S0 ~" ~6 r
  1483.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.15" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "5" ""))
    0 F( {; Y6 h: s" r4 V  R
  1484. (DEFUN C:SA4 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.2" "" "LT" "ACAD_ISO03W100" "" "" "LTSCALE" "20" ""
    ( m# u: @+ g: ~
  1485.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.6" ""
    9 ^0 j0 m6 W2 t% ?0 ~2 q
  1486.                                            "M" "MANH" "C" "9" "" "Lw" "0.2" ""$ B* C( f, G  O9 G. q; j4 {
  1487.                                        "M" "TEXT" "C" "7" "" "Lw" "0.2" ""5 D; ?: y. Q- u! G7 M, q) g3 g
  1488.                                        "M" "DIM" "C" "1" "" "Lw" "0.25" """ U: l3 {0 q; F4 r+ Q6 T5 h
  1489.                                        "M" "THAY" "C" "7" "" "Lw" "0.35" ""
    2 E" x( m6 t+ Q0 h
  1490.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.25" ""' }+ q3 Q4 v* U5 q3 Z
  1491.                                        "M" "HATCH" "C" "5" "" "Lw" "0.15" ""8 F9 L& r% u$ e8 b" z
  1492.                                        "M" "COT" "C" "1" "" "Lw" "0.6" ""  I' o; F. P' F5 Z4 t
  1493.                                        "M" "Defpoints" "C" "7" ""/ d6 _; q4 i5 {; F
  1494.                                        "M" "0" "C" "3" "" "Lw" "0.25" ""; m$ p2 X0 i1 c8 |: p. U* k
  1495.                                        "M" "CUA" "C" "6" "" "Lw" "0.25" ""
    : n0 ?" T5 V$ P5 A
  1496.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.25" ""# E" |6 M8 B. B% b: F, g
  1497.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.2" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "10" ""))
    + g8 E! ^; C+ F" k9 s- {7 M
  1498.         & o7 P5 f3 s) k& `, g$ m
  1499. (DEFUN C:SA3 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.35" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "30" "". i% w6 ]$ D- ^" J5 V2 B
  1500.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.7" ""
    - u% E. b; x/ ]  N
  1501.                                            "M" "MANH" "C" "9" "" "Lw" "0.25" ""
    " Z8 S: k6 k) [- ^/ y
  1502.                                        "M" "TEXT" "C" "7" "" "Lw" "0.2" ""
    . r  m  o- f$ W4 F, ?3 z4 e  `
  1503.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""
    ; `8 a- S0 S" C, Q2 f  |( ^  A! F
  1504.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""+ Q- P3 a! g! Y, b- }5 ^# R
  1505.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.25" ""* N  \, R+ V; y# P7 P
  1506.                                        "M" "HATCH" "C" "5" "" "Lw" "0.2" ""
    ' v9 v' _8 Y4 i  M
  1507.                                        "M" "COT" "C" "1" "" "Lw" "0.7" ""
    : V( t  A4 Y- s/ j& C5 I
  1508.                                        "M" "Defpoints" "C" "7" """ \( t/ D' W) H, _( a+ Q0 Y5 V
  1509.                                        "M" "0" "C" "3" "" "Lw" "0.25" ""
    , _( @1 L4 \  v4 Y3 a5 @
  1510.                                        "M" "CUA" "C" "6" "" "Lw" "0.35" ""
    / I3 M) x& }& h( m) R! |) V! }
  1511.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.3" "". L0 {, H: P0 h, _- ^* r+ y
  1512.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.25" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "20" ""))(PRINC)
    : c: [1 E/ f& x

  1513. 7 z8 h' A3 Q2 g* T/ ^: W/ a7 |
  1514. (DEFUN C:SA2 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.35" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "45" ""
    1 x( H; k# T2 {  V  v, w
  1515.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.7" ""4 g2 [* r+ l  ]: R' b) T8 U
  1516.                                            "M" "MANH" "C" "9" "" "Lw" "0.25" ""
    : g- w7 N" R# E% m$ D0 b& o
  1517.                                        "M" "TEXT" "C" "7" "" "Lw" "0.25" ""
    : F! A3 R* \. n8 d
  1518.                                        "M" "DIM" "C" "1" "" "Lw" "0.3" ""
    5 Z% R* v- S4 @2 X
  1519.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""
    6 b: V$ {" K3 @( V( d
  1520.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.3" ""' d1 c% s4 [# s/ @2 f
  1521.                                        "M" "HATCH" "C" "5" "" "Lw" "0.2" ""9 T7 K, K: h* ]8 k, w
  1522.                                        "M" "COT" "C" "1" "" "Lw" "0.7" ""
    9 ~. P3 L# u& O7 a5 v
  1523.                                        "M" "Defpoints" "C" "7" ""0 E' s& @$ E7 y- x8 z
  1524.                                        "M" "0" "C" "3" "" "Lw" "0.35" ""
    % O/ ]+ x; P+ a) O9 I( n
  1525.                                        "M" "CUA" "C" "6" "" "Lw" "0.35" ""
    2 d9 {. }7 q/ w; \7 _. {' C, T
  1526.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.3" ""
    $ S( n/ U. m& F- t  r6 V
  1527.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.25" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "30" ""))
    8 y  K% ~8 V2 ]' h/ W  i
  1528. & }) C9 z+ v& J7 B" P. _) S6 _
  1529. (DEFUN C:SA1 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.4" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "60" ""
    & N6 l" z# y/ h
  1530.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "0.85" ""
    & x2 R" ]+ c2 P2 @
  1531.                                            "M" "MANH" "C" "9" "" "Lw" "0.35" ""$ a2 y% O4 [4 |9 t
  1532.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""- a* Z" Y7 m2 A4 U& u- a
  1533.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""( v2 u$ H2 H% y3 p( d2 S
  1534.                                        "M" "THAY" "C" "7" "" "Lw" "0.4" ""
    . U, F% ~6 f! M8 k  Q1 e
  1535.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.35" ""& l4 M7 o8 U& ^2 e( u0 N- O* l
  1536.                                        "M" "HATCH" "C" "5" "" "Lw" "0.25" ""
    ) {0 Z$ Z1 T' j
  1537.                                        "M" "COT" "C" "1" "" "Lw" "0.85" ""8 Y2 R1 H  V0 Q4 q7 o5 R
  1538.                                        "M" "Defpoints" "C" "7" "") f- z# N- T: c: A* p( q
  1539.                                        "M" "0" "C" "3" "" "Lw" "0.35" ""# h* \. k5 j0 U4 R4 ~0 f
  1540.                                        "M" "CUA" "C" "6" "" "Lw" "0.4" ""
    ) w+ T$ T- ?5 H0 v
  1541.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.35" ""9 E/ k, L( ^6 _$ P( `% H
  1542.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.3" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "40" ""))
    - J/ Z6 I; X6 C; }. A0 C( }
  1543.         
    ! m) A/ M4 z5 V7 U1 c7 Y! ~4 `. w
  1544. (DEFUN C:SA0 () (COMMAND "-LAYER" "M" "NETDUT" "C" "8" "" "Lw" "0.5" "" "LT" "ACAD_ISO03W100" "" "" "" "LTSCALE" "85" ""$ W' @& C8 f9 x! r1 I, c/ b
  1545.                               "-LAYER" "M" "TUONG" "C" "4" "" "Lw" "1" ""
    6 N$ T- G9 k6 s3 E( ?9 G/ U# D, f
  1546.                                            "M" "MANH" "C" "9" "" "Lw" "0.35" ""1 ^4 Q6 C# ^( @/ k
  1547.                                        "M" "TEXT" "C" "7" "" "Lw" "0.5" ""
    + ?# B$ A6 r+ x
  1548.                                        "M" "DIM" "C" "1" "" "Lw" "0.35" ""
    0 ]- Y  B3 `- X% A9 [6 r2 H
  1549.                                        "M" "THAY" "C" "7" "" "Lw" "0.5" ""  ~7 q' A/ F  q" u) q; P8 e
  1550.                                        "M" "NOITHAT" "C" "3" "" "Lw" "0.4" ""
    4 v. m5 q* ]2 z* c, U
  1551.                                        "M" "HATCH" "C" "5" "" "Lw" "0.35" ""! i* J: ~8 ^' _9 }& w% e
  1552.                                        "M" "COT" "C" "1" "" "Lw" "0.1" ""
    9 C! G+ J& h/ _8 u8 |
  1553.                                        "M" "Defpoints" "C" "7" ""
    ! T) x6 R5 U) i, R  A1 ?6 Q3 o
  1554.                                        "M" "0" "C" "3" "" "Lw" "0.5" ""
    " g# }7 u% H3 g2 C6 s
  1555.                                        "M" "CUA" "C" "6" "" "Lw" "0.5" ""$ s4 S  A8 |6 h
  1556.                                        "M" "CUA MATDUNG" "C" "6" "" "Lw" "0.4" ""
      I8 i  U3 h/ B4 a0 u0 r
  1557.                                        "M" "TIMTUONG" "C" "5" "" "Lw" "0.35" "" "LT" "ACAD_ISO10W100" "" "" "LTSCALE" "55" ""))' e2 l+ R+ @9 C9 H  s. F
  1558. (DEFUN C:O   () (COMMAND "OFFSET")): N0 m( b: |5 J. j
  1559. (defun c:s1 () (command "surftab1"))
    ) M+ Q1 Z5 U1 j/ E( F+ u
  1560. (defun c:s2 () (command "surftab2"))% Q$ F7 d$ [- o/ l, p) b
  1561. (defun c:ep () (command "explode"))2 p. N6 ^  O' U6 A3 D
  1562. (DEFUN C:QS () (COMMAND "AUDIT" "Y" "purge" "all" "*" "N" "QSAVE"))6 F. F6 H3 Z. Q
  1563. (DEFUN C:QV   () (COMMAND "QSAVE"))3 N/ _8 O& q3 ^* Z/ R, E6 D
  1564. (DEFUN C:S    () (COMMAND "STRETCH" "C"))1 M% c' l1 B% Q1 R
  1565. - l' ^' N# K! N
  1566. ;************************** CAT DIM **************************
    # S6 _+ Z7 I; O0 p+ a8 |/ K
  1567. ! T$ L" a; t3 O7 [( @* A" x: J
  1568. (DEFUN C:DC (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI PT13I PT14I
    ! c9 G9 e+ L2 K! p
  1569.                 PT13N PT14N O13 O14 N13 N14 OSM OLDERR PT10 PT11)9 |0 `$ A! j, H3 N; H& u
  1570. (SETQ CMD (GETVAR "CMDECHO"))
    4 j, G, I+ f" j6 x
  1571. (SETQ OSM (GETVAR "OSMODE"))( k2 {: k+ ?1 [* s
  1572. (SETQ OLDERR *error*& N7 F  L, r( y8 F& [; }5 a( f7 n" w( [
  1573.       *error* myerror)
    # K! }' ~& [& G' }/ v6 \( [5 v
  1574. (PRINC "Please select dimension object!")
    " n, D+ ], l8 a- V" E, j
  1575. (SETQ SS (SSGET))
    . y' ~! G8 d$ J
  1576. (SETVAR "CMDECHO" 0)7 L7 O% ~5 Y% v, s
  1577. (SETQ PT (GETPOINT "Point to trim or extend:"))
    % I+ L! {) {5 n
  1578. (SETQ PT (TRANS PT 1 0))
    3 E, x! L& k! A$ Z. l! ?+ [/ I9 T1 {
  1579. (COMMAND "UCS" "W")0 Q# S% X0 D! ]: q1 R
  1580. (SETQ LTH (SSLENGTH SS))  K+ f0 \0 q) U, z" v. }* P& _
  1581. (SETQ DEM 0)
    ) Z; p+ j7 I* t0 P' [, o
  1582. (WHILE (< DEM LTH)& F5 c$ b8 |( Z8 I; M
  1583.     (PROGN
    # ]1 y9 b; J. `8 k. h4 r
  1584.         (SETQ DS (ENTGET (SSNAME SS DEM)))2 c4 B2 [3 Q9 n; t, v/ _
  1585.         (SETQ KDL (CDR (ASSOC 0 DS)))- [' C( e# k8 C. M+ R, h
  1586.         (IF (= "DIMENSION" KDL), P% u. c) B' U/ Y8 c
  1587.            (PROGN
    " B+ U6 f' Q+ N+ w! c8 u
  1588.                 (SETQ PT10 (CDR (ASSOC 10 DS)))
    # {9 U/ p: p, _: d1 @9 U
  1589.                 (SETQ PT11 (CDR (ASSOC 11 DS)))8 Y4 m9 v8 H: K. f# K0 Q" Z
  1590.                 (SETQ PT13 (CDR (ASSOC 13 DS)))0 @: {4 g8 @% o* M: z% p$ a
  1591.                 (SETQ PT14 (CDR (ASSOC 14 DS)))
    5 d6 O; ?/ ^( H, T8 N' M8 W
  1592.                 (SETQ N70 (CDR (ASSOC 70 DS)))
    , i$ C. y+ A9 x9 s. \% f7 n! A
  1593.                 (IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))
    - Q! z1 V* R& }. {/ h
  1594.                    (PROGN
    ( [- L$ @! V/ M
  1595.                         (SETQ GOCY (ANGLE PT10 PT14))
    2 F3 l5 G, R5 M+ a0 Z+ L! E' H
  1596.                         (SETQ GOCX (+ GOCY (/ PI 2)))
    $ v$ s8 h7 r! L0 m' J' H7 Q
  1597.                    )
    $ W" y1 c( ^( |3 r
  1598.                 )
    ( J3 u. ]( j  R% @
  1599.                 (SETVAR "OSMODE" 0)8 Z6 @0 `* C4 m9 Y3 B
  1600.                 (SETQ PTI (POLAR PT GOCX 2))3 j+ c$ ?% Y3 ~8 r2 O
  1601.                 (SETQ PT13I (POLAR PT13 GOCY 2))
    , Q4 A) E9 ?2 C+ `: t* p
  1602.                 (SETQ PT14I (POLAR PT14 GOCY 2))
    5 j+ S4 s6 O* l. ?6 k
  1603.                 (SETQ PT13N (INTERS PT PTI PT13 PT13I NIL))
    . a2 d3 G( ]+ Z; w4 n, [* G) A
  1604.                 (SETQ PT14N (INTERS PT PTI PT14 PT14I NIL))
    # ?4 o, @9 v8 R- D7 a
  1605.                 (SETQ O13 (ASSOC 13 DS))
    , }( e: k1 ~$ Y; |4 j4 S
  1606.                 (SETQ O14 (ASSOC 14 DS))5 u% Y# L* Y( L4 s: d* E
  1607.                 (SETQ N13 (CONS 13 PT13N))* Q4 w, x, S( r4 k
  1608.                 (SETQ N14 (CONS 14 PT14N))
    ) i& l8 T8 m4 Y& q0 w- x( g
  1609.                 (SETQ DS (SUBST N13 O13 DS))5 Q/ J. o$ }( r. [5 [
  1610.                 (SETQ DS (SUBST N14 O14 DS))
    ' _- E  }7 v4 g  C% D7 c. o
  1611.                 (ENTMOD DS)' s5 S$ ?! M" Z( A
  1612.            )
    % y$ `$ ^9 O, d/ S: X* [' M
  1613.         )$ f- U/ }; N9 s
  1614.         (SETQ DEM (+ DEM 1))
    ( x- A+ r6 T& d% a7 [  S& h3 ]
  1615.     )/ c8 `. O  s6 A$ {
  1616. )9 `( w. V6 N! m9 I
  1617. (COMMAND "UCS" "P")
    # i  `. s2 H: b# b/ A2 {# O7 t
  1618. (SETVAR "CMDECHO" CMD)& B4 m' ~- f0 p: Z7 t2 l" R* ]5 V
  1619. (SETVAR "OSMODE" OSM)
    * x, F5 A! J9 r% M9 |# q
  1620. (setq *error* OLDERR)               ; Restore old *error* handler
    * c0 G- _: r+ Y& Y+ [
  1621. (PRINC)
    ' ^9 B: S' }% g. Q: P5 V  u
  1622. )
    0 S- M# O5 N9 k$ j

  1623. 7 u8 p5 S$ k2 a- H  ]
  1624. (DEFUN C:BD (/ CMD SS LTH DEM PT DS KDL N70 GOCX GOCY PT13 PT14 PTI
    ; v& O/ P5 E" B; ^0 ^* `6 |7 R  R+ m
  1625.                 PT10 PT10I PT10N O10 N10 PT11 PT11N O11 N11 KC OSM OLDERR)" m3 B6 t: J$ [4 Q4 @9 k
  1626. (SETQ CMD (GETVAR "CMDECHO"))' w, Q- P+ l( B; g: e" _/ E
  1627. (SETQ OSM (GETVAR "OSMODE"))
    4 {1 d# Z0 R" w* p9 I
  1628. (SETQ OLDERR *error*) f8 B5 ]2 M! t. w" E! c
  1629.       *error* myerror)# ^2 p" |9 d0 k8 s
  1630. (PRINC "Please select dimension object!")6 m8 S. \7 T, M- t
  1631. (SETQ SS (SSGET))
    / W$ N. ?  a1 U# n* H) v5 p" H
  1632. (SETVAR "CMDECHO" 0)
    & m" {; u* N3 Z+ \& U0 |
  1633. (SETQ PT (GETPOINT "Point to trim or extend:"))* D" s. b. N, H- a0 S1 X
  1634. (SETQ PT (TRANS PT 1 0))
    8 h+ p, q8 m- S/ k
  1635. (COMMAND "UCS" "W")5 R& U  T$ o. t
  1636. (SETQ LTH (SSLENGTH SS))  k# H2 \- U* Z* u: v
  1637. (SETQ DEM 0)
    2 W4 V$ U* a! o2 G+ R$ V4 |: M
  1638. (WHILE (< DEM LTH)
    5 v8 {1 l: ~4 @) R# j: C- c
  1639.     (PROGN" X8 v0 w6 r; T5 ~. B6 ?# N7 y
  1640.         (SETQ DS (ENTGET (SSNAME SS DEM)))
    & t+ Q; f- Q: c  S, Y
  1641.         (SETQ KDL (CDR (ASSOC 0 DS)))- Z/ P" k2 F! \& Q
  1642.         (IF (= "DIMENSION" KDL)
    - K1 p0 g! b+ j
  1643.            (PROGN' K1 ?$ f, K! w' c( |
  1644.                 (SETQ PT13 (CDR (ASSOC 13 DS))). d) s! [; d& ~" i" K4 P
  1645.                 (SETQ PT14 (CDR (ASSOC 14 DS)))
    - ?7 O4 q7 j& W1 K" @) R
  1646.                 (SETQ PT10 (CDR (ASSOC 10 DS)))
    : L" b7 o# _4 t/ f  T# g# e
  1647.                 (SETQ PT11 (CDR (ASSOC 11 DS)))# i1 C/ \% w3 k/ Z" R4 l- r
  1648.                 (SETQ N70 (CDR (ASSOC 70 DS)))7 v( f4 s8 d( v3 R; x. e6 a$ x
  1649.                 (IF (OR (= N70 32) (= N70 33) (= N70 160) (= N70 161))
    6 \: T& l# J' s$ f' i
  1650.                    (PROGN+ I- ?. d, j1 m! x5 ^; s
  1651.                         (SETQ GOCY (ANGLE PT10 PT14))! @9 H9 X( Z' }
  1652.                         (SETQ GOCX (+ GOCY (/ PI 2)))
    $ Y- @2 m# ~' _" s: g9 |- t
  1653.                    )4 g3 d( \" r. D( B: w
  1654.                 )
    0 l% \$ A6 o9 Q' y0 \; g$ H
  1655.                 (SETVAR "OSMODE" 0)6 U0 \4 {% C% K8 U: {
  1656.                 (SETQ PTI (POLAR PT GOCX 2)): \7 U* i8 @( B+ t+ n. J
  1657.                 (SETQ PT10I (POLAR PT10 GOCY 2))
    ( p3 N( p3 T5 D/ S8 d4 T1 r
  1658.                 (SETQ PT10N (INTERS PT PTI PT10 PT10I NIL))
    & S7 h* G" f- t5 F7 }- m. X
  1659.                 (SETQ KC (DISTANCE PT10 PT10N))$ X% L6 {7 e. Z( e; J, c5 x# n
  1660.                 (SETQ O10 (ASSOC 10 DS))2 L( S3 h; n. n, {
  1661.                 (SETQ N10 (CONS 10 PT10N)): V0 S! Y: j% d2 J7 h7 b4 G5 T/ B
  1662.                 (SETQ DS (SUBST N10 O10 DS))
    : s+ ~. c2 K+ R8 T& K+ }
  1663.                 (SETQ PT11N (POLAR PT11 (ANGLE PT10 PT10N) KC))
    % F3 ~. |" o4 S- J
  1664.                 (SETQ O11 (ASSOC 11 DS))
    : G2 A% n2 @1 o  W! q. i: p
  1665.                 (SETQ N11 (CONS 11 PT11N))* e9 u+ G2 a6 [1 Z' z7 b% }
  1666.                 (SETQ DS (SUBST N11 O11 DS))
    3 J/ V0 Z3 @, c6 O, p0 r
  1667.                 (ENTMOD DS)
    7 c, ~" U0 P, x% e, u
  1668.            )
    - ?9 k  H- M; g6 H0 Y2 F% }
  1669.         )
    $ `9 K& P' j+ ?8 a/ x0 c( h1 ^% Z0 I
  1670.         (SETQ DEM (+ DEM 1))) M# a& a$ ?# v/ j4 c# x( L# m
  1671.     )3 |- ~8 P" `" w  m. u0 v
  1672. )8 w1 D+ ?; N* P& |( _
  1673. (COMMAND "UCS" "P")
    9 G: p- ?' `9 K2 a
  1674. (SETVAR "CMDECHO" CMD)
    # J' r9 Y0 K* p, T, y
  1675. (SETVAR "OSMODE" OSM)& [( V' t9 I0 t
  1676. (setq *error* OLDERR); N) W9 E7 `" w
  1677. (PRINC)
    * J" K$ _! u' I1 [" r
  1678. )7 H9 ^( K  h# k/ O& q# p
  1679. & A3 Q% i  C' w! j3 V% O
  1680. ;;; ================ BAT - TAT CHE DO GACH CHAN TEXT (TU) =================' M5 v3 d4 D8 [/ Q6 j
  1681. * k3 u( S; Y' r6 A! t4 C
  1682. (defun c:tu ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can gach chan ")
    8 z2 e: p' G: Y+ v' ]/ L! p, L
  1683.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")- E3 J1 N- ^3 I+ y
  1684.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    - p9 d* r# y- [  r: v/ q0 A; A0 W1 D
  1685.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))
    7 }' p' ]. d# E  [+ G
  1686.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%u")- Y: ]4 b" T4 `) u
  1687.         (= testxt "%%U"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%u" txttxt)))
    7 }, {$ M, x! J* S; Z5 B
  1688.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))
    ! u$ |$ r% z5 \2 `
  1689.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))% n) ?9 R5 x1 q1 Z0 h

  1690. " D5 `  P& C+ w9 h) ^
  1691. ;;; ================ CHEN COT (TUU) =================7 T  C. T- i! K* X; F0 Q
  1692. 9 h% C' S* i+ n- \5 }/ D: i5 @1 [3 J
  1693. (defun c:tuu ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can chen cot ")
    & |: G( ?' k+ U& c* K. W% ]
  1694.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")( l6 q9 x8 ]2 J( H
  1695.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt
    $ c9 j% N0 P* W) u% u5 S& B. |
  1696.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))
    3 E, N* D3 n! ^7 G- j
  1697.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%p 0,000")9 o% j) T3 x+ |/ l: k
  1698.         (= testxt "%%P 0,000"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%P 0,000" txttxt)))4 m8 m: c4 U6 \- @, y
  1699.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))7 w( j; d- V1 n% G: J6 v0 ~' t1 m
  1700.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))& f' ?3 m' N. e
  1701. $ g+ |( Z  O3 s0 s4 V
  1702. ;;; ================ CHEN KY HIEU THEP (TP) =================6 b6 F3 Z6 P4 D

  1703. 2 @# V$ L# R9 V; \/ R: e2 o
  1704. (defun c:tp ()  (setvar "cmdecho" 0)(prompt "\nHay chon dong TEXT can chen ky hieu thep ")$ S; {- r' P# \) O1 f
  1705.           (prompt "\nSelect objects: ")(command "select" "au" pause)(setq sstxt (ssget "p")2 l/ M( a$ C4 D0 b
  1706.         sslen (sslength sstxt) ctr 0)(command ".undo" "mark")(while (< ctr sslen)(setq listxt' t. Z" j8 b/ R5 i/ o5 B/ c
  1707.         (entget (ssname sstxt ctr))txttxt (cdr (assoc 1 listxt))enttxt (cdr (assoc 0 listxt)))2 O  c: T: K6 I4 s8 B( D- C$ ]
  1708.         (if (= enttxt "TEXT")(progn(setq testxt (substr txttxt 1 3))(if (or (= testxt "%%c")9 |  d/ c9 u% ~  V6 I0 ]+ D& i
  1709.         (= testxt "%%C"))(setq newtxt (substr txttxt 4))(setq newtxt (strcat "%%c" txttxt)))
    % z) M# C# u. ^. ~8 ]6 e
  1710.         (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))(entmod listxt)))# k0 _# W% V9 b' ]
  1711.         (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))
    0 q  s/ R& n& O1 M2 a8 @6 b

  1712. ( K8 Q6 n( O7 z# h
  1713. ;=========================== TAM TUONG (TAM) =================================
    " T/ e* ^5 T& z
  1714. 1 y" k' S4 f+ a% j2 v
  1715. (defun c:tam(/ data_m)
    1 H  W  D5 ^5 t0 O/ A
  1716.             (defun import_data(/ i)(setq data_m (ssget))(if (= nil distan_m) (setq distan_m 110.0))/ u8 Z, B& N% }* R7 i* W6 r$ s: S
  1717.             (princ "Distance (")(princ distan_m)(princ "):")(setq i (getreal ))(if (not (= nil i))
    - c9 X( z' a' ]7 t. N2 Y4 `# a# z
  1718.         (setq distan_m i)))(defun process(/ ent check)(defun p_check()(setq check 0)
    - }" u% G: }' X( s# \1 ^
  1719.         (if (= "LINE" (cdr (assoc 0 ent))) (setq check 1))(princ))(defun p_d_offset
      b3 O! E! F' P; b+ V
  1720.         (/ p1 p2 p3 p4)(defun makeline(/ e2 e5)(setq la (list (cons 0 "LINE")(cons 5 (cdr
    + J% r- |) _3 m4 Y) R
  1721.         (assoc 5 ent)))(cons 8 (cdr (assoc 8 ent)))(cons 10 p3)(cons 11 p4)))(entmake la)(princ)
    8 i; }6 x- B) Y  s$ H. z) s) F, z
  1722.         )(setq p1 (cdr (assoc 10 ent)) p2 (cdr (assoc 11 ent)))(if (not (= p1 p2)) (progn (if- B  l+ a6 c6 ^% s# q# B6 y
  1723.         (< (abs (- (nth 0 p1) (nth 0 p2))) 0.000001) (progn (setq p3 (list (+ (nth 0 p1)
    8 W2 t8 f) F; p) l8 R& }* J
  1724.         distan_m) (nth 1 p1) (nth 2 p1)))(setq p4 (list (+ (nth 0 p2) distan_m)(nth 1 p2)
    1 [6 h# Y. w; b  ^
  1725.         (nth 2 p2))) (makeline) (setq p3 (list (- (nth 0 p1) distan_m) (nth 1 p1) (nth 2 p1)))
    1 h) Y, }5 Z' u1 b2 X6 ?
  1726.         (setq p4 (list (- (nth 0 p2) distan_m) (nth 1 p2) (nth 2 p2))) (makeline)))(if (<$ m; _0 R/ a+ ~% m8 e
  1727.         (abs (- (nth 1 p1) (nth 1 p2))) 0.000001) (progn (setq p3 (list (nth 0 p1) (+ (nth 1 p1)
    8 N! N( D% d/ l/ h
  1728.         distan_m) (nth 2 p1)))(setq p4 (list (nth 0 p2) (+ (nth 1 p2) distan_m) (nth 2 p2)))
    : P9 `2 Q+ Y+ k
  1729.         (makeline) (setq p3 (list (nth 0 p1) (- (nth 1 p1) distan_m) (nth 2 p1))) (setq p49 m/ X' l0 {; [# ~/ W6 e, e  y/ M
  1730.         (list (nth 0 p2) (- (nth 1 p2) distan_m) (nth 2 p2)))(makeline)))))(princ))(if (not
    5 p( f* u! x+ N
  1731.         (= nil data_m)) (progn (setq i 0)(while (< i (sslength data_m)) (progn(setq ent (entget
    6 _) j4 G# @" {5 p# C8 Z8 s
  1732.         (ssname data_m i)))(p_check)(if (= 1 check) (p_d_offset))(setq i (+ i 1))))))(princ))
    1 r6 N" t* `/ L% J
  1733.           (import_data)(ai_undo_push)(process)(ai_undo_pop)(princ))- s. Z7 U- [* m1 c
  1734. 4 h9 F* X+ ^8 p! g
  1735. ;============ GHI CHU PHI (T1) ================! m3 C2 W9 h  }1 ?$ }' K# s5 o/ z
  1736. + S* g# O: n2 G" `* ?1 ^
  1737. (defun c:DuongDan ()(setq D1 (getpoint " Diem thu nhat: "))(setq D2 (getpoint "Diem thu hai: " D1))0 w% m6 q$ @& _
  1738.           (if (> (car D2) (car D1)) (setq D3 (polar D2 0 16)))(if (< (car D2) (car D1)) (setq D3( \$ B9 [( X* L3 d
  1739.         (polar D2 PI 16)))(if (= (car D2) (car D1)) (setq D3 (polar D2 0 16)))(if (> (car D2)
    9 P% ]0 b* G! a* j; J" S1 g
  1740.         (car D1)) (setq D4 (polar D3 0 3.2)))(if (< (car D2)(car D1))(setq D4 (polar D3 PI 3.2)5 p( u% P* m# F5 J; g4 U% P% E9 f, A
  1741.         ))(if (= (car D2) (car D1)) (setq D4 (polar D3 0 3.2)))(if (> (car D2) (car D1))5 v  @( h2 d; i8 m5 U
  1742.         (setq D5 (polar D2 (/ PI 9) 3)))(if (< (car D2) (car D1)) (setq D5 (polar D3 (/ PI 9)6 g: p! v; U) ]
  1743.         3)))(if (= (car D2) (car D1)) (setq D5 (polar D2 (/ PI 9) 3)))(command "color" 1)" {1 |/ q2 h2 z$ n; @
  1744.           (command "line" D1 D2 D3 "")(command "circle" D4 "3.5")(command "color" 7 )8 n% E, W8 U' r. w5 l$ [- a3 l
  1745.           (command "text" "m" D4 2.5 0 "1")(command "text" D5 2.5 0 "%%c6a150")
    * H7 v3 `. x- b! Q; `1 w$ T( r0 }0 K
  1746.           (command "ddedit" pause))
    8 ?; k; a0 ?1 N5 ^! c

  1747. 9 a: r$ n1 N+ ?# j
  1748. ;;; ========================== Join (J) =================
    + R- F3 G; H5 n# Y

  1749. $ X; J1 I. h1 b$ ?' g% ?
  1750. (defun C:J () (Setvar "cmdecho" 0)(setq m:err *error* *error* *merrmsg*)(setq sset (ssget))7 o' n! @# o( M, ~* `" ]; e+ A( v, q
  1751.            (if (null sset) (exit))(setq kt (getstring "\nJoin all (Y/N) <Y> ? "))# `# m0 B" A8 |: d/ m: O+ F, |8 ?/ m
  1752.           (setq ssl (sslength sset))(setq temp  (entget (ssname sset 0))etype (cdr (assoc 0 temp)
    . z5 W  m& G) j
  1753.         ))(cond((or (= kt "Y") (= kt "y") (= kt ""))(progn (cond((= etype "POLYLINE")9 |2 q0 F0 x( Z1 X3 [$ j
  1754.         (COMMAND "PEDIT" sset "J" "all" "" ""))(if (or (= etype "LINE") (= etype "ARC"))
    ' H' i- d5 u# ?8 }" p
  1755.            (COMMAND "PEDIT" sset "" "J" "all" "" "")))))((or (/= kt "Y") (/= kt "y") (/= kt ""))0 F  ^0 g( n6 k* t# I# _& |8 \
  1756.         (progn (cond((= etype "POLYLINE")(COMMAND "PEDIT" sset "J" sset "" ""))  7 E0 t/ g; ?; A& d2 ]" [* X
  1757.            (if (or (= etype "LINE") (= etype "ARC"))(COMMAND "PEDIT" sset "" "J" sset "" ""))))))
    . h: ?1 G+ v3 J: V
  1758.           (setq *error* m:err m:err nil)(princ))
    0 V9 `: ~% G$ q( {

  1759. 2 |  j" v9 X! X
  1760. ;=====================================================================
    * z2 b+ B. N$ `( u5 C, W" x
  1761. ;;; DOOR.LSP 1.0, Copyright (C) 1998 by CAD Department, HUCE.; v. w4 w  N3 E. c2 C  D
  1762. ;=====================================================================) i) w; v8 S# I' c5 v1 g
  1763. / M3 o  H9 h' _/ K7 d6 I3 ~' i
  1764. (defun C:D1 (/ p1 p2 p3 p4 side dis wid ang angsile old)
    , q& S  i4 a# l6 y( |6 u
  1765. (setq old (getvar "OSMODE"))
    0 B$ W* d/ A! J5 W9 d; W, x3 _

  1766. ! j6 M' D$ ~: B; l; Q' J
  1767. (setq p1 (getpoint "\nStart point:"))
    0 F/ t! c8 W- x6 ~+ q. g
  1768. (setq p2 (getpoint p1 "\nEnd point:"))& M- S! P& n9 F4 Q$ H- l
  1769. (setq side (getpoint p2 "\nOpen side"))
    ; j8 R1 j' \7 v9 p/ M" d/ [
  1770. , I9 U0 j4 w: T$ x2 q
  1771. (setq dis (distance p1 p2))" f2 X) m8 V. }, H: K
  1772. (setq ang (angle p1 p2))
    $ s5 |; _7 o; N" [  P4 @/ G
  1773. (if (< ang (angle p1 side))
    $ ~) w+ Z( ~, O/ `2 U3 R/ n5 |
  1774.   (setq angside    (/ pi 2) )0 S! m5 Y; k- O7 F, l0 g9 b. R
  1775.   (setq angside (- (/ pi 2)))- E# w  b6 e. V* Y
  1776. )
    2 u  U; U& E0 k/ U+ E
  1777. (if  (>= (- (angle p1 side) ang) pi)
    + y4 a) D# ^+ ^) ~- I
  1778.   (setq angside (- (/ pi 2)))" o/ U' T# K  ~
  1779. )9 a9 s, B0 k- T) T
  1780. (if  (>= (- ANG (angle p1 side) ) pi)
    & @7 t+ H7 g& x! Z) }$ a
  1781.   (setq angside (/ pi 2))
    % t3 C# l: @+ Q& H: I6 n3 l) [
  1782. )# ^2 V5 e8 H3 v2 G2 [- K0 U! l

  1783. . W4 l( ^4 m: J# u, r/ R
  1784. (setq p3 (polar p2 (+ ang angside) dis) )  }/ P+ P! y$ V$ F* T0 p/ B
  1785. (setq p4 (polar p1 (+ ang angside) dis) )
    7 e$ M5 X- V8 W! R; u( K' l
  1786. (setq wid (/ dis 15))
    9 q8 J! y$ y! ^

  1787. - H8 F6 G7 r. W+ h" {
  1788. (setvar "OSMODE" 0)  _2 j4 q8 E9 Y
  1789. ! C( @$ G0 H9 s6 `8 l
  1790. (command "PLINE" p1 "A" "D" p4 p3 "L" p2
    . y- p8 S5 q% a; {% f
  1791.                   (polar p2 (+ ang pi) wid)
    3 a  i( h. b6 b5 |
  1792.                   (polar p3 (+ ang pi) wid) 1 m3 h5 a8 N, R% h. \
  1793. "")' y2 y2 {# D7 q( R- H: x: |1 s  b' K8 o

  1794. 0 @  S" Q5 {  ?# ~5 [8 T% m' i/ ?# R
  1795. (setvar "OSMODE" old)* F! ^! C; W3 ?1 R" X0 d
  1796. (princ)
    ! A7 h5 U8 e1 L( w
  1797. )
    8 U7 I# n+ X1 B5 [* q& T1 P

  1798. " }; _/ a& t. \/ \3 d: N- H
  1799. ;=====================================================================; r( U2 P  Y+ a0 G1 J0 _( A8 o

  1800. ! O& g/ D/ K) B% w" J1 O" g" m( N0 z' i
  1801. (defun C:D2 (/ p1 p2 p3 p4 side dis wid ang angsile old)
    - a4 y' c$ j% B$ f8 o" l
  1802. (defun cua1 (pt1 pt2)
    : @9 o$ T, e5 K  T) N; |
  1803.   (setq p1 pt19 r; K4 b2 {& H. u* J: F+ g
  1804.         p2 pt2)
    ' w- v7 u3 [. M7 e/ y
  1805. 9 V9 n# \/ k- J. m! o
  1806.   (setq ang (angle p1 p2))9 E6 D; M' I# J  V9 d' ~
  1807.   (if (< ang (angle p1 side))
    ( `  d" S# z  v0 ]2 {  r
  1808.    (setq angside    (/ pi 2) )8 H7 {# d& ~+ R
  1809.    (setq angside (- (/ pi 2)))
    % J! p7 D& L- n/ z# r) N
  1810.   )& Z; `- f" C* c1 q( ~" h
  1811.   (if  (>= (- (angle p1 side) ang) pi). {- j3 {9 ?# x3 Z
  1812.    (setq angside (- (/ pi 2)))
    . x( K+ F: r/ Z! g. V# U, y3 A
  1813.   )
    * x1 P: H1 d/ j& o8 n
  1814.   (if  (>= (- ANG (angle p1 side) ) pi)' Q, G, p5 D% n. p, E$ ~
  1815.    (setq angside (/ pi 2))
    6 \* O5 f* P+ P6 o: N, D1 ^$ T
  1816.   )
    + B, m& |- }: [" U) N3 V

  1817. # x; ?% e$ X+ o; I' I3 V
  1818.   (setq p3 (polar p2 (+ ang angside) dis) )
    ! G  _4 l+ b' p: }
  1819.   (setq p4 (polar p1 (+ ang angside) dis) )( k* u5 j/ a% @. A2 z
  1820.   (setq wid (/ dis 15))
    , x5 e% h4 b) A$ ^- L5 F
  1821. ( Z5 J$ H* J, H$ l
  1822.   (command "PLINE" p1 "A" "D" p4 p3 "L" p2 % [& O  H: [6 B/ Y6 q9 U# V- S* b
  1823.                    (polar p2 (+ ang pi) wid)   _8 p6 a+ k& l% E& t, u7 K& ^
  1824.                    (polar p3 (+ ang pi) wid)
    0 ~' L% ^2 _: C2 o' h& t' x) u" M
  1825.   "")) V* T& l/ x5 j+ u1 W! Y
  1826. )  N: ?' u2 ^% _6 W8 h
  1827. ;=====================================================================
    % N) Y. H# Z5 W+ h3 p8 h
  1828. (setq old (getvar "OSMODE")) 4 F7 R6 j6 R0 s0 P& v* j

  1829. ( H9 z. `% k+ m; D- b; m2 B! n
  1830. (setq p1 (getpoint "\nStart point:"))$ H7 u5 P9 E. H( j0 X+ I0 ^, H1 M5 G
  1831. (setq p2 (getpoint p1 "\nEnd point:"))+ i# W( ]3 r: }! z" [
  1832. (setq side (getpoint p2 "\nOpen side"))
    ; B9 \' E9 D6 W6 o5 }( q( A

  1833. 0 l* [( \. `6 i! Z8 b+ {
  1834. (setq dis (distance p1 p2))
    ) O5 ~) t% D" S# M$ o- d; Q- U
  1835. (setq dis (/ dis 2))% H. ^. Q/ T2 M1 N! N% L

  1836. & |& ?' Z' C  l( X3 F
  1837. (setvar "OSMODE" 0)
    ( ^! o4 i# P6 ]# j9 |  \5 o
  1838. 4 H! k7 q% Y  z2 @) U$ d4 _5 P
  1839. (setq p1 (polar p1 (angle p1 p2) dis))% Y& Z# _6 L6 c! ^
  1840. (cua1 p1 p2)  
    4 Z+ T' v( s' `5 q8 D- y1 o: e! |/ m
  1841. + _  @" T* C) @3 v: w
  1842. (setq ang (+ ang pi))/ c3 n8 y( [0 J0 m% y
  1843. (setq p2 (polar p1 ang dis))7 z$ X- s" g3 a) Y& M& L
  1844. ; (setq side (polar p1 () dis))5 O. C( t" G2 g% y
  1845. (cua1 p1 p2)  8 M' h. m  G. Z

  1846. 8 j& W  a' k* M5 [$ i* C4 d
  1847. (setvar "OSMODE" old)
    : M- r7 V. g# l. U
  1848. (princ)) X8 D9 t" s6 o( s% \& k( F% Z
  1849. )
    ) p4 [! ?) F( k1 a3 s
  1850. 6 _; E9 O+ @( _7 i# [8 `+ e
  1851. ;=====================================================================
    : x0 G: f; d: p- u7 F3 k( |
  1852. ;"Glue" text strings.  All adopt first's properties.
    - h- ?% {" j& D0 z$ ~2 C+ C2 Y! d
  1853. ;        Author:
    % f$ q" h2 i" R
  1854. ;                Henry C. Francis  K! y* [3 h0 E- z% O
  1855. ;                425 N. Ashe St.
    % Y+ W' `% l* F1 y7 ?
  1856. ;                Southern Pines, NC 28387
    2 {; l3 M" p& H3 j- K
  1857. ;        http://www.pinehurst.net/~pfrancis
    ' i' |2 L& s7 Z& L  Z! X) L3 U
  1858. ;        e-mail hfrancis@pinehurst.net% a& q9 O  Y- d( X5 S
  1859. ;        All rights reserved.
    * F' a# |& y8 r
  1860. (defun c:gst ( / ename ent1 ent2 old1 oldsl old10 old11 old40 old50 newstr newsl new1 new10 new11)
    5 E0 ?/ w# @9 [) t; Y: n; J" \! T
  1861. (while
    1 Y; u8 y+ y7 q
  1862.   (not
    8 R* w) K+ h  {) y" Y* j* a
  1863.     (and' m. y) v( O- w0 Y. A2 |9 s  @  h
  1864.       (setq ename1 (car(entsel "\nSelect first text string to join: ")))
      J, U. d8 q& [3 G9 y7 C5 Q
  1865.       (setq ent1 (entget ename1))
    ( b3 S/ n0 l$ E' M! T
  1866.       (eq(cdr(assoc 0 ent1))"TEXT")+ D; A' J0 m! g3 Q5 B) M& u/ Q
  1867.     );and
    ( D! }3 O) `2 d0 E
  1868.   );not( m, K2 O# H8 r
  1869. );while
    ( Y2 d0 L6 U' R' w8 A7 _$ l
  1870. (setq old1 (cdr(assoc 1 ent1)))
    % u' P9 v+ I3 R2 x/ `$ |( K
  1871. (while3 @7 ]* y; c9 ]; H$ Q: l( g
  1872.   (not
      m' h3 x: b; ^/ O, x+ E2 v
  1873.     (and
    ! E9 i$ b: N, ~& q4 X( C
  1874.       (setq ename2 (car(entsel "\nSelect second text string to join: ")))9 e$ g" k; M" k( e- y6 p7 R* z; J
  1875.       (setq ent2 (entget ename2))# n$ F, e& j7 Y# H/ R) F) T) f: [9 i
  1876.       (eq(cdr(assoc 0 ent2))"TEXT")
    ' K) q  H  e. d* Y% O
  1877.       (not(eq ename1 ename2))
    . {+ T5 A; O& K
  1878.     );and! ^5 ?) M2 p& J( M
  1879.   );not7 w# `1 }& [  H, P
  1880. );while; b5 w; x! w7 x' J, [8 }
  1881. (setq old2 (cdr(assoc 1 ent2)))
    $ c% _+ b' W% R& @' @
  1882. (setq new1 (strcat old1 " " old2)
    1 _9 `- c$ z3 O: l2 V
  1883.       ent1( C& N& d5 i; q0 m5 ~
  1884.         (subst (cons 1 new1)8 e$ Y$ P$ \, C4 N
  1885.                (assoc 1 ent1)2 E: i+ W0 t: p
  1886.                ent1)1 ^* a2 f& Q1 i# x3 a. Q* V2 C, H
  1887. );setq' E5 o" i. }" D
  1888. (entmod ent1)0 Q  O+ E. e! Y) b: K6 [
  1889. (entdel ename2)/ Z! ]* I* c  _3 H" `0 `
  1890. (princ)1 P+ Y: s% o3 z0 J/ `/ z
  1891. );defun
    $ [$ z: F( A& L( @0 X* o5 s
  1892. . h3 {6 l7 P* I( D! E# u: H
  1893. ;=====================================================================. K% v3 s/ E- t( P. b( c6 \
  1894. / M6 h: _- @+ a, W6 W
  1895. (defun c:nt (/ g1 g2 ss1 olderr nterr l i temp e1 e2 new old dd dc)
    0 w$ E, @( W; E2 E

  1896. & w2 R# L9 D9 s5 M5 \  p! u. |. y' k
  1897.     (defun nterr (s): A; v8 E! m) X. @- [
  1898.         (command "_.UCS" "" "_.UNDO" "E")7 ~4 L4 |! r4 d' g
  1899.         (setvar "cmdecho" 1)
    4 Q% x4 {& @# O8 ?) J
  1900.         (setvar "blipmode" 0)) M: @% a) P7 h& i: a# Z/ ?
  1901.         (setq *error* olderr)
    + C1 P9 ~* v# ~& u- J. N
  1902.         (setq g1 nil g2 nil ss1 nil e1 nil e2 nil olderr nil
    7 Z4 J) j" K9 o$ V
  1903.                 nterr nil temp nil i nil l nil new nil old nil dd nil dc nil)* O0 H2 [' b. M7 j4 P
  1904.         (princ)
    2 }: K( G# P9 F, @% R# n7 Q
  1905.     )
    9 e, y0 L7 @! e+ O# r" b

  1906. ( F0 S: A4 v; I$ k5 S* O
  1907.     (defun tim_in (dt / p01 p02 ktra)8 P0 r/ i' {2 m$ K* g* U2 L- R
  1908.         (setq p01 (cdr (assoc 10 (entget dt))))! W! C" n" s+ k+ y8 J. _9 G+ c
  1909.         (setq p02 (cdr (assoc 11 (entget dt))))( q; g. r  e) j! o8 [! j3 Y
  1910.         (setq ktra T)
    ! J( z! r$ l2 t8 V+ v0 E! Z, T, v
  1911.         (if (and (> (car p01) (car g1)) (< (car p01) (car g2))
    " D+ I* j  W' z2 h! D3 z9 W( S
  1912.                  (> (cadr p01) (cadr g1)) (< (cadr p01) (cadr g2)))4 W/ z1 u  p7 q, `7 h
  1913.             (setq ktra nil)4 `4 y7 J9 J. S; E
  1914.         )7 C5 F$ B# k+ R6 m- Y0 S9 Q
  1915.         (if (and (> (car p02) (car g1)) (< (car p02) (car g2))
    , Q& R" h( F8 M' G( z$ g
  1916.                  (> (cadr p02) (cadr g1)) (< (cadr p02) (cadr g2)))% V7 a  D% F" V1 N' V, E* s
  1917.             (setq ktra nil)1 z& I3 F0 w" e, t7 d4 c
  1918.         )9 Q# B, {; e2 G6 k5 ^4 U
  1919.         ktra
    . o" _, Y8 ]7 @" v- k
  1920.    )
    : e, N4 ~2 g& b( f

  1921. . o& G! M$ ~! a" \& F) j
  1922.    (defun timdt (dt1 dt2 / p01 p02)
    * ^0 a! E9 R% N; Q$ r/ Y
  1923.         (setq p01 (cdr (assoc 10 (entget dt2))))
    ' ?1 Z9 R8 E4 s% b% K. o* e
  1924.         (setq p02 (cdr (assoc 11 (entget dt2))))
    - m/ ]4 S; A2 d: G  l2 b! g! O
  1925.         (setvar "ucsicon" 0)5 p1 o6 [1 W) ~
  1926.         (command "_.UCS" "E" dt1)0 W6 t2 S: ^2 A3 g  @( o4 m: e9 K
  1927.         (setq p01 (trans p01 0 1))" `5 c' Q' `2 ]5 Y! e  @
  1928.         (setq p02 (trans p02 0 1))1 h; O! F2 @& Y7 P! R
  1929.         (command "_.UCS" ""): P! C5 q4 ^; Z" Q" R
  1930.         (setvar "ucsicon" 1)
    + e% C/ L; U$ x" B9 u+ s" g# K
  1931.         (if (and (equal (cadr p01) 0 0.001) (equal (cadr p02) 0 0.001))6 D2 @: L: v! L! ?* i) K
  1932.                 T
      y/ p7 @! B0 Z
  1933.                 nil1 O7 x: u& ]8 a3 d
  1934.         )
    ' u) k: d' Y. _5 J
  1935.    )# o1 y' s6 e# n1 E' L
  1936. 6 \; f1 M6 W; F  A5 L
  1937.     (defun tim_out (dt / p01 p02 kt)7 k- B' {/ J9 Y3 }
  1938.         (setq p01 (cdr (assoc 10 (entget dt))))
    ( _7 |4 P' H; B/ P4 E
  1939.         (setq p02 (cdr (assoc 11 (entget dt))))# H* u' M0 A" n5 b" t
  1940.         (if (and (> (car p01) (car g1)) (< (car p01) (car g2)) / L! i4 g% L4 X7 G2 a& \! ?0 C5 d
  1941.                  (> (cadr p01) (cadr g1)) (< (cadr p01) (cadr g2)))
    1 Q+ P6 Y( J- d7 R
  1942.             (setq kt p02). {$ e$ n' F0 k' P! V: `. C. I* e
  1943.         )6 T$ Y+ @' E/ z( p0 l$ s% Z
  1944.         (if (and (> (car p02) (car g1)) (< (car p02) (car g2))
    ( e# v$ K5 e% C/ C
  1945.                  (> (cadr p02) (cadr g1)) (< (cadr p02) (cadr g2)))3 H9 U( V5 p) f6 a3 }/ N& p7 F
  1946.             (setq kt p01)9 u) n( ?5 U! r
  1947.         )* n8 i. A0 x7 V$ k
  1948.         kt        2 B9 H* C" k8 F6 |
  1949.    )
    4 [/ n0 ]; ^+ v! |

  1950. / o( K. w8 W5 K4 j- o
  1951.     (setvar "cmdecho" 0)
    # ?2 z- D& T$ A# r8 d
  1952.     (setq olderr *error* *error* nterr)
    # Q9 u0 U" a8 z* N2 L) f
  1953.     (command "_.UNDO" "G" "_.UCS" "")
    5 c  o, B; B7 A; T- M, r: y) B
  1954.     (while (null ss1)
    ( J$ c2 k  O! N5 T2 C
  1955.         (princ "\nChon tuong muon noi...")! t# H& o! u" Z( y/ [8 j; C  Z% F5 ]
  1956.         (initget 1)+ o6 A. G9 c, R: ?5 [
  1957.         (setq g1 (getpoint "\n>Goc thu nhat:"))
    " `- G8 D8 b8 ?" ^3 H. s- `8 w
  1958.         (initget (+ 1 32))
    9 A# e! T$ i& ?! i* d8 S# b1 t" a
  1959.         (setq g2 (getcorner g1 "\n>Goc thu hai:"))
    ; b- [; @; C) i2 v! O7 r
  1960.         (setq ss1 (ssget "c" g1 g2 '((0 . "LINE"))))
    4 d( g0 d# _2 b, Y4 `0 @& x
  1961.         (if (null ss1) (princ "\nKhong tim thay doi tuong!"))5 C( j  \- y* [( p
  1962.     )0 v5 Q! z) _. E( Y! \8 O+ [
  1963.    
    / h. Q+ n% ^. F; H
  1964.     (setq temp (list (min (car g1) (car g2)) (min (cadr g1) (cadr g2))): j% \* t$ i; R; L4 U
  1965.           g2 (list (max (car g1) (car g2)) (max (cadr g1) (cadr g2)))6 a$ M) P# w1 c+ K# e/ L: f
  1966.           g1 temp); a! c% O: E& @* s  [. _
  1967.    (setq ss1 (ssget "w" g1 g2))% ]: D8 ]5 B2 ?
  1968.    (if ss1 (command "_.ERASE" ss1 ""))* `0 ]: p& L5 v5 N( ~* h
  1969.    (setq ss1 (ssget "c" g1 g2 '((0 . "LINE"))))
    " U5 v; w/ d/ Y) D  F  N
  1970.    
    ! v+ u7 w9 W1 N0 L
  1971.     (setvar "blipmode" 0). M% `8 k) C0 d
  1972.         (setq i 0 l (sslength ss1))
    0 ~9 s6 F+ h. a4 H& I7 b
  1973.         (while (< i l)" D! e9 H' L+ M* s" x
  1974.            (if (tim_in (ssname ss1 i))
    6 }$ K& u+ h1 W7 k
  1975.               (progn
    + E- n- J8 H7 D) s6 J! R+ \" V
  1976.                     (ssdel (ssname ss1 i) ss1)( {* g9 t! K6 k; [/ q8 }7 p
  1977.                     (setq i 0 l (1- l))8 z1 U; D, P; X/ T; S; a. B9 ~+ G4 K
  1978.               )        0 |+ W% [! H* r, h0 w) K
  1979.               (setq i (1+ i))1 Z& Q5 x1 S% v
  1980.            ). c6 v9 U# K) X& B# W
  1981.         ), j4 i$ H3 d. h. `/ q& }
  1982.         (setq l (sslength ss1))& H" \6 F" }7 s
  1983.       (while (>= l 2)  N) t" q# L$ w
  1984.         (setq e1 (ssname ss1 0))% B+ @9 k# N# y' x, G; N% r1 c
  1985.         (ssdel e1 ss1)
    8 \- [* O6 A" W! f% w
  1986.         (setq e2 nil i 0 l (sslength ss1))8 c1 _+ D* `/ }$ z
  1987.             (while (< i l) / ]1 H* k- H: c8 K/ j$ R
  1988.                 (if (timdt e1 (ssname ss1 i))
    2 i, G6 L! A) w& _( J/ t
  1989.                     (progn
    , c+ r9 C2 W8 B
  1990.                         (setq e2 (ssname ss1 i))- h4 `* V" n2 g$ h, U% O: f' l
  1991.                              (setq dd (tim_out e1))
    + r+ S& G3 ]& X$ q
  1992.                              (setq dc (tim_out e2))& Q$ @* O4 z2 D/ _" h1 X( q
  1993.                     )
      q: S/ v8 w, _1 h  k* x# U
  1994.                 )
    * V" @  @$ Z0 D4 q4 L# i
  1995.                 (setq i (1+ i))
    # ^' N. `; D8 t# d
  1996.             )- w& I  h. y. s6 B
  1997.             (if e2 (progn0 p) K" b# H  V# \
  1998.                         (ssdel e2 ss1)                        ) b" P( x' a- u& n
  1999.                         (command "_.ERASE" e2 ""): @( a" _/ E$ `" ^* X0 R* k
  2000.                         (setq temp (entget e1))
    + O' D$ P  B9 t7 b/ E2 t
  2001.                         (setq old (assoc 10 temp))
    / x5 r1 Q% L1 K. n- L
  2002.                         (setq new (cons 10 dd))
      ^. g# e& H- H1 g, y: j
  2003.                         (setq temp (subst new old temp))( x/ a" K+ m9 X$ D8 n, Q
  2004.                         (entmod temp)
    9 o5 o, P6 M, I
  2005.                         (setq temp (entget e1)). o) L3 A% ]$ Y; a( L  t4 l
  2006.                         (setq old (assoc 11 temp))
    % F4 K1 U7 n8 p! E
  2007.                         (setq new (cons 11 dc))4 L9 ?' A& |/ l  ~' D
  2008.                         (setq temp (subst new old temp))
    4 x2 T1 Z' D* x" @
  2009.                         (entmod temp)
    4 o2 z, g, S$ l- l" ]
  2010.                         (redraw e1)
    8 K6 ]% A  ^% h- C
  2011.                         (setq l (sslength ss1)), j: \& e- [3 w* `, d, F- {# f/ W" ~
  2012.                    )
    , e$ w/ a% u2 i! ^- ?
  2013.             ): A' K2 E' w' ?8 [/ {
  2014.         )
    $ o9 L& P5 P! s

  2015. / E. U. o1 h/ Y/ ^
  2016.         (command "_.UCS" "" "_.UNDO" "E")
    : w9 Z& Q4 w7 w5 G
  2017.         (setvar "cmdecho" 1)
    + W; @. t& a7 u3 ]* ~1 {. W
  2018.         (setvar "blipmode" 0)0 r( m9 o6 |) ~: J1 t8 P) j
  2019.         (setq *error* olderr)
    1 R! |. c6 q0 D' [, T" u4 u: ?
  2020.         (princ)$ y# l( S7 f$ }& A/ j7 J' x
  2021. )
    * ]7 L5 ?) r: X' x
  2022. ;*********************************************************************
    6 Q8 W0 M! N5 c2 Z9 d' G
  2023. (defun ketthuc ()/ g% x9 j& X  e% t
  2024.         (setvar        "cmdecho"        luuecho)
    0 u+ ?2 G' R8 i3 a5 i
  2025.         (setq *error*        luu" g7 Y+ h+ S: E8 C$ X8 u3 F
  2026.                 luu                nil        
    " F) u4 l2 t2 R/ P( {; Z1 d, M. M" X. S
  2027.                 luuecho        nil
    7 J, o1 ~# V3 ?  n1 y- j
  2028.         );setq
    * `1 o8 U7 J1 @6 h! B8 E1 j
  2029.         (princ)5 Z+ I3 x2 R% _" W6 I3 G0 U1 U, S
  2030. )                6 w- _  ?; n5 s+ C. J( u2 e! c
  2031. ;*********************************************************************8 G# L2 @" ~! p& d
  2032. (defun modau ()0 p5 y; l: l$ q  Q. Z) s
  2033. (setq         luu *error
      @3 M% T+ G0 g: }" x
  2034.                 luuecho        (getvar        "cmdecho")! V& Z$ N. K1 M2 ^
  2035.                 *error        (ketthuc)/ s( Z" ?1 z8 F) w0 R
  2036. )! A  o$ T# q( N1 O
  2037. )! i: J4 I2 i$ o8 W! Z
  2038. ;*********************************************************************
    " ~1 b' r; L4 C7 T; X+ V
  2039. (defun xulytext (text / kytu ma sokt luusokt lui )1 G8 x* U) F7 s+ E4 c
  2040. (setq         kytu        (substr text (strlen text))1 d" @  \& [4 V! q
  2041.                 ma        (ascii kytu)
    * x' j; A# _/ a8 z; z& Y
  2042.                 sokt        (read kytu) ( h5 C) @4 h* h* f. g+ p6 Z
  2043.                 lui        18 O2 L( m- c4 T8 L9 `
  2044. )
    1 F, K+ l! Q) O3 s. _
  2045. (if (numberp sokt)
    1 X. l. {6 K6 ]9 g* P" {
  2046.                 (progn
    ) |7 r! Q4 O, a8 v6 B, ]! i
  2047.                         (setq luusokt        (1+ sokt))9 S* b. W' d; Q1 E: e
  2048.                         (if (and         (numberp sokt) - F( @) M! M6 T) Q
  2049.                                         (> (strlen text) 1)
    " R* `4 }; s$ A. W; |5 V
  2050.                             )        
    4 _) h8 g' I) C+ t7 h( z3 c
  2051.                            (progn/ G0 k( ~' A6 L, U* M' C$ o
  2052.                                 (setq         kytu        (substr text (1- (strlen text)))
    7 L$ }' b; z* y0 m
  2053.                                                 sokt        (read kytu)
    9 w2 o+ _: n  K
  2054.                                                                                 )% g# K; E% ^7 r/ U3 v% t
  2055.                                 (if         (numberp sokt) - ]9 s5 Y2 _/ |/ M, ?' L* V0 d% }
  2056.                                         (setq luusokt (1+        sokt)* t9 {9 h& b( A& p' N( F
  2057.                                                         lui         2
    8 g2 h( b2 a; ?  ?9 Z& t: g
  2058. / r' x! |  G, j8 ^
  2059.                                                 )# C" W0 l: w+ s& M7 x% Y7 q" h* O
  2060.                                 )3 s$ S' M0 a. H. _& g
  2061.                             );progn        ( H, e7 X: ?  ?, q" Y2 u
  2062.                         )
    2 j% ^/ o1 U2 {6 u, {6 q9 e- @
  2063.                         (if (= luusokt        100)        (setq         luusokt        0))5 `& b7 m7 \3 c% v% e1 z
  2064.                         (setq         kytu                (rtos luusokt 2 0)
    9 |$ N% b7 M) @1 M
  2065.                                        
    ! \# Z9 O+ h4 W: M
  2066.                                         text        (strcat        (substr text 1 (- (strlen text) lui))  kytu)
    7 s% v8 o& H% F9 ^4 r
  2067.                         )
    6 I5 |4 M: K! B! [5 n9 ?4 k
  2068.                 );progn                         & f5 b4 Y; v0 m# m6 Y9 K5 K
  2069.                 (if   (or         (= kytu "z")
    & L$ y3 M$ H/ O! G6 N! D: d
  2070.                                 (= kytu "Z")
    & K+ Q( ]' k3 E) s) F" K
  2071.                         )
    ' J) b4 }) O! @, C; \0 A3 ~/ ^
  2072.                         (setq         text                (strcat         text        "0")
    ) I! S: H: t0 I* [: t8 N6 k3 X  A
  2073.                                 textxl                "0"
    3 z# t- |0 ], ]  Z
  2074.                         )
    # Y+ I2 ^  g' u, u" r. o' C
  2075.                         (setq                ma        (1+        ma)
    3 f+ n$ a  f) [: m- S
  2076.                                         text        (strcat        (substr text 1 (1- (strlen text)))  (chr ma))4 ~$ p  K9 U  ~* ?
  2077.                         )
    7 F5 E- r9 K6 p+ m
  2078.                 );if3 _) |0 P# [9 s
  2079. );if+ L6 B3 ^2 ?1 E
  2080. )- B* ^$ I" k& @( \' R, B8 z1 o8 D& Q
  2081. ;*********************************************************************  ^4 f3 F  Y. p4 L3 \" r
  2082. (defun doitext(tendoituong / chuoi doituong thoat tam dsach kieu text vitri10 vitri11 dem canle)
    4 y# q3 p2 C# {, T3 s- B' D
  2083. ;Neu doi tuong la text thi tiep tuc
    - _% N% w% K& m# K  O
  2084. (setq         doituong         (entget  tendoituong)
    , z( R- K1 Q: X& P; Q9 j
  2085.         kieu                (cdr (assoc         0        doituong))
    * ~9 l+ Z1 i! e$ k0 L* P3 V
  2086.         canle                (cdr (assoc         72        doituong)). D. D. }8 f* g8 K; g' r7 a
  2087. )        ; X: b' T5 Z! g
  2088. (if (or (= kieu                "TEXT")
    ; ~1 K& `" H2 h$ T
  2089.         (= kieu         "MTEXT")        
    , W2 E/ D0 i( a! h# o* {/ L
  2090.     )         ) _$ P, k8 ~7 G+ C$ S" I% u
  2091.         (progn4 v7 a( g& H" w. J
  2092.                 (setq        textxl        (xulytext textxl)% b# u1 C- i( h+ y1 N, ^
  2093.                         text        (cons 1 textxl)
    $ z) ^7 J/ w& ?' Z8 h
  2094.                         vitri10         (cdr (assoc 10 doituong))) P2 d8 I6 J5 E! I$ r$ R
  2095.                         vitri10         (list (+ (car vitri10) (car vitrilech)) (+ (nth 1 vitri10) (nth 1 vitrilech)))0 r4 e3 A: T+ s( Q0 ]* B
  2096.                         vitri10                (cons 10 vitri10)
    9 K5 Q- q* o1 D, Y- B# y
  2097.                         vitri11         (cdr (assoc 11 doituong))
    : [' x: a" V9 e( o
  2098.                         vitri11         (list (+ (car vitri11) (car vitrilech)) (+ (nth 1 vitri11) (nth 1 vitrilech)))
    9 ?% z% U' W1 F. j/ w/ I7 A6 T
  2099.                         vitri11                (cons 11 vitri11)3 e# ~# L( q# n( _# ?% R; |) V
  2100.                         dem        0
    - B; G9 U& z; k! K
  2101.                         dsach        nil/ w: A2 i  W7 H: T8 K3 s8 H
  2102.                 )
    4 ?1 y9 O) c5 D, |) U& A
  2103.                 (foreach tam         doituong: q3 L$ c3 z6 v) q; z! q
  2104.                         (cond/ Z8 E- F2 ?& \% X9 R6 X, @& [; p
  2105.                                 ((= (car tam)        1)        (setq dsach         (append dsach (list text)))); |  U& I  }$ k/ a8 a
  2106.                                 ((= (car tam)        10)        (setq dsach         (append dsach (list vitri10))))
    * F& J+ v4 o9 q. Q; u3 W: ]& m' o) U* B
  2107.                                 ((= (car tam)        11)        (setq dsach         (append dsach (list vitri11))))
    7 H3 P# v  H# }. K- A$ {, h: Z
  2108.                                 ((setq dsach         (append dsach (list tam))))* r3 L/ l* L) J  c3 G' ^
  2109.                         )+ T6 ~/ L/ ]1 F) D* m  L6 k
  2110.                 )4 ^1 h( ~! g5 w) w! R4 G/ F) A
  2111.                 (entmake dsach): J2 _5 A6 P: x6 N2 f: c
  2112.         );progn
    6 y, M: [" d& p: u
  2113. );if- P4 i: {+ h2 F, O$ A; R/ e
  2114.         );
    & i2 t( n0 c  ?/ Z/ f
  2115. ;*********************************************************************
    $ h( r! ?( k, Y& E
  2116. ;sao doi tuong cu sang vi tri moi# L0 b5 N9 G$ u: h, Y; N" p
  2117. & K8 i- O" T; l  u0 `
  2118. (defun copy_dt (tendoituong )
    # z) Q' E: S8 u4 d' C& i
  2119. (command "copy" tendoituong "" goc toi )% h8 _* n1 k( Q: H
  2120. );defun
    " j6 ?4 ?5 W6 P5 K8 v

  2121. % T& m, I" }, v4 ^
  2122. ;*********************************************************************7 O! `! }$ Y- X6 H6 c

  2123. ) g/ q4 o+ h( a, l, v8 O
  2124. (defun c:ct ( / cumdt dodai thoat dem ten doituong textxl dem goc toi)7 ]. N. l# R- s7 [. p# y) W
  2125. ; Khoi dau cua chuong trinh( H6 `) P; ^3 V! X" Z3 _
  2126. (princ "\nCopy Inteligent...\n")6 P6 o  @# X8 C3 x, J
  2127. (setq         luuecho        (getvar        "cmdecho")
    4 O, S2 {; ~' u6 I
  2128.         luu        *error*/ L! n" S1 r# b: O
  2129.         *error*        ketthuc
    ; _4 I! G2 D+ [3 C
  2130.         cumdt         (ssget)
    : q; p4 y! m; o0 H; {9 \
  2131.         dodai         (sslength cumdt)- x' y6 R$ j" i
  2132.         goc                (getpoint "\nSelect base point:")
    : P7 `+ o/ p- I- V% Y
  2133.         thoat                nil) b3 Y3 v+ I( ~
  2134.         dem                08 R6 G* ]. F& ]* N% b
  2135.         textxl                nil2 p. G( Z& U: v2 u7 b9 X; ?- J
  2136. );
    0 D  R0 X, c# M3 b& g4 ^
  2137. (setvar "cmdecho" 0). F9 @+ g2 C/ {
  2138. ; Loc ra duoc ong text de xu ly8 b& c8 @- e& w& r8 h' ?% X
  2139. (while        (and         (= thoat        nil): n) l& w& _: V' m$ Q9 u
  2140.                 (< dem        dodai)6 n! [+ w" d1 J8 }5 X3 u2 g
  2141.         )% g8 C& C" j$ c3 W$ ?7 J
  2142.         (setq         ten        (ssname cumdt dem)
    ' K, r; l- L" ]: R  o. @
  2143.                 dem        (1+         dem)$ p' e7 q, ~! V+ m
  2144.                 doituong (entget ten)) |) t; s' ~3 p9 @$ [: X
  2145.                 kieu         (cdr (assoc         0        doituong))                        3 \# `4 e0 V5 V3 }! V
  2146.         )% L! M" z0 E# k/ m5 `1 a& Q
  2147.         
    7 W) ~2 ]6 W# F/ O" I& G, s/ e$ X7 @
  2148.         (if (or (= kieu                "TEXT")! z; T% Q( v. {; _7 n8 Q+ d
  2149.                 (= kieu         "MTEXT")        
    7 j  R/ c# [( i  q
  2150.                 )6 ?; C( S# U; B' m& T) W3 T
  2151.                 (setq         thoat        T
    - h7 J; ~$ y  y3 t- T+ b; f
  2152.                         textxl         (cdr (assoc 1 doituong))         + }& _6 G$ [" N5 ?; G
  2153.                 )7 C$ I0 X8 i( ^+ Q2 m; [" j$ G
  2154.         )& `& {6 q" d4 W9 r* m- ]+ [; o
  2155. );
    1 E3 h/ R" I- j9 i
  2156. (while T
    0 {  w0 s5 S7 |9 k1 S
  2157. (setq        toi                (getpoint "\nSelect next point: " goc)# K# u9 C$ r5 g) s7 t
  2158.         vitrilech         (list         (- (car toi) (car goc)) (- (nth 1 toi) (nth 1 goc)))
    + p3 t' P" n, C
  2159.         dem                0$ \: l6 }9 [; x1 D
  2160. )
    : K8 _" ]% M" j9 v
  2161. (while        (< dem dodai)4 L$ _6 k" M3 Z; o
  2162.         (setq         ten        (ssname cumdt dem)
    " W% P! C" }8 D* X2 o
  2163.                 dem        (1+         dem)
      d6 Z) c* I& I
  2164.                 doituong (entget ten)! ~1 p0 p* |6 G1 s8 i
  2165.                 kieu         (cdr (assoc         0        doituong))                        . {* L" [( V! \. l
  2166.         )
    - ]) i0 x) b2 I5 W& q9 J

  2167. . t9 `# ~; Y$ A+ [3 C# s
  2168.         (if (or (= kieu                "TEXT")
    2 @; Z9 r3 ?  L% u. t
  2169.                 (= kieu         "MTEXT")        
    ' ^5 ?( u( j" V5 t! j9 L7 `" q
  2170.                 )/ X$ ~2 D: t1 C9 L2 Y/ t* g- f' P
  2171.                 (doitext        ten)3 z! t+ w2 _0 N7 J
  2172.                 (copy_dt        ten)
    . s+ d8 s9 D7 J/ m! R

  2173. ; Z% V4 ]0 y. l& v' U- z/ k+ ~" g
  2174.         );if
    - _1 I0 e2 l# r% h5 B0 [0 K5 w6 L
  2175. ); q, t$ d- c& t* U- P, {' @
  2176. );while# S. Y, J$ S0 k3 z) c& G
  2177. (ketthuc)+ W. Y) J6 E! Q1 }8 v# l! g/ q
  2178. );defun7 O, c5 H( J6 P/ X) D; t9 @) s
  2179. (princ "Type \"DG\" to start")" S6 f6 x0 A! _+ C& P
  2180. ;Note: bien toan cuc: textxl vitrilech
    ! G/ T: i: Z" L- c

  2181. : L' q+ i- I$ }, d- P! ?
  2182. ;=====================================================================7 Y( g' E  D/ b/ r7 I
  2183. ;;; PLJOINFUZZ.LSP( H, w; G1 s. w0 [- F: g
  2184. ;;; Joins lines, arcs and polylines using a fuzz distance# q. @; D$ f( W) z5 i" O7 L! w; \
  2185. ;;; If only one object is selected it tries to join to all objects that are possible7 n8 N. x( o0 o7 j; n4 E4 w
  2186. ;;; By Jimmy Bergmark. m4 o4 y/ ~$ g/ c
  2187. ;;; Copyright (C) 2003-2004 JTB World, All Rights Reserved
    0 `" b7 J: h; {8 s% S+ F, X& I
  2188. ;;; Website: www.jtbworld.com
    ; k, C6 ^/ P9 T0 \( R' B
  2189. ;;; E-mail: info@jtbworld.com
    " K* G  n' f, T' C  F
  2190. ;;; Tested on AutoCAD 2002,2004 and 2005
    9 ~" o( ]$ G& m! Q3 L/ k1 v0 F
  2191. ;;; Latest revision made 2004-11-11: T# C( B1 X2 O& d* \: L! o. `
  2192. ;;; Minor code cosmetic change made 2004-11-13
    + `) H* S) V/ I7 s/ I- ?
  2193. ;;; Bug corrected 2004-12-23
    7 r+ y- l; d7 {
  2194. : `* v; Z% B! ~& G4 W0 u
  2195. (defun c:jf () (c:pljoinfuzz)) ; this line can be commented out if there is an existing command called jf
    + T5 H. Z, y" U7 w
  2196. (defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects)- Z6 w! }2 L2 b6 ~
  2197.   (setq oldcmdecho (getvar "cmdecho")); q: [0 o7 o+ H
  2198.   (setq oldpeditaccept (getvar "PEDITACCEPT"))
    8 [1 \5 b5 R4 c0 Y+ @
  2199.   (setvar "cmdecho" 0)
    6 `9 R4 @" A& s% J2 g
  2200.   (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16"))2 Y5 _$ W+ n3 C5 y
  2201.   (if A2k4 (setvar "PEDITACCEPT" 0))1 E" d) H+ F% [! H; L
  2202.   (setq        okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))
    ; q! q7 @+ e1 U3 G6 v! c. t: Q
  2203.   (princ "\nSelect object to join: ")2 ]3 t5 g: c2 ~: T
  2204.   (setq ss1 (ssget okObjects))1 o; i! {5 h6 c6 v( j& [5 }
  2205.   (setq fuzz (getdist "\nFuzz distance <0>: "))1 S  c5 v; _( Y* |9 \  {$ Z, F3 e
  2206.   (if (= fuzz nil) (setq fuzz 0))4 B( ~* g# L# y1 D% R1 K9 N
  2207.   (if (/= ss1 nil)/ L' p, A* A' Q3 U
  2208.       (progn+ u' r7 o" ?) ~
  2209.         (setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0))))))
    4 u9 d% b) M1 q! I) O6 Q. ]) I  j
  2210.         (if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects)))
    6 f4 |9 n9 b- x1 P8 U( x$ b
  2211.         (if (member objType '("LINE" "ARC"))
    0 v5 K/ c! @  a" p* e7 w4 ?* X
  2212.           (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")
    # _7 @0 k8 i- @# q' D
  2213.           (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "")
    2 H& {3 H* ]8 G; C9 V7 d
  2214.         )
    5 f" i# g+ r1 R$ l
  2215.       )
    8 F6 G5 E, b" V5 ?! I
  2216.   ), T  U" z- J) g$ H
  2217.   (setvar "cmdecho" oldcmdecho)) G: {1 F7 ^* z* z
  2218.   (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept))
      _& ?+ M2 z' ^8 f) a
  2219.   (princ)# W& M" z7 X5 y
  2220. ): U1 ?+ Z, u6 [/ R% d' i4 e

  2221. 3 m. {% E( Y* S% [  R
  2222. ;===========================VE CAO TRINH===========================  V0 g/ E& i) G0 W

  2223. - p5 M; n" ]4 H3 j$ D& d& o
  2224. (DEFUN C:Cotcao (/ CMD PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 NPI TX DX DY TL OSM OLL4 M0 e4 g+ O, I6 f' Z
  2225.                 CRST RSIZE TSIZE STR PRMT FCH NBC OLDERR)* v& Q* i; x( f4 A6 l1 G+ o
  2226. (SETQ OLDERR *error*
    9 b' Y; k1 _/ ^- Y/ d4 q  V2 R
  2227.       *error* loisb)
    ' V) O5 U! X& s5 i: {
  2228. (command "layer" "m" "dim" "c" "" """"). Z+ T! d4 z$ k1 y" _
  2229. (SETQ CMD (GETVAR "CMDECHO"))2 d( ?, B1 |  i; a
  2230. (SETQ NBC (GETVAR "CLAYER"))
    ) U; U. C+ j+ Q
  2231. (SETQ OSM (GETVAR "OSMODE"))
    3 O2 h; D: y# `/ O1 _7 M6 h5 B' f' ~
  2232. (SETVAR "CMDECHO" 0)
    . J* D% b6 J5 h9 M
  2233. (SETQ PT1 (GETPOINT "\nDiem cao trinh:"))% p+ n2 a0 L% R$ i8 h/ e; v! u( C; v
  2234. (SETQ TX (GETSTRING "\nCao trinh:"))
    ) w, j0 P4 ~# o8 P6 F( t1 \
  2235. (SETQ FCH (SUBSTR TX 1 1))8 A: Q) F7 Y$ r) I+ y/ A/ H5 X
  2236. (IF (= FCH "@") (SETQ TX (STRCAT "%%P" (SUBSTR TX 2 (- (STRLEN TX) 1)))))
    ( f8 ?; f* r& K7 s
  2237. (SETQ CRST (GETVAR "TEXTSTYLE")); F) d* P/ c  ^
  2238. (SETQ RSIZE (CDR (ASSOC 40 (TBLSEARCH "STYLE" CRST))))
    1 ]) [1 l2 j4 S$ U4 G
  2239. (SETQ TSIZE (GETVAR "TEXTSIZE"))7 A; R8 C' s( @( @2 h7 T* [
  2240. (SETQ STR (RTOS TSIZE 2))# F# A% R' e3 B( o
  2241. (SETQ PRMT (STRCAT "\nText height <" STR ">:"))* q/ R+ N4 P) z0 _1 T0 Y
  2242. (IF (= RSIZE 0)1 o9 m$ W3 T& u$ m2 P. q1 z
  2243.   (PROGN
    ! L4 B. V$ A- [* \. W0 e
  2244.         (INITGET 4)
    / U8 K1 {4 W0 X# `1 D2 c
  2245.         (SETQ TSIZE (GETREAL PRMT))8 e  n; J5 P' h+ _0 c% G) j. m
  2246.         (IF (= TSIZE NIL) (SETQ TSIZE (GETVAR "TEXTSIZE"))
    / h2 V0 c! E: J  v/ r
  2247.                           (SETVAR "TEXTSIZE" TSIZE))7 n9 p' Y9 u1 z" S) C$ a
  2248.   ): W  [) h8 I4 B% I% v
  2249. )
      S! H, A) K" Q" k2 @0 C# s4 B* r
  2250. (PRINC)9 b1 w8 B) d: m% l/ q
  2251. (SETQ TL (/ (GETVAR "TEXTSIZE") 2))
    ( Q& ^  k4 X" ?0 q
  2252. (SETVAR "OSMODE" 0)
    - U. i5 R8 C& g( S
  2253. (SETQ DX (CAAR (CDR (TEXTBOX (LIST (CONS 1 TX))))))
    5 U+ u- Z& \& ?7 B. B, m
  2254. (SETQ NPI (/ PI 2))# \6 l& ]# s5 Z3 [) X" h8 t: E! l
  2255. (SETQ PT4 (POLAR PT1 NPI (* 1 TL)))
    / f4 A/ `0 z( _1 X2 g
  2256. (SETQ PT2 (POLAR PT4 PI (* 2 TL)))4 \5 x: S0 Y) z7 U
  2257. (SETQ PT3 (POLAR PT4 0 (* 2 TL)))0 b' L$ r) z5 I. ~0 H& v
  2258. (SETQ PT5 (POLAR PT4 NPI (* 5 TL)))
    - N7 c/ p+ u' h9 a' f. [
  2259. (SETQ PT6 (POLAR PT2 NPI  TL))
    4 [1 W! d! y4 A' f" W/ V
  2260. (SETQ PT7 (POLAR PT6 0 (+ (* 3.7 TL) DX)))' C1 Z! x0 M+ a4 ?6 ]
  2261. (SETQ PT8 (POLAR PT6 NPI (* 1 TL)))
    8 X/ _+ \1 @8 Z' g9 t2 o6 B. \; R
  2262. (SETQ PT8 (POLAR PT8 0 (* 2.5 TL)))5 m+ X  G) r% @" J6 @
  2263. (SETQ PT9 (POLAR PT1 pi (* 2 TL)))3 c( v( d% c$ }- ?) G" ^8 q1 L
  2264. (SETQ PT10 (POLAR PT1 0 (* 2 TL)))1 {: b* q. X4 U8 o1 M
  2265. (COMMAND "COLOR" "7" "")
    2 x, P& z+ X/ W! P; B
  2266. (COMMAND "STYLE" "COTES"  "Verdana" "" "" "" "" ""). ]4 s3 H7 k. X3 I
  2267. (IF (= RSIZE 0)(COMMAND "TEXT" PT8 TSIZE 0 tX) (COMMAND "TEXT" PT8 0 TX))
    ) s* [4 S. k( K) m  J
  2268. (COMMAND "COLOR" "BYLAYER" "")$ X- N/ l4 s0 z  F. ]1 k
  2269. (COMMAND "SOLID" PT1 PT2 PT4 "" "" "pLINE"  PT1 pt3 pt2  "")
      m, }7 \) [5 D/ s2 d1 P
  2270. (COMMAND "COLOR" "BYLAYER" "")
    4 M8 i! p0 g' @6 A0 }2 o) {$ y0 ?
  2271. (COMMAND "pLINE" PT1 PT5 "" "pLINE" PT6 PT7 "" "pLINE" pt9 pt10"")' R' m- U  t! v. d: N' }
  2272. (SETVAR "CLAYER" "0")
    - B  _5 M) @: R4 p: X$ K) Z3 G
  2273. (command "ddedit" pause)
    & F9 r7 `; d6 c9 P
  2274. (COMMAND "COLOR" "BYLAYER" "")$ B3 \) `- y  X0 j
  2275. (SETVAR "CMDECHO" CMD)
    $ m9 l; e% i2 ?
  2276. (SETVAR "CLAYER" NBC)
    : F, Q8 W5 b8 E9 F3 a: y  A' P: R9 g
  2277. (SETVAR "OSMODE" OSM)
    - P: E4 Z+ h1 u& ?/ \
  2278. (PRINC)2 {/ G: n. T, |
  2279. )8 e# ^/ q/ i" u' z3 o- K, x

  2280. 2 W6 C  t3 q& ~- o- U# u. n$ a
  2281. ;;; =========================== VE NET CAT CHEO (GC) =============================
    7 h3 b& d& b/ m5 d3 M
  2282. ' I9 P* M' T; R  u; W5 G& v) h# V
  2283. (Defun c:G1(/ p1 p2 p3 p4 p5 p6 p11 p12 l ang)
    4 R9 L& [: {1 H9 @- R7 q, Q3 p
  2284.         (setq x (getvar "osmode"))4 p9 l( y: f" E. W4 H
  2285.         (setq p1 (getpoint "First point : ")
    ( y& O% B1 X$ l; L$ O1 ]
  2286.               p2 (getpoint p1 "Second point : "))
    6 }- f5 ?4 v( @" ?
  2287.         (setq l (distance p1 p2))
    + b" F0 R/ i5 y
  2288.         (setq p11 (polar p1 (angle p2 p1) (/ l 5))2 Z8 W: ^+ j. a$ m3 }
  2289.               p12 (polar p2 (angle p1 p2) (/ l 5)))
    ) m+ C/ ]0 `! u! a# Z
  2290.         (setq ang (angle p1 p2)). Y4 m2 p4 p/ S5 W$ w0 ~4 L8 m* \0 ~
  2291.         (setq p3 (polar p1 ang (/ l 2.5))/ ~# Q8 k6 U' [) v( y
  2292.               p4 (polar p3 (+ (/ pi 2) ang) (/ l 5))" E3 W- z0 `. v
  2293.               p5 (polar p3 ang (/ l 5))
    & N% T9 f' O/ X& I) C, ]2 W
  2294.                 p6 (polar p5 (- ang (/ pi 2)) (/ l 5)))7 |# d8 s; e, A: W3 @
  2295.         (setvar "osmode" 0)
    # W! m# Q2 ~, O2 s
  2296. (command "pline" p11 p3 p4 p6 p5 p12 "")
    " D5 Q% }# ~+ a4 f) L
  2297. (setvar "osmode" x)
    , ^) V7 T% B; [7 [
  2298. )
    * z( ?1 u4 f2 {. S7 k9 {
  2299. ;----------------------------------------------------------------------------------
    : B+ X: J, ]/ H% H$ ]- h0 F% L
  2300. (Defun C:G2 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6
    ( i* K1 N2 ?8 N* f- R
  2301.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))
    9 c' L8 g1 T& r" D
  2302.    (setq ps1 (getpoint "\Chon diem thu nhat: "))
    3 H7 ^6 S9 K7 S. N: D  T- ?
  2303.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))
    , U9 x" N; e6 K- g# F
  2304.    (setq sb 50.0 sh 200.0 se 20.0)
    7 w9 R5 b5 y/ F  N- y
  2305.    (setq ang (angle ps1 ps2))
    . i# d  _# S% Z! ~! n& q% w% w
  2306.    (setq pf1 (polar ps1 ang (- 0.0 se)))
    0 ]5 ^$ _: k7 e
  2307.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))
    3 f1 i) l; o: B9 |
  2308.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))
    & p2 A) E1 L' U
  2309.    (setq pf5 (polar pf2 ang sb))* h0 w% u5 _2 _$ E) d% y1 Z
  2310.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))& k6 t# Y3 H1 ?6 O
  2311.    (setq pf6 (polar ps2 ang se))4 D' C1 i3 z. [4 E1 X- d
  2312.    (setvar "OSMODE" 0)3 ~; J! X' m9 E5 w" _: d: V* v
  2313.    (setvar "BLIPMODE" 0)+ k7 O+ E: D1 m8 r% T7 m. \
  2314.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")( E- S, E4 k4 B0 {; Q2 u
  2315.    (setvar "OSMODE" 703): @8 |( X7 W: \8 H
  2316.    (princ) )% C$ l4 X& q# m3 W7 Y8 m
  2317. ;----------------------------------------------------------------------------------
    % r% g/ Y0 D3 {/ R
  2318. (Defun C:G3 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6
    / k! m: q* ^/ y8 z  S$ y) L" z
  2319.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))1 [5 k5 U* ]/ y1 q$ A" {# x4 y
  2320.    (setq ps1 (getpoint "\Chon diem thu nhat: "))' ]2 v1 R1 a8 @( j6 U* S+ E
  2321.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))
    9 v1 F" p. `  Y5 T" I. Q
  2322.    (setq sb 100.0 sh 150.0 se 20.0)4 h0 K3 ]* o# ^( X  c+ V
  2323.    (setq ang (angle ps1 ps2))! f: h" Z# h% k6 G% f6 i; G+ n9 T# L
  2324.    (setq pf1 (polar ps1 ang (- 0.0 se)))
    # ~, O) z# [5 J+ H$ d! n" t
  2325.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))
    , g0 u& Y5 ]+ c" X8 l
  2326.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))
    * _3 a2 e+ d" }! z0 f/ u
  2327.    (setq pf5 (polar pf2 ang sb))% h- g" y3 s! W9 D
  2328.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0)))
    " L( o6 A% V+ ~# Z' G+ a3 p) A2 P0 C
  2329.    (setq pf6 (polar ps2 ang se))5 U+ F3 k  y! o. `4 P/ v
  2330.    (setvar "OSMODE" 0)  @$ Z& W( P1 _  v
  2331.    (setvar "BLIPMODE" 0)
    0 g0 J" ~6 W' d% Q2 u
  2332.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")% f7 B3 i1 {4 {8 K8 g' J* z9 J
  2333.    (setvar "OSMODE" 703)# A: W9 d" r! v: |( x! \5 k: U1 y3 u
  2334.    (princ) )
    7 \9 I$ a( S& X- h/ H4 {. t
  2335. ;----------------------------------------------------------------------------------
      ]* r3 H- ]- n% z3 t
  2336. (Defun C:G4 (/  ps1  ps2  pf1  pf2  pf3  pf4  pf5  pf6
    4 z, ^+ u5 b+ P
  2337.    pf7  pf8  sb   sh   se   ang  old_osmode);   (setq old_osmode (getvar "OSMODE"))& e/ a# k4 j! P) @0 w& J2 F
  2338.    (setq ps1 (getpoint "\Chon diem thu nhat: "))+ U9 q3 Z" X1 l( M
  2339.    (setq ps2 (getpoint ps1 "\nChon diem tiep theo: "))
    " C/ X4 J; m0 d, D. C+ g
  2340.    (setq sb 100.0 sh 250.0 se 20.0)  o  d' P+ S2 F" O( T/ A
  2341.    (setq ang (angle ps1 ps2))
    4 i. ^) ~* u6 Q* ^
  2342.    (setq pf1 (polar ps1 ang (- 0.0 se)))
    6 A0 N1 b  r# y" ]& y+ j& d+ [/ V7 U
  2343.    (setq pf2 (polar ps1 ang (/ (- (distance ps1 ps2) sb) 2.0) ))
    & c( G* T6 {' K
  2344.    (setq pf3 (polar pf2 (+ ang (/ pi 2)) (/ sh 2.0)))
    ; {) l. {) y$ X( [2 U0 ?2 y
  2345.    (setq pf5 (polar pf2 ang sb))
    . _1 K3 y' F6 g: c& J) G$ F6 G6 m
  2346.    (setq pf4 (polar pf5 (- ang (/ pi 2)) (/ sh 2.0))), O1 F" L+ v. q4 t! R& l% B
  2347.    (setq pf6 (polar ps2 ang se))5 f" H, E, Y* v+ d3 B" S
  2348.    (setvar "OSMODE" 0)
    ! x. ~, F& K0 _
  2349.    (setvar "BLIPMODE" 0)
    / ^1 l2 q& |9 i5 P. }9 P
  2350.    (command "PLINE" pf1 pf2 pf3 pf4 pf5 pf6 "")& V3 ?; Y+ [6 R, ^
  2351.    (setvar "OSMODE" 703)& \' c& j% N; k9 K6 C
  2352.    (princ) )
    5 s% H" R7 k$ L" R4 H4 e5 c
  2353. . f" u! E; U3 |. a' J3 e, m6 \
  2354. ;==================================================================================& d# X5 s9 k5 }% V6 _& W
  2355. (defun c:ang (/ ent pt1 pt2 ang)4 g& p4 L* S& M  ~; P: M
  2356.    (setq cmd (getvar "cmdecho")): [/ N- |1 c& d. C3 r5 t" w  _
  2357.   (setvar "cmdecho" 1)9 a) O! p6 C6 a( c. J1 G% M9 ?
  2358.   (prompt (strcat"\nThay doi truc toa do theo duong thang chon truoc"))! N) y; A4 t8 I9 P7 R
  2359.   (setq ent (entsel "\nChon duong thang:")), ?5 u3 @3 H2 p( z: L
  2360.   (if ent
    " c* z0 \- E# I$ z' K
  2361.    (progn
    ! j- ]" h" N' B3 g! n* T4 `
  2362.     (setq ent (entget (car ent))), |. k" M8 j/ A8 R5 ~
  2363.     (setq pt1 (cdr (assoc 10 ent)))
    + D2 b- n. G  `  S; d
  2364.     (setq pt2 (cdr (assoc 11 ent)))3 A6 V, x8 o3 C: v) v4 ^
  2365.     (setq ang (angle pt1 pt2))
    ( C8 w4 d% F  ^6 d$ s: X: J9 H* m
  2366.     (setq ang (/ (* ang 180.0) pi))
    , q" F: a3 `) g4 s& X( Q$ z% I
  2367.     (setvar "cmdecho" 0)$ c9 E! O: x1 D$ `5 f0 X% X% _
  2368.     (command "setvar" "snapang" ang). Y* ?% U7 B: q: {/ I
  2369.     (princ "\nGoc cua truc toa do moi : ")
    ; j/ z2 l  P" y5 R* Z2 U5 R
  2370.     (princ ang), p! X6 I; V$ P: q
  2371.    )
    1 H" s6 i! S( Z
  2372.   )( O, o, A. p* X% S: z3 i' O
  2373.   (setvar "cmdecho" cmd)
    % R/ p% L7 ?; T! P/ Y
  2374.   (princ)
    % A- I9 C& |* g1 ?; F7 p
  2375. )
    . M% I: p. f' t5 m. M3 U, n
  2376. ;==================================================================================
    9 V. J4 U  C+ A0 X/ [
  2377. ;==============================   KY HIEU DOI XUNG   ==============================
    % F; G% s* P0 b
  2378. ;==================================================================================, [! c+ m7 n8 l6 [) l: Y
  2379. & f" Y3 L- Y: a' R
  2380. (DEFUN C:DX (/ CMD OSM OLDERR PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 PT9
    + Q9 ^: x5 l/ B: x3 j( E$ t. @
  2381.                 SZ G45 G135 G90 G180 SS loi)
    0 e  [+ p, ]- F! @  ]
  2382. (defun loi (s)
      A6 `+ G+ c* D5 e
  2383. (if (= s "Function cancelled")
    $ O; a4 U# y- ?+ Y
  2384.      (princ)
    + ?2 e* x8 J6 L. ]* t2 D
  2385.      (princ (strcat "Error:" s))& v4 D8 x" o  `: H6 r; v
  2386. )* |  i0 X# q3 I
  2387.          (SETVAR "CMDECHO" CMD)
    - k# Q' b+ `+ P
  2388.          (SETVAR "OSMODE" OSM)
    & K6 P- @, y9 B5 I: j
  2389.         (SETQ *error* OLDERR)
    * ~; t$ `8 O# U  M  }0 \! t1 I
  2390.          (PRINC)
    ! ^5 n0 g: f. Z- ~( _
  2391. )
    / f5 S" V: b; ]" w+ ]: Y4 D
  2392. (SETQ CMD (GETVAR "CMDECHO"))
    % ~$ L0 O$ H- P1 M5 b+ a
  2393. (SETQ OSM (GETVAR "OSMODE"))  J4 x4 B5 y% W3 X# |2 p
  2394. (SETVAR "CMDECHO" 0)
    : S6 ~, n- V+ u/ |3 D9 a
  2395. (SETQ OLDERR *error*
    * [0 ^$ w. g  L
  2396.         *error* loi)
    1 v  p/ p* F+ t( U* g" s: z) _
  2397. (SETQ SZ (GETREAL "Size <1>:"))7 b9 E& P! W0 g/ @
  2398. (IF (= SZ nil) (SETQ SZ 100))
      N& @+ i- _2 {% `. a2 C1 z6 \
  2399. (SETQ G45 (/ PI 4))$ |! U4 }7 C* {0 K
  2400. (SETQ G135 (* 3 (/ PI 4)))
    7 p6 d* k& u7 h+ a7 o% E; f  Q
  2401. (SETQ G90 (- G45 (/ PI 2)))
      E4 q5 U0 i* n9 j3 K
  2402. (SETQ G180 (+ G135 (/ PI 2))): l, F. J! X. u( n+ C1 P1 l- o: u
  2403. (SETQ PT1 (GETPOINT "\nDiem doi xung:"))
    & J: o- E2 a$ m& M
  2404. (SETVAR "OSMODE" 0)4 g- K* r: L0 A; q/ n( d
  2405. (SETQ PT2 (POLAR PT1 G45 (* 2 SZ))); H; l- g5 p& m
  2406. (SETQ PT3 (POLAR PT2 G90 (* 2 SZ))), \: I6 T6 m$ B# i. X6 J: V
  2407. (SETQ PT4 (POLAR PT1 G45 (* 1 SZ)))
    " `7 V, u/ G! z! a0 e9 }. k
  2408. (SETQ PT5 (POLAR PT1 G135 (* 2 SZ)))9 V0 w4 _' D: D1 T7 ~
  2409. (SETQ PT6 (POLAR PT5 G180 (* 2 SZ)))
    ' j6 U3 R: i1 m) `& `
  2410. (SETQ PT7 (POLAR PT1 G135 (* 1 SZ)))' a2 w4 C. ^0 i/ K4 [
  2411. (SETQ PT8 (POLAR PT1 G45 (* -0.7 SZ)))1 f5 F( a+ d* K- B
  2412. (SETQ PT9 (POLAR PT1 G135 (* -0.7 SZ)))
    3 j# J& ]6 C) q6 \+ t4 J) a8 ?
  2413. (PRINC "\nGoc quay:")
    + t3 T0 T7 I& H
  2414. (SETQ SS (SSADD))# u2 T: i& _) b' `
  2415. (command "layer" "m" "Dim" "c" "" """")* j$ ?+ z+ n5 X$ c' a3 _# _  g& P
  2416. (COMMAND "COLOR" "1" "")
    : `5 ?+ B9 C; ]! C4 n
  2417. (COMMAND "LINE" PT8 PT2 "")
    3 P3 w4 j; j, f1 w- y% {
  2418. (SETQ SS (SSADD (ENTLAST) SS))6 X2 ]2 ^, S2 x, `  }) e  |
  2419. (COMMAND "LINE" PT9 PT5 "")% c; i( a# R4 }4 e% q
  2420. (SETQ SS (SSADD (ENTLAST) SS)): T4 r4 i) M9 w4 a& O" I) h6 V; U) }
  2421. (COMMAND "COLOR" "1" ""), f, b! ]4 \& P) q2 e( p% O- z# t
  2422. (COMMAND "SOLID" PT2 PT3 PT4 "" ""), ~9 Q- N, E6 H2 B
  2423. (SETQ SS (SSADD (ENTLAST) SS))
    2 Y# ?, s0 p& m3 X% q" x+ S6 E
  2424. (COMMAND "SOLID" PT5 PT6 PT7 "" "")
    + E8 R# E. S# y% `9 ]! w- T
  2425. (SETQ SS (SSADD (ENTLAST) SS))
    4 [5 L# n" _0 E2 m2 A; }2 }
  2426. (COMMAND "ROTATE" SS "" PT1 PAUSE)
    # W/ m0 ?) `' W
  2427. (COMMAND "COLOR" "BYLAYER" "")5 h- d( a) b# T" ~0 x
  2428. (SETVAR "CMDECHO" CMD), b' ^3 ?/ t7 i
  2429. (SETVAR "OSMODE" OSM)
    - S8 Y) R3 t4 ?9 P/ P
  2430. (SETQ *error* OLDERR)
    % D, `# \8 T5 ]& M
  2431. (PRINC)1 S' k; B. Y# Q8 G8 _- A$ @3 f
  2432. )5 {! F0 @$ j6 z/ u, h  }" k9 o* L
  2433. ! n% U) e( A9 |+ P5 ?; T( [
  2434. ;==================================================================================4 F0 T, S. G" _' l3 V8 |
  2435. ;=================================   KY HIEU TRUC   ===============================/ i2 i* |4 e( u8 m. ^
  2436. ;==================================================================================
    ' b$ H: J1 e. `9 m" W' R/ s9 e$ Q3 w
  2437. ; z  ^+ W* J$ x
  2438. (defun C:vetruc ()
    - h& y' \" `$ t5 x
  2439. (setq bk (getvar "USERR3"))
    6 _3 H) w+ x. [  V
  2440. (if (= bk 0)& [, t7 I5 T0 |& N, ?
  2441.   (progn
    ; [' u3 N! D+ C# m" x8 j
  2442.     (setq cont "1")
    9 a- S$ I$ j1 W8 J' K/ C) L' w
  2443.     (setvar "USERR3" 1)
    0 V3 B- Y2 |& X: n/ N. _5 x8 u
  2444.     )
    + b- E" F/ r" m  y" f
  2445.         (setq cont (rtos bk))+ r) O; q& `: }  K
  2446. )" s3 d( c# w9 s) @# E
  2447. (setq pt1 (getpoint "\n Nhap diem dat:"))
    8 I9 R. f. `- T0 |- D
  2448. (command "layer" "m" "Dim" "c" "" """")- |& [, O1 ]: s+ y' N. Z5 M, ~
  2449. (command "osnap"  "")& ~2 a5 z  e1 R' |
  2450. (COMMAND "COLOR" "7" "")' {$ J: c- Z$ p, L
  2451. (command "circle" pt1 150 "")* ]1 e: n7 A7 a* a' U6 W
  2452. (setq pt2 (polar pt1 0 150))
    - A$ K- Z: v* `( @  G
  2453. (setq pt3 (polar pt1 (/ pi 1) 150))6 r: L$ Z: |* P5 \2 z; E
  2454. (setq pt4 (polar pt1 0 300))
      ~; |5 T. S3 k2 l' M) N, c  f% K8 ~
  2455. (setq pt5 (polar pt1 (/ pi 1) 300))8 f% K9 a$ N8 B9 h+ [
  2456. (setq pt6 (polar pt1 (- 0 (/ pi 2)) 150))7 U5 F5 j3 |% ^4 Y" {: O
  2457. (setq pt7 (polar pt1 (- 0 (/ pi 2)) 300))( n$ y6 Y" I( p4 {3 K5 h
  2458. (setq pt8 (polar pt1 (/ pi 2) 150)); ~' w' K& l8 v* w$ u! S
  2459. (setq pt9 (polar pt1 (/ pi 2) 300)): s' j3 r5 V5 a: n3 u
  2460. (setq pt10 (polar pt1 0 150))# g0 _3 Z" k. k4 q
  2461. (setq pt11 (polar pt1 (/ pi 4) 150))3 `# E$ J" j4 t4 t% \
  2462. (COMMAND "COLOR" "BYLAYER" "")
    % B5 s. U0 a% |/ {  w9 ^  I
  2463. (command "line" pt2 pt4 "")" R) }3 `, x- K- }
  2464. (command "line" pt6 pt7 "")2 m0 r1 C( U1 J6 ^. a! x# j# g
  2465. (command "line" pt3 pt5 "")
    9 |6 O0 Q( p" w; Z
  2466. (command "line" pt8 pt9 "")
    4 Y3 f: `- G( l+ ^8 ]! t8 {
  2467. (setq dk (strcat "\n Size:<"cont">"))3 k/ A0 ?$ c- K. E# ~) v0 K9 E
  2468. (setq bk (getreal dk))
    8 {6 W# @, d& r0 x
  2469. (if (= bk nil)
    ' x5 O  `; j& Q3 d1 b
  2470. (progn
    + a4 C- T/ J- j
  2471.   (setq bk (getvar "USERR3"))
    ' O! G6 f1 t0 I  P
  2472.         )
    4 _/ R! Y, W/ p1 ^2 X
  2473.   (setvar "USERR3" bk)
    1 ^1 I8 V1 v7 i* V: \1 B: T
  2474.   )
    ( d6 A9 P. B' v
  2475. (command "scale" pt4 pt5 pt7 pt9 pt11"" pt1 bk"")
    : J: }" Q4 ]- \6 ~7 |
  2476. (COMMAND "COLOR" "7" "")7 f& H; y% m6 v/ T% h2 e& w
  2477. (COMMAND "STYLE" "Truc"  "impact" "" "" "" "" "")- E1 M8 C$ ~- z! A$ ]4 q, A) w# N
  2478. (command "text" "j" "mc" pt1 (* 150 bk) pt10 "A" "") ' O5 h6 B2 L* u" P  T
  2479. (COMMAND "COLOR" "BYLAYER" "")5 ]+ s6 z6 J& A) r  ]1 d, |
  2480. )
    " l6 d0 @1 m$ a  _  @* m; ^; A$ S
  2481. ' t2 }4 \) b8 i$ w
  2482. ;=====================================================================" C- W; r) B9 t. r# a
  2483. ;CA - Reverses the case of text.  (Upper to Lower and Lower to Upper.)* ]% c2 m& k. N6 a
  2484. ;
    % }/ C) }% J& ~4 H8 G7 {' ]
  2485. ;Jeffery P Sanders  S- [( _* |5 G* n0 S3 o
  2486. ;
    4 D, @: @7 h& p2 T# m9 S6 Q# }
  2487. (defun C:CA(/ en enlist tx newtx cnt tp asc note); s) R0 c# v1 `: ^# v: G2 }# s4 t( J5 \
  2488. (setvar "cmdecho" 0)
    ; C5 v+ I7 @+ f, l, x
  2489. (if(setq en(entsel))
    1 {; H4 |1 I0 A- D  K4 e
  2490.    (progn2 w; S, K! X) J7 ?( Q
  2491.       (setq enlist(entget(car en)))) \1 m* b  C9 a; o3 H
  2492.       (if(= "TEXT"(cdr(assoc 0 enlist)))
    % `1 ?' D, g/ O6 O
  2493.         (progn
    / q% U' ~/ t+ M) F, }
  2494.           (setq tx(cdr(assoc 1 enlist))- @( J1 R% ]0 Z
  2495.              newtx "" cnt(strlen tx)8 u9 l+ @, ~( k. h. [
  2496.               note "\n...CASE Reversed. \n "
    - O# J- N( C! G9 |
  2497.           )
    7 B' \, v( p( N6 P: H
  2498.           (while (> cnt 0)
    . ]( N- E$ H4 c; f7 B' }
  2499.              (setq tp(substr tx cnt 1))+ w  q, A$ ]4 T. a: q) u5 m
  2500.              (setq asc(ascii tp))
    9 {. ~/ |. Q3 ^7 x% j
  2501.              (if (> asc 96)
    / U. s" r" y  Y! j+ c
  2502.                (setq tp(strcase tp))5 L, M( i! d: P
  2503.                (setq tp(strcase tp T))
    * f% b: a4 ?& `8 J, R4 U
  2504.              )
    ) p. Z; M8 Q$ q3 B% ]  f
  2505.              (setq newtx(strcat tp newtx))
    . a0 T. [5 R$ W8 o
  2506.              (setq cnt(- cnt 1))3 f+ j: Q+ J' U- j
  2507.           )( z# ]/ K- s7 z+ J# J9 ~- f
  2508.           (setq enlist(subst(cons 1 newtx)(assoc 1 enlist)enlist))3 o) ]& ^4 K9 D  D$ P& z
  2509.           (entmod enlist)
    4 ~. K; i6 H5 i4 r$ ^7 I5 x2 h" ]
  2510.         )  c8 T2 {) m, L: w  i( s4 ?
  2511.         (setq note "\n....Text Only Please. \n ")
    * i  P5 q7 W* |; D0 N1 Z
  2512.       )3 q2 P7 G4 F" Y0 X6 K! [0 P! M
  2513.    )) @% H3 S. z* q" L9 N% z
  2514.    (setq note "\n....Nothing Selected. \n ")
    0 U" C4 U  u$ z! h2 O4 e% \
  2515.   )" d( _, N0 |9 L; j' j5 Y; \
  2516.   (setvar "cmdecho" 1)* t) p4 k; H2 B7 ]0 [5 t
  2517.   (princ note)8 M2 D* q! m7 x  w* H1 J4 ]" a, R" @
  2518.   (princ)
    9 A% R& m: Y& s, _' x
  2519. )
    # R+ L% U! y) p0 w# m

  2520. 2 r" V  [9 R% \7 Z# V8 [
  2521. ;=====================================================================
    # V, _) S8 l, u3 }6 k% u
  2522. ;==================== NEW TEXT STYLE UPDATE ==========================
    + S8 [' F: }1 D! n
  2523. ;=====================================================================
    * S8 E$ A+ D3 ]$ e8 H5 R$ ?4 k

  2524. * {6 B4 H* l7 b: @
  2525. (defun c:nS (/ tdt ssdt sodt index)
    % n+ M/ h* H1 E0 v* S- C
  2526. (defun ObjName (ssdt /)
    / p( B. x0 E, k" C/ h
  2527. (cdr (assoc '0 (entget ssdt)))
    & y- P/ L1 `) V  j+ n* W9 A# i4 Z
  2528. )+ y& e: [: z: c; _6 J  U
  2529. (defun MoPL (ssdt /)( K& c- R+ L/ O/ m; V& t$ C" `
  2530. (= (cdr (assoc '70 (entget ssdt))) 0)
    2 h) f$ m) w4 H% `1 M1 i
  2531. )
    . L! r) j4 m% y, o0 o
  2532. (defun NoiPL (ssdt /)9 l6 U2 _/ J4 Y/ u$ ~) p
  2533. (if (MoPL ssdt)
    7 ~+ v/ o9 R3 B, E5 O+ i( `) g
  2534. (command ".PEDIT" ssdt "J" "All" "" "X")" O9 c, N7 L3 _1 {2 l3 S/ A5 T: E
  2535. )
    2 L% E! S, L& n/ D; N/ \
  2536. )" [1 O8 A3 G8 z
  2537. (defun NoiLC (ssdt /)8 `; w/ C+ O1 P% ~
  2538. (command ".PEDIT" ssdt "Y" "J" "All" "" "X")
    % y" x, P+ o8 x9 _) B4 W7 F- W
  2539. )
    3 A6 N1 a( J' D+ g0 d3 A
  2540. (setq
    " E; ~0 C; z0 T, p& ~# _
  2541. tdt (ssget)
    4 S, P; ^9 l5 \7 s0 v+ r
  2542. sodt (sslength tdt)
    2 B% u1 z/ N' S7 K0 m- y
  2543. index 0
    ) k. K5 e# T) G% l0 U
  2544. )) j) o0 x; R# Y
  2545. (repeat sodt* c- N) p: M; @, Q. M4 D
  2546. (setq
    $ B% s" n& W/ O3 m3 b
  2547. ssdt (ssname tdt index)
    9 ~5 w, m- `6 Y6 W2 J
  2548. index (1+ index)
    0 G2 k0 s% J- T
  2549. )9 K/ q# ?; u  B( W! U4 z8 ~1 _* J
  2550. (if (or (= (Objname ssdt) "LWPOLYLINE")
    & I' n; N# g9 _4 e* E$ y% W. d  r
  2551. (= (Objname ssdt) "POLYLINE")" |9 f& N; `" L1 s6 `' v
  2552. ): n4 K9 m6 I, w7 _5 z
  2553. (NoiPL ssdt)8 V& Z: X( M! e" g' y2 j
  2554. )
    # Z7 Z9 E9 m7 c8 T5 O9 X5 b( b* ~
  2555. (if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))
    1 K& n/ A2 I3 N/ O
  2556. (NoiLC ssdt)8 B6 ^0 w% `" d, c, G; `2 y7 Y! B
  2557. )
    + Q6 t5 k" ]. @& G5 h/ ?; U: h) Z
  2558. )
    7 ~( e4 `4 t3 y# R2 L
  2559. (princ)- [1 b0 j; R1 @+ ]2 b( [1 C
  2560. )
    # j7 f9 d1 ~7 c# T3 m0 e& u

  2561. + Y5 g0 M+ A, x- N5 `
  2562. ;=====================================================================
    $ l2 n. R  ?; [: |( u) b
  2563. ;;; AREAM.LSP7 ~: _8 S  L# J- b: N
  2564. ;;; Function: Calculates the total area of selected objects
    , L4 E( t% i" @% ?/ w
  2565. ;;; By Jimmy Bergmark
    * L6 l& _/ s6 I8 C0 F. u4 c$ V! N
  2566. ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved
    4 @, T) o+ e+ [; A* i, o
  2567. ;;; Tested on AutoCAD 2000
    ' L" }2 E1 J2 ?7 h5 \8 F
  2568. ) G! {# i( `3 `+ l
  2569. (defun c:ea (/ olderr oldcmdecho errexit undox restore ss1 nr en tot_area)
    2 W6 ?# T5 @3 {- v
  2570.   (defun errexit (s)' [* Y, K2 t2 {$ S
  2571.     (restore)
    0 [. R$ [" O+ ]! y0 \4 W
  2572.   )/ }, j/ i% z! p7 T  I, F8 v1 S
  2573. 6 v/ n8 @( W8 z7 e
  2574.   (defun undox ()  X, u* R- l+ |+ J
  2575.     (command "._undo" "_E")
    . H& l! {( x; m5 T
  2576.     (setvar "cmdecho" oldcmdecho)
      b3 a) O" R6 A6 W9 @
  2577.     (setq *error* olderr)
    5 [. B! l6 D2 S! d+ k& ]. e2 J
  2578.     (princ)
    , H) x5 T9 @; C# D
  2579.   )
    % Y9 x5 Z' ?6 q! J

  2580. # R  _0 c; [( G8 k
  2581.   (setq olderr  *error*
    / n5 y0 M3 ^: O
  2582.         restore undox' J$ D- H3 T- W  L' H
  2583.         *error* errexit
    1 r, }# A* @* t  Y2 V
  2584.   )
    ; k: C; D! ?* F1 n* ^
  2585.   (setq oldcmdecho (getvar "cmdecho"))" G3 m2 O1 m; e% w. K* A
  2586.   (setvar "cmdecho" 0). C3 z* O5 H3 i& |+ ?, M; {6 q4 c
  2587.   (command "._UNDO" "_BE"). w8 R; H& p. W0 H
  2588.   (if (setq ss1 (ssget '((-4 . "<OR")
    1 y4 i$ ^% H: }7 Z+ c: t
  2589.                          (0 . "POLYLINE")
    ( ?$ R' ]6 r% h4 F% v1 d
  2590.                          (0 . "LWPOLYLINE")
    # o; ~# z% [& S2 U. i& s3 _
  2591.                          (0 . "CIRCLE")
    & X; ~0 C& j* L
  2592.                          (0 . "ELLIPSE")0 k- e1 U- S, G/ J
  2593.                          (0 . "SPLINE")6 P" w4 d8 s* i) S
  2594.                          (0 . "REGION")0 @9 W& S' R$ |3 g, _
  2595.                          (-4 . "OR>")
    0 ]+ o9 t! A8 r' O9 V& D+ T
  2596.                         )4 R5 J, c7 [  u) |& S8 ]9 R
  2597.                 )
    ( d$ f; I; }5 B: |4 Y  Z
  2598.       )/ t& Z7 u3 F/ D2 i8 p, K. i) Q+ J
  2599.     (progn
    % ~" o3 ?  e6 x/ i' z  d+ M
  2600.       (setq nr 0), p# v, }( Z& j$ b. R: e' m+ }
  2601.       (setq tot_area 0.0)
      r; M; y# F( g0 w
  2602.       (setq en (ssname ss1 nr))$ @5 u1 L! h3 h* k# Z" t" I
  2603.       (while en
    5 U" ?' z) }& b' K% {1 h
  2604.         (command "._area" "_O" en)
    ( _7 U& M; Q; v
  2605.         (setq tot_area (+ tot_area (getvar "area")))  E5 t3 f/ ]. `0 u" u& X: F% t
  2606.         (setq nr (1+ nr))9 U! K- D$ I. g+ }
  2607.         (setq en (ssname ss1 nr))
    9 Y4 t) b6 u; u* z
  2608.       )
    9 [- J' _- M$ n! ?. m' [5 T+ k  d
  2609.       (princ "\nTotal Area = ")/ `7 {" q9 }2 }& h7 v1 m$ G
  2610.       (princ tot_area)) s; ~9 ?& u: I1 V
  2611.     )3 K5 t( N  I7 k; G
  2612.   )
    5 ?; ?( ?9 \8 z7 E/ w& c( D
  2613.   (restore)
    , K) D! {- }. L0 A6 w+ d
  2614. )
    6 b/ }- |$ ?- o

  2615. 4 Q. k, q. k4 [6 M% |) l* H
  2616. ;=====================================================================
    6 D- b' e+ [1 c9 J
  2617. ;;; By Jimmy Bergmark
    . O) k) m: R* w- B$ b$ |/ b
  2618. ;;; Copyright (C) 2008 JTB World, All Rights Reserved
    % U, ?( W6 P* V! d+ [
  2619. ;;;
    & t0 T* n7 k( P: [  R' p$ {- j
  2620. ;;; Created: 2008-03-311 F6 a" G2 Q  Z0 X, }: }5 W. r# H
  2621. ;;;1 h$ o: K0 t* Q8 X# Z2 s/ ~1 {
  2622. ;;; Convert Attribute definitions to mtext
    0 e- s. p; ?* f
  2623. ;;;
    ! d* D+ d6 |8 d: G- l4 C& z) ^. [

  2624. : f% y. W' g* i1 y1 {: L
  2625. (defun c:ATB (/ eset1 blkcnt en enlist tag1 ht pnt vl space)2 \" n6 v" ?6 u+ D9 b" _! t
  2626.   (setq        eset1  (ssget (list (cons 0 "ATTDEF")))5 o& a; `/ d% i  k
  2627.         blkcnt 0
    3 P8 f9 e; {1 E2 p# ?; N
  2628.   ), _5 ?' u+ }0 ], j- P1 u

  2629. ' _9 u  {- ~! G6 x
  2630.   (if eset1
    0 b- r- n0 L  j8 [3 A0 ]" Q$ f4 o
  2631.     (while (<= blkcnt (- (sslength eset1) 1))7 |8 O- Q; o* u5 {+ K( A
  2632.       (setq en           (ssname eset1 blkcnt)) a' I" \8 n& q+ p3 y
  2633.             enlist (entget en)
    ; `, Y7 b8 F- R1 J
  2634.             ht           (cdr (assoc 40 enlist))0 v" G. @% D7 x0 w. z: F1 \
  2635.             pnt           (assoc 10 enlist)8 q' A6 V8 `3 f% L& i. X' F
  2636.             pnt           (subst (+ ht (caddr pnt)) (caddr pnt) pnt)2 @* R! T  Q* I! p3 h3 u
  2637.             space  (cdr (assoc 67 enlist))6 S# g( d9 G3 P# V
  2638.       )5 w6 ~, r- ^/ M% G8 O
  2639.       (setq vl (list
    ( H. l- }% Y$ m9 M) f8 R1 b
  2640.                  (cons 0 "MTEXT")
    8 p" w4 J8 i4 K# G
  2641.                  (cons 100 "AcDbEntity")
    / S8 B* G( v, z) `
  2642.                  (cons 100 "AcDbMText")
    / R. V6 P: f9 y5 a
  2643.                  (assoc 7 enlist)
    2 X' g4 p5 N5 r# a0 `$ O0 q$ G, T% |
  2644.                  (assoc 8 enlist)% a5 {0 ?# x9 I. B: d2 [$ W
  2645.                  pnt$ k4 p2 b( d" h* I
  2646.                  (assoc 40 enlist)
    - W; l. `/ q+ \/ C& p' M
  2647.                  (cond ((assoc 62 enlist))
    - R) S' y1 o$ A6 e& c/ ?, c% Z% z' K
  2648.                        ((cons 62 256))
    % r0 n5 W, I6 L, K  N% N; u* d
  2649.                  )3 Q7 ^8 M  v. @: f
  2650.                  (cons 1 (cdr (assoc 2 enlist)))7 H, }1 _2 X" ]. ~* ^& l, y" _
  2651.                  (if (= space nil)
    * _7 j1 t- P% ?- v
  2652.                    (cons 67 0)
    4 M: T' b/ E, y
  2653.                    (cons 67 space)
    , ~- I8 w  E, c% M) O6 |
  2654.                  )
    0 l: |: ~( ~9 \( \1 |
  2655.                )
    3 Z4 Q4 S' e3 B, {: S
  2656.       )% h9 b4 a- ]: w6 k$ Z/ m9 G
  2657.       (entdel en)
    . d; H  k  t6 ^4 A, l" F
  2658.       (entmake vl)
    ' o! {: {( ^) n8 T- u8 {
  2659.       (setq blkcnt (1+ blkcnt))
    * ^7 r) h: \1 _' {- v+ R; `
  2660.     )
    1 M3 h# [: a! w7 D
  2661.   )
    , J) U2 w, P- u1 W: d
  2662. )2 {" l; e- R  Z% y5 \' C
  2663. 8 |& N' H& V' d- u, _
  2664. ;=====================================================================
    + _( U# o7 l7 }& G" j0 y$ `3 \
  2665. 6 O3 U1 d" j% p6 C0 Q
  2666. (defun c:xxx ( / cumdt dodai thoat dem ten doituong textxl dem goc toi)
    8 [; x7 J4 I7 @' [- O( ?3 }
  2667. ; Khoi dau cua chuong trinh
    ! }- v0 ^* i, K# ]' P9 H% o" k, s: K
  2668. (princ "\nCopy Inteligent...\n")6 q2 n# m9 X, b3 u8 f- Q
  2669. (setq         luuecho        (getvar        "cmdecho")
    7 o/ Z6 w$ x1 ]! d/ o! p' E3 w
  2670.         luu        *error*2 i4 X; p3 Y0 N) J) }' T
  2671.         *error*        ketthuc% [4 {9 D( P1 S' G( i
  2672.         cumdt         (ssget)6 }7 t2 `; ]9 L; l3 v1 {1 |
  2673.         dodai         (sslength cumdt)6 T/ Y" ]. k0 K9 o' V
  2674.         goc                (getpoint "\nSelect base point:")
    $ a/ z3 b' d3 _) Z) s! S; T
  2675.         thoat                nil% t$ v6 I# }# p7 i: {/ q5 p8 l
  2676.         dem                0
    ; f0 M0 {/ O) @8 ~( t
  2677.         textxl                nil
    + p, L& x% k$ s
  2678. );
    5 D& v; T2 m5 o# W; e; G
  2679. (setvar "cmdecho" 0)
    * }+ V# S; i5 F- j
  2680. ; Loc ra duoc ong text de xu ly
    ) r% `, V3 b3 v( I9 J5 K
  2681. (while        (and         (= thoat        nil)6 U' Y6 m6 {0 {4 @) w4 |
  2682.                 (< dem        dodai): t+ _7 C- p3 U+ x: P4 n
  2683.         ). i0 |6 O, A4 D( O' Z# t- p2 P5 B
  2684.         (setq         ten        (ssname cumdt dem)6 s) R% b; u6 ^7 N% b0 P
  2685.                 dem        (1+         dem): K3 s" y8 |1 d  T; r7 E% z$ n; ]
  2686.                 doituong (entget ten)
    " g: j; N8 k5 j8 f7 `
  2687.                 kieu         (cdr (assoc         0        doituong))                        
    / |, e2 u# t! J5 y
  2688.         )
    ! ?$ r6 C: M3 ?. @% |0 X
  2689.         ( {/ O$ S( [% C8 G  F
  2690.         (if (or (= kieu                "TEXT")
    ' z& g5 A" Y" p0 K2 f# g7 c4 v. F
  2691.                 (= kieu         "MTEXT")        
    7 E* V& O" H% Q( C* A* z6 Z
  2692.                 )' t% C4 ^* F/ P/ R: @2 d/ B' T
  2693.                 (setq         thoat        T# I4 D  a# {3 m4 ?% Q2 R- {
  2694.                         textxl         (cdr (assoc 1 doituong))         " b& n7 M* D& N7 m; |
  2695.                 )0 K; @2 }! ^) N1 W4 z
  2696.         )
    0 [: T; {7 H& z6 E! Y/ F* G
  2697. );  }* r: z9 n" c6 w+ d
  2698. (while T + R. N5 H( y8 F# }% j2 J; K4 M
  2699. (setq        toi                (getpoint "\nSelect next point: " goc)) l1 q. c; f. x
  2700.         vitrilech         (list         (- (car toi) (car goc)) (- (nth 1 toi) (nth 1 goc)))" G: b3 `5 G) B" d# U; [8 \
  2701.         dem                0
      \; ~8 `" a, P2 p
  2702. )5 Z  ^. B+ U, z: A
  2703. (while        (< dem dodai)
    # W, g: s1 c, l9 j/ b
  2704.         (setq         ten        (ssname cumdt dem)( \0 j& U' j. q
  2705.                 dem        (1+         dem)  s: B  D+ c; B( J* F/ H
  2706.                 doituong (entget ten): u1 _; w- R3 K! m, F0 H5 ?& ]
  2707.                 kieu         (cdr (assoc         0        doituong))                        
    5 k' e8 D) M, X
  2708.         )& p) J& w* {7 k  X: ], T1 Q' Q  F

  2709. + C3 `  B- S) o
  2710.         (if (or (= kieu                "TEXT")' N& W! x) l9 s+ y) L0 u; d; e! l
  2711.                 (= kieu         "MTEXT")        7 S3 w8 N) p4 c6 `- z+ j9 ~
  2712.                 )8 Y' }0 y, d" w3 _& a8 j
  2713.                 (doitext        ten)
    - [8 H! Y& ~$ s' A
  2714.                 (copy_dt        ten)
    8 b2 P: v8 K7 ~& ~& t

  2715. . ~  \8 @: p0 V0 U; o. X- K
  2716.         );if
    / A) y7 w. w+ x+ C% ]+ a; @- O
  2717. )  e2 ~, U5 m! f" |3 X. W
  2718. );while) ~0 I* n- y3 \0 H0 i2 v
  2719. (ketthuc)/ t+ ~! `& t0 x& O! y
  2720. );defun
    6 i% N7 H7 U7 m( N
  2721. (princ)) \4 }3 S# U$ T7 x1 w5 q, l

  2722. 9 ~+ }) O3 f5 O9 n
  2723. ;=====================================================================
    : Y0 f  ~. e( _
  2724. ;;; By Jimmy Bergmark
    1 O% G: i+ W, y. C  L
  2725. ;;; Copyright (C) 2008 JTB World, All Rights Reserved
    ! ~& ~9 v- r6 R. }2 ^
  2726. ;;;( [3 n# ~" i8 s: Q4 ]  `+ U
  2727. ;;; Created: 2008-03-310 X; D6 p& g+ t7 u7 [
  2728. ;;;! R9 T. _- s: e3 H
  2729. ;;; Convert Attribute definitions to text
    % B2 F. r. l$ W1 e
  2730. ;;;
    ! a) {2 k* ^! L
  2731. % ^! D% G  H  I& p
  2732. (defun c:ATT (/ eset1 blkcnt en enlist vl space)
    ( l$ [( c* x3 g% l- c1 S9 }
  2733.   (setq        eset1  (ssget (list (cons 0 "ATTDEF")))" t) j7 B8 U, P8 L9 ]) n
  2734.         blkcnt 0$ _) I/ R: y5 I9 f: Y1 R3 A
  2735.   )
    9 D0 L; a) u  U, E# d" f

  2736. # X9 \# k  j) y- H! x
  2737.   (if eset1
    8 S7 q1 Y: B& f& b$ Y
  2738.     (while (<= blkcnt (- (sslength eset1) 1))' X/ o6 A" s2 I5 C/ i8 N. ~& m
  2739.       (setq en           (ssname eset1 blkcnt)
    " ^! u& c5 j: \3 K8 M$ a7 Z5 }
  2740.             enlist (entget en)
    ' L/ y4 s% p) y& a' U2 R
  2741.             space  (cdr (assoc 67 enlist))" J' g7 ^  \8 `# a, i
  2742.       )4 Y9 ~& [# j! T: }! R& ]! i
  2743.       (setq vl (list
    2 s# W; U: B, \) I5 c4 I
  2744.                  (cons 0 "TEXT")
    9 \2 ?" w) U" z1 `: z! u7 k1 e
  2745.                  (cons 100 "AcDbEntity")
    # d" ^; i; C/ p, {9 i( g
  2746.                  (cons 100 "AcDbText")5 f& \( D; G. S- a0 w
  2747.                  (assoc 7 enlist)
    7 J4 h$ k* ~3 ?5 H  G  }
  2748.                  (assoc 8 enlist)8 r. t: q/ m4 b' B# h2 y
  2749.                  (assoc 10 enlist)! |2 u5 }# d4 t$ Z! W
  2750.                  (assoc 40 enlist)
    + |" x& A  p: J! U5 V( P+ h# o, o
  2751.                  (cond ((assoc 62 enlist))5 N3 Y; q8 W! [
  2752.                        ((cons 62 256))! M: Z+ e4 @0 t
  2753.                  )& R* ]) a% K7 \& X
  2754.                  (cons 1 (cdr (assoc 2 enlist)))
    4 k. ~" l  Z5 z% a" {
  2755.                  (if (= space nil)
    " j" P" D' C( `4 F7 z
  2756.                    (cons 67 0)! Y; H' `. P4 l6 b5 q
  2757.                    (cons 67 space)
    & J5 l7 m) A0 g! u2 {0 l
  2758.                  ), y9 r) x0 u( w; x, ]
  2759.                )$ w* H$ x- T/ \0 {
  2760.       )
    ; n& j  Y( T* l5 v  j
  2761.       (entdel en)/ b/ J; W& d  m+ S9 h* U
  2762.       (entmake vl)
    ; v5 S6 z: t2 `: I1 o' C/ @9 r8 ], Z4 b
  2763.       (setq blkcnt (1+ blkcnt))* L0 k& j7 [% Q) Q  U
  2764.     )
    9 r2 x7 ?  t  b% ~5 f3 g
  2765.   )
    6 M' T) u) {) a! \# w' A+ O
  2766. )
    4 l: M8 b  h, @( y
  2767. ;=====================================================================9 P! B  J" a4 x  _2 H: d
  2768. ;============================ Doi Truc ===============================
    & ^* d5 y- J/ w  ^3 ^+ n& H6 Z/ }+ ^+ k
  2769. ;=====================================================================' y  k1 t- p. g3 y3 D( u& N

  2770. + s8 r6 n  y' r  C2 W4 K$ j7 [6 y- j
  2771. ;=====================================================================, V# h( F0 E5 z0 I% b. d$ G
  2772. ;=============== FUNCTIONS GA 1+3+5+7+9+11+13+15+17+19 ===============9 p7 N' }, ~. q" ~  V. }& ?% X
  2773. ;=====================================================================) C# N) n) t( n7 C7 b: g% A
  2774. (defun c:ga1 ()
    3 `2 b- ^+ n% l6 [/ p% t4 D
  2775. (setq a (getpoint "\nChon diem: "))# H- `: p5 J+ [
  2776. (setq b (getpoint a"\nChon diem: "))
    % s( b: w# H& d- ^3 s
  2777. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))% Y7 i0 |1 p6 Y  o9 q
  2778. (command ".circle" c a)
    , K; y9 p  B0 h+ p0 ^
  2779. (command ".line" a c "")
    4 L) v8 m* \" u6 P6 E  `7 n1 {; h
  2780. (command ".array" "last" "" "p" c "1" "" "")4 I- g: w+ @: S5 B3 C9 X, L7 s
  2781. (princ))
    0 n. i+ M" q2 A  r6 ^9 i! l. o( }
  2782. # M; C* U- k" {5 S
  2783. (defun c:ga3 ()
    : \' V; z' j# z7 L6 i6 v& s
  2784. (setq a (getpoint "\nChon diem: "))( Y. d. z: U$ j. k& X7 t: t& k
  2785. (setq b (getpoint a"\nChon diem: "))% f) [7 H& v! X
  2786. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    " q' g* y  S6 D8 l1 T+ t4 e" f, p* L
  2787. (command ".circle" c a)7 z7 O6 `5 H0 M
  2788. (command ".line" a c ""): w5 J/ p7 ~- e% F2 k7 Z
  2789. (command ".array" "last" "" "p" c "3" "" "")- ]- a) B+ E1 R# X3 W9 j9 D; i
  2790. (princ))
    - X7 T1 g3 v9 c( L
  2791. 7 m. z4 {& q2 l( F+ V2 M
  2792. (defun c:ga5 ()
    ! c2 w& N* q& B6 g+ u: T
  2793. (setq a (getpoint "\nChon diem: "))
      _4 @$ J0 E6 W- E/ z, K
  2794. (setq b (getpoint a"\nChon diem: "))
    / j' y! j% N) D
  2795. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))# G7 V- d& X5 X" `2 H3 h& B$ z
  2796. (command ".circle" c a). S, }5 @% o% @! h
  2797. (command ".line" a c "")
    2 j# c  ]% w4 U* {4 k
  2798. (command ".array" "last" "" "p" c "5" "" ""); W) \; L) U; z& `% M1 J
  2799. (princ))+ F6 A' e7 S6 n, k

  2800. # n! k$ k; ^7 T3 e
  2801. (defun c:ga7 ()% f: t7 V5 X% ]2 h4 q
  2802. (setq a (getpoint "\nChon diem: "))
    # S. i' n1 Z- A5 x7 O) ~
  2803. (setq b (getpoint a"\nChon diem: "))" a/ I, |0 e, H6 o- {
  2804. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))); q" Y( }7 @1 D
  2805. (command ".circle" c a)
    4 J+ z2 o0 N/ G3 m
  2806. (command ".line" a c "")
    " ?5 o( G) U1 M, k( u, x6 o
  2807. (command ".array" "last" "" "p" c "7" "" ""). e; \* j' \* }' {- O  U" ^/ N7 m
  2808. (princ))5 C& `$ E* _; J. n# A
  2809. - z1 {* U6 S6 l
  2810. (defun c:ga9 ()
    ) {; ~, ^& \) F
  2811. (setq a (getpoint "\nChon diem: "))% L- x( o$ b2 e
  2812. (setq b (getpoint a"\nChon diem: "))
    . ~( p, Q- c2 X! Q5 \
  2813. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))  [6 A$ J8 {+ \: i0 n# [4 Q& z
  2814. (command ".circle" c a)# }1 u2 G: C5 y$ F9 K; D9 u4 E
  2815. (command ".line" a c "")
    % e$ @) f. o5 B# n8 Y# B0 t" b
  2816. (command ".array" "last" "" "p" c "9" "" "")
    5 r& v2 H0 q' V# _' T
  2817. (princ))1 E! m) D1 P7 }, ?! J1 p% x/ F

  2818. / I% a' @- T+ u" n; S
  2819. (defun c:ga11 ()
    # _3 W, x- V4 g0 \: j
  2820. (setq a (getpoint "\nChon diem: "))3 g. {& O! @4 ]5 n+ s# \. H6 y
  2821. (setq b (getpoint a"\nChon diem: "))
    8 g3 h6 I" V$ O: x% y9 T) @/ I
  2822. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))6 a& k% j$ j" F3 @0 v6 v/ h* p) g
  2823. (command ".circle" c a)2 f) p+ j: m2 v% W& Q/ ^
  2824. (command ".line" a c "")
    , x* M& i3 }. x
  2825. (command ".array" "last" "" "p" c "11" "" "")
    + Z3 X5 ~' i# r
  2826. (princ))) I3 Y4 m! G' _, C3 B

  2827. $ @1 i- E  V2 N: a
  2828. (defun c:ga13 ()
    - R4 E. O  l; i. s
  2829. (setq a (getpoint "\nChon diem: "))
    " e) h5 k3 ?5 u# }, \
  2830. (setq b (getpoint a"\nChon diem: "))
    $ ^  {3 a& {  L& q% z
  2831. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))( _* N' i; s, [7 v
  2832. (command ".circle" c a), ]* b3 Y- r* r- T- N
  2833. (command ".line" a c "")
    ! h; m5 B1 a( a* r/ T
  2834. (command ".array" "last" "" "p" c "13" "" "")8 g. o5 ?! @" h9 Q& @5 J( F% H
  2835. (princ))
    / R5 X/ _5 N: Z, S$ \9 g- I9 f8 x: F

  2836. 9 V/ w* N, E6 h  `. Q: `1 C2 e' ]( }! g
  2837. (defun c:ga15 ()# e  `1 x6 ^. C  i
  2838. (setq a (getpoint "\nChon diem: "))- E$ ~& X% f0 ~7 z8 _; l0 `3 o( }4 D  R
  2839. (setq b (getpoint a"\nChon diem: "))
    ) F% p5 I* I2 |4 a1 ?3 l& Q( j, G* r
  2840. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))) ~! |: \* f( k
  2841. (command ".circle" c a)
    ; z4 X6 Y( u! B
  2842. (command ".line" a c "")
    7 o' ?3 q3 G4 r% i6 Z. B
  2843. (command ".array" "last" "" "p" c "15" "" "")
    8 A; {" A, u' p
  2844. (princ))
    * r( Q& i7 h( {; k1 ]

  2845. 2 v% g* _+ ]0 [3 ~: t3 p
  2846. (defun c:ga17 ()3 L4 p; U' ^; x5 @" ^
  2847. (setq a (getpoint "\nChon diem: "))! t8 G' N( q( r% J. w& v6 O; h
  2848. (setq b (getpoint a"\nChon diem: ")). i: D% U+ l0 l! j, h! a
  2849. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    $ t$ J* c' U* \) {* c
  2850. (command ".circle" c a)  o* _/ R9 j* O" ~' D, m
  2851. (command ".line" a c "")
    ) D& S) n  q6 ]  O0 L# K- {% K, M
  2852. (command ".array" "last" "" "p" c "17" "" "")
    # a) y- X3 b3 W! l% ^5 _
  2853. (princ))7 X! \( G. s: b* z) q0 s: u
  2854. ' Y2 b& [7 e7 k9 R" z9 H
  2855. (defun c:ga19 (). @2 M+ P& v& ~/ |- G
  2856. (setq a (getpoint "\nChon diem: "))
    ; L5 g/ M. j! c+ s* ]6 R- L7 B: ?
  2857. (setq b (getpoint a"\nChon diem: "))
    ' I- o- T9 {( D" i3 o, t
  2858. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))# N' ~# A+ G4 v% _
  2859. (command ".circle" c a)
    : ~, P5 W9 E" q7 b+ t; c2 f$ i& i
  2860. (command ".line" a c "")
    $ }+ R$ h0 N. G* e3 c" `3 i6 I
  2861. (command ".array" "last" "" "p" c "19" "" ""); j* I$ k2 X- c
  2862. (princ))
    * ]+ x3 `' M2 X/ \8 U& D  t

  2863. 2 T2 o5 ^, ?6 a" A  V; |/ k0 Q' n: r
  2864. ;=====================================================================
    / |, b5 `3 Q& v0 b7 _' X; n3 H' q
  2865. ;============== FUNCTIONS GA 2+4+6+8+10+12+14+16+18+20 ===============
    9 X) A- X5 E& B& {# B
  2866. ;=====================================================================
      U/ X$ |8 a! U$ J( y( E
  2867. (defun c:ga2 ()
    - K9 H  {% Z  l4 c7 y
  2868. (setq a (getpoint "\nChon diem: "))/ |8 O; a1 @8 m; n3 F# s
  2869. (setq b (getpoint a"\nChon diem: "))& e5 D. O' R  k$ Z0 _
  2870. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    ' A# y/ {3 x" l9 ~
  2871. (command ".line" a c "")
    ) n' a; A' F9 K4 w3 r
  2872. (command ".array" "last" "" "p" c "2" "" "")7 Z  A' U4 |7 N. t3 ~! L- e' m; P- f
  2873. (command ".circle" c a)
    0 Z- y, @/ M& k6 K
  2874. (princ))
    2 |+ O0 s8 l! q2 I- j  a

  2875. . U2 I7 }  J# r# F6 g
  2876. (defun c:ga4 ()4 x' g, s/ Y6 F9 _
  2877. (setq a (getpoint "\nChon diem: "))
    ; U+ {: V( W8 Z/ z
  2878. (setq b (getpoint a"\nChon diem: "))
    ) x% v) R# a  i, Z2 l6 X
  2879. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
      ?3 q5 Z+ u# x# I& G' [. f9 U: U
  2880. (command ".line" a c "")
    5 g) p- b  s, [- U( x
  2881. (command ".array" "last" "" "p" c "4" "" "")
    / h8 {+ _8 l+ I+ y' ]
  2882. (command ".circle" c a): }  j5 }8 P7 A% s. L4 z2 `" J
  2883. (princ))
    3 ?( V! {6 c( ^, \9 L$ s7 F$ E

  2884. . d4 v' _4 c9 N, y
  2885. (defun c:ga6 ()1 g+ N0 f1 }4 r( z* `5 W; S
  2886. (setq a (getpoint "\nChon diem: "))6 w/ X' a# o+ v; o7 r/ b# \2 c8 i
  2887. (setq b (getpoint a"\nChon diem: "))& q, c) E& T# |: H( f, l8 D6 I
  2888. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))0 w8 b. e4 O9 k; @3 m8 O
  2889. (command ".line" a c "")' _8 H& @. ?& l$ }0 w
  2890. (command ".array" "last" "" "p" c "6" "" "")
    1 f" A4 d  X9 }- ?8 I
  2891. (command ".circle" c a): l/ B8 @. p! I! I
  2892. (princ))
    * [4 x$ q& i; u# ^1 D) a1 k
  2893. 4 E2 R5 z* n3 _( d* V" l
  2894. (defun c:ga8 ()
    - l& |1 {* {8 G8 C. \: f$ k
  2895. (setq a (getpoint "\nChon diem: ")). h; J* i, c- q2 @( }
  2896. (setq b (getpoint a"\nChon diem: "))
    4 V/ O3 d! w' [# I8 v, A+ e  }0 c0 g$ s
  2897. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    % j4 n7 A# M9 e
  2898. (command ".line" a c "")- S- S+ g3 i8 l1 N- }: V
  2899. (command ".array" "last" "" "p" c "8" "" "")$ Q( J* L+ k: f9 k4 n7 G2 k
  2900. (command ".circle" c a)1 g3 a* d$ Q" g, c9 f
  2901. (princ))
    , T1 {7 ^2 N' y1 J
  2902. . p+ |3 `/ @5 ^
  2903. (defun c:ga10 (), d; w5 b5 M# W9 l$ w8 K
  2904. (setq a (getpoint "\nChon diem: "))6 E& C  F4 s7 n* q* X0 U  Q' n$ m
  2905. (setq b (getpoint a"\nChon diem: "))
    * g8 F" h* w/ W2 |
  2906. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))+ N. T# u' G$ S# I3 h
  2907. (command ".line" a c "")2 A9 v2 h5 Y+ o0 b8 s! R- _
  2908. (command ".array" "last" "" "p" c "10" "" "")4 [0 a, Y1 ~: C, w6 j9 s: j
  2909. (command ".circle" c a)  p/ }! ^7 M- ]& T: [4 c' {
  2910. (princ))
    # G) C; R! t- Z& s% l

  2911.   U% [. w/ ?* N  u
  2912. (defun c:ga12 ()& v1 U) M+ N2 ^5 [+ L' U1 c1 T
  2913. (setq a (getpoint "\nChon diem: "))' m# b2 m5 u/ S4 I
  2914. (setq b (getpoint a"\nChon diem: "))2 T) O5 u- ^. y
  2915. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    - A. \) \% \1 v' t$ @+ U$ G
  2916. (command ".line" a c "")
    . J9 g2 T/ z) j- r# h" W/ ~, O. i
  2917. (command ".array" "last" "" "p" c "12" "" "")2 d5 J9 B3 `) X8 r; I5 E0 E
  2918. (command ".circle" c a)0 H3 ?0 O$ X1 g, ^; T; |/ `
  2919. (princ))
    $ m7 \% A  c/ j0 N

  2920. 3 M: W1 M1 R# q" s
  2921. (defun c:ga14 ()3 C% h  h. `! V$ O) E
  2922. (setq a (getpoint "\nChon diem: "))+ N" U( S+ x: }: }" S  \- c, D  z! b0 Z
  2923. (setq b (getpoint a"\nChon diem: "))
    2 L, _; Z2 r6 @
  2924. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))6 A6 Q& [1 m4 d2 M, O
  2925. (command ".line" a c "")
    % G- t$ B) v; O" g
  2926. (command ".array" "last" "" "p" c "14" "" "")
    # W9 `* n. a1 ~
  2927. (command ".circle" c a)! C& W9 p2 \$ s0 C
  2928. (princ))
    ! \, V$ @! L( M" {; T
  2929.   n5 o: l  J; B  c* m6 t, ]+ q
  2930. (defun c:ga16 (): N0 e. X* M6 v4 _. k" ]( ~4 ]
  2931. (setq a (getpoint "\nChon diem: "))
    # j. Z, v9 c5 Y0 w3 N8 p2 ]+ v
  2932. (setq b (getpoint a"\nChon diem: ")); e# J4 s3 e& F  J! Q2 Z, \
  2933. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    4 n  Z; U, x. V, m- K, {0 ^# X
  2934. (command ".line" a c "")% o" ?! e9 F1 Z7 S
  2935. (command ".array" "last" "" "p" c "16" "" "")
    2 ]  q, `* W; [
  2936. (command ".circle" c a)/ a0 `% [9 s& X) m6 \) o7 h
  2937. (princ))
    5 z  x: ^5 p2 x- u: z

  2938. % w6 M; g; v# J- V8 M0 F1 a
  2939. (defun c:ga18 ()
    1 F2 o( n; X' o% Q
  2940. (setq a (getpoint "\nChon diem: "))
    ' ^+ s- @7 l$ w) u% k! U) c+ e) W. S
  2941. (setq b (getpoint a"\nChon diem: "))3 N; ?3 R  e1 F# C# C1 I
  2942. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))" i0 w& ]: b/ q% d& |) D) {7 }2 V
  2943. (command ".line" a c "")
    $ u) X2 h  F' O: V& k
  2944. (command ".array" "last" "" "p" c "18" "" "")
    & g* s# H& E/ p1 i8 m/ U% D% U
  2945. (command ".circle" c a)
    4 C" s8 q0 F/ Y( }0 C: Z- q) t1 e
  2946. (princ))
    " y6 F" V% v6 }2 j  Q

  2947. " h* P1 B7 B) ^3 o/ _
  2948. (defun c:ga20 ()
    6 u5 c. J( d2 @/ c. {9 w1 w7 ]
  2949. (setq a (getpoint "\nChon diem: ")). I* o" D' b; y  L0 M7 \
  2950. (setq b (getpoint a"\nChon diem: "))
    5 h, ~6 t# Y5 Q/ M0 [
  2951. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))0 l9 K+ @* n- g7 N# f1 Y
  2952. (command ".line" a c "")
    7 ~, G+ F! I. O$ |4 {' o
  2953. (command ".array" "last" "" "p" c "20" "" "")
    ' z* `" r2 k  I
  2954. (command ".circle" c a)
    % o  ~2 x1 d0 e  Y1 E. v+ c
  2955. (princ)). s. g) E2 P" _/ R. M

  2956. % B, H1 u3 ~( q$ q; A! ?( W
  2957. ;=====================================================================
    - c% z/ G. }! s2 C6 \0 w" [4 F  W8 v
  2958. ;============== FUNCTIONS GA TUY THICH : EVERYTHING IF ===============
    1 H# z. D& w; @0 Q6 E
  2959. ;========================== 06-11-2016 ~ 18h00 =======================1 u' l0 r: g) b# A) |+ d' J
  2960. ;=====================================================================
    1 m+ U' V) g7 j* z: N
  2961. (defun c:ga ()6 d0 S, t& S$ l' U2 l7 E
  2962. (setq a (getpoint "\nChon diem: ")); P2 v: L  O: g1 C
  2963. (setq b (getpoint a"\nChon diem: "))+ k" F& o* S% o; J# g! d6 e8 |
  2964. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    * @# G6 u# F/ S# g5 o
  2965. (command ".circle" c a)3 b+ d+ M6 i8 C  ~; Q! Y
  2966. (command ".line" a c "")
    4 Z; Z  I' g, R/ o# c+ e
  2967. (command ".array" "last" "" "p" c "NUM" "" "")
    . V9 L# f5 [( I
  2968. (princ))! Y7 I% _' x% j* y  I( Q
  2969. # W, P7 x2 f' S; W* z, Y
  2970. ;=====================================================================
    & p5 y6 f7 G% H, m# L. U- q
  2971. ;=========== FUNCTIONS HOA THI TUY THICH : EVERYTHING IF =============6 j  `, g* M) x3 b; p& u( g
  2972. ;========================== 06-11-2016 ~ 18h40 =======================
    3 C; A- X' E- M* r4 j
  2973. ;=====================================================================
    5 q% Z3 R+ Y6 R, N  N* g) \

  2974. , ~! K  X5 G$ ^# f" V/ o1 K
  2975. (defun c:hoathi ()4 [2 n8 |% C" j% Y, h9 H
  2976. (setq a (getpoint "\nChon diem: "))
    - O8 l6 M) H# D! g+ H; w+ |
  2977. (setq b (getpoint a"\nChon diem: "))
    9 S  i, k" D+ s9 ?' @0 Q/ z
  2978. (setq c (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    : t/ {/ v3 A0 F, u( H+ q2 V9 _# ~" Y# T
  2979. (command ".line" a c "")
    & b- V/ q- w' [6 Z+ M
  2980. (command ".array" "last" "" "p" c "NUM" "" "")1 i5 U. I+ x( i% H
  2981. (princ))
    * b8 n( Q9 F& U/ W) ~9 {: V$ f
  2982. 7 ]' o  m+ b. H6 t. i4 m
  2983. ;=====================================================================" i/ A! }, W0 w. r  t% o0 y3 x
  2984. ;============= FUNCTIONS CUNG TUY THICH : EVERYTHING IF ==============
    5 w3 e, s+ ~) z. P2 F
  2985. ;========================== 03-11-2024 ~ 19h33 =======================+ ]/ |/ S" e/ `7 x: H( W! `
  2986. ;=====================================================================
    / V9 V' V6 S. ~

  2987. 8 I4 y2 Y% g% W; {; Z0 _) T6 i! f) m
  2988. (defun c:cung ()
    , h* E. F. ^+ N. {; k( y; u2 W
  2989. (setq a (getpoint "\nChon diem: "))4 [4 ~+ z6 |% W% i1 E: N/ j- r
  2990. (setq b (getpoint a"\nChon diem: "))
    2 o& `) A) K$ l
  2991. (setq c (getpoint a"\nChon diem: "))
    ! B, a9 Z5 @: f8 w! }
  2992. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))3 I  ~: v7 Y% U0 V4 X
  2993. (command ".arc" a b c "")8 k+ P$ r% Z- G1 q: X" h
  2994. (command ".array" "last" "" "p" c "NUM" "" "")" ]& m+ b$ L9 c
  2995. (princ))
    + H. ?2 @  `5 u: R4 n6 \
  2996. / U  P2 r, G' t3 p+ X! w
  2997. ;=====================================================================3 v8 j- q7 i) z$ S  B6 D
  2998. ;============ FUNCTIONS HECLOIC TUY THICH : EVERYTHING IF ============
      T/ v8 e" X, k9 K. K
  2999. ;========================== 03-11-2024 ~ 20h02 =======================
    * K" _: r1 m! q: l9 R
  3000. ;=====================================================================
    ' V( f, X9 x/ R7 G6 \1 H
  3001. . K$ {. r5 M: e' G
  3002. (defun c:hecloic ()2 t  B- C1 s0 b. }7 x# U8 l
  3003. (setq a (getpoint "\nChon diem: "))
    . {9 Y7 ^8 \* S0 M$ r% w
  3004. (setq b (getpoint a"\nChon diem: multi "))" J* P' M* ~3 R6 G; }
  3005. (setq c (getpoint a"\nChon diem: "))(princ)
    ( B; o4 a1 b- l
  3006. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))
    8 {$ ^. B& A- Y
  3007. (command ".arc" a b c "")+ [  X6 Z. u- L3 x& }
  3008. (command ".array" "last" "" "p" c "NUM" "" "")
    ) ^( \1 ^7 P- y+ q8 w
  3009. (princ))
    # P' j6 C! {% b2 S$ H+ g
  3010. % i& \) H) a0 u5 n
  3011. ;=====================================================================2 O& a$ q" z- M3 a9 r0 W
  3012. ;============== FUNCTIONS GAY TUY THICH : EVERYTHING IF ==============. @2 h* }: G8 H: A/ t) j
  3013. ;========================== 03-11-2024 ~ 19h38 =======================% P: I( z) Y0 G1 k  ?8 G2 ]
  3014. ;=====================================================================. {, h3 H/ V! H" g, }: Y

  3015. & H  Q7 H3 [7 \8 G  N
  3016. (defun c:gay (): Z1 ^, s" c+ x9 ]6 Z0 g
  3017. (setq a (getpoint "\nChon diem: "))
    ( R$ C# n( k/ I! s
  3018. (setq b (getpoint a"\nChon diem: "))
    3 B0 A3 i' `  Q; Q/ ~# ]
  3019. (setq c (getpoint a"\nChon diem: "))(princ)7 ?) b& ]7 A) J2 r/ ^& E
  3020. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2)))9 k( j: c4 K$ @/ t3 l* b: [
  3021. (command ".pline" a b c "")
      Q; h; G: N3 X! X  z# X
  3022. (command ".array" "last" "" "p" c "NUM" "" "")
    / F- W% U; L1 I& K
  3023. (princ))
    6 [% [; G7 i& A! t. u
  3024.   E5 i8 J$ T0 s* y( A% Y4 ~' ?0 _
  3025. ;=====================================================================
    0 @2 H8 D% S8 k/ V
  3026. ;============ FUNCTIONS HECLOIT TUY THICH : EVERYTHING IF ============) U5 @7 l$ B- s" N% g# {. W9 S( Q, Q
  3027. ;========================== 03-11-2024 ~ 20h02 =======================( r! K, c& U" \& J- v; m
  3028. ;=====================================================================
    / O0 J' |; U2 b* o& J
  3029. & }$ Y& `  q- j1 }8 r
  3030. (defun c:hecloit ()
    + _. g# a/ O1 V  @& c2 J
  3031. (setq a (getpoint "\nChon diem: "))5 `+ ]8 q& ~6 f% Q% p
  3032. (setq b (getpoint a"\nChon diem: multi "))
    : x, N" M' T/ Z' X, }
  3033. (setq c (getpoint a"\nChon diem: "))(princ)' o' R9 ?8 d! A1 x- P5 ]
  3034. (setq d (list (/ (+ (car a) (car b)) 2) (/ (+ (cadr a) (cadr b)) 2))), V* C* n4 d& k( H8 L- g8 g
  3035. (command ".pline" a b c "")
    $ L6 h7 |0 X1 b
  3036. (command ".array" "last" "" "p" c "NUM" "" "")& ^9 v8 _9 }! L+ F
  3037. (princ))6 b' V8 a1 @  n7 Z: K
  3038. 1 E: F( q4 O$ |0 w7 q; L# X1 e6 M
  3039. ( Q" ]) W, O3 ?1 M6 I) p# H1 t% c; d
  3040. ;;; ============================ Merge Hatch =============================6 n, M$ a3 e& l& P9 w1 l

  3041. % j: J4 Q- b, x% h. X" }% y
  3042. (defun c:mh (/ ss entht sl i dt dtht)" _) n4 |$ |' b# O( n

  3043. ' C# v* z5 F6 `4 y% f
  3044.   (princ "\nMerge Hatch - free lisp from CADViet.com")
    6 B  S: U& `1 J# \3 [$ k7 i
  3045. ' e4 Z0 Y, r; q: @( P
  3046.   (setq7 J2 O. P7 I/ ?! V) M& w+ N
  3047.     ss (ssget '((0 . "HATCH"))). d6 `- B5 j8 x7 |
  3048.     sl (if ss
    9 F6 @0 d( T  q1 h, e- A( \1 V
  3049.          (sslength ss)( K6 m3 C, h) n7 G! ]$ z
  3050.          0: c( r0 N0 m5 D/ K/ C+ ^
  3051.        )
    ! ?2 f/ \- V6 g( ?8 W( j9 C( a
  3052.     i  0
    " Z0 b8 r* _2 R. m: w
  3053.     l  0
    , b% t) I* ]* T. p! X" W
  3054.   )
    3 V& g/ c: E: q( J2 p
  3055. : X. n2 ^9 r, I1 s; [6 z5 Q' D
  3056.   (repeat sl, u' M* B; I" `  E9 Y
  3057.     (setq
    " P2 b  N" p" a# F, w; L6 p3 j! S8 n
  3058.       entht (ssname ss i)
    + t0 ]. b$ N) F, d
  3059.       dtht  (getbdata entht)
    : m: U; G1 ?) b$ N3 A
  3060.       dt    (append dt dtht): t" @1 X4 N7 }, N- t
  3061.       l            (+ l (cdr (assoc 91 (entget entht))))
    ! i0 S) X3 ]0 [) `5 L
  3062.       i            (1+ i)
    0 `! U. S9 h) ~: b4 g
  3063.     )  q+ ]* f4 ^0 S
  3064.   )
    0 V- P/ m0 K: w5 E
  3065. 8 |" c+ i* s5 e
  3066.   (setq        ent  (ssname ss 0); T: E6 C1 x( D( W$ k) @. M
  3067.         ss   (ssdel ent ss)
    - Z1 `  S8 d- a
  3068.         tt   (entget ent)
    # L3 n" L" w+ l. J
  3069.         duoi (member (assoc 75 tt) tt)+ \5 {  V! W5 q: l0 A" Q
  3070.         dau  (reverse (member (assoc 91 tt) (reverse tt)))0 ^: _4 Y, }& v4 |4 q5 y! S
  3071.         tt   (append dau dt duoi)
    , S: I. [+ a% h& ^4 w/ [! E
  3072.         tt   (subst (cons 91 l) (assoc 91 tt) tt)
    2 b7 g  \) n  D) O# b
  3073.   )
    & Z' y7 |) L( Z/ B( t8 E
  3074.   (entmod tt)
    $ l1 Q) C" O) U! [* R2 C# L

  3075. + l  x6 x4 U' ]
  3076.   (command ".erase" ss "")
    ! F- s: O9 x, H6 Y% b
  3077.   (princ)
    - G6 `, A. ^3 p/ A! S
  3078. )& t( U3 S8 K, ?3 n

  3079.   a6 N% ~* A: S! V, }
  3080. (defun getbdata        (ent)
    ' L2 L3 K: N! z& z7 O
  3081.   (setq        tt (entget ent)
    & Q/ e: A: e4 X: h# |% [' \
  3082.         tt (cdr (member (assoc 75 tt) (reverse tt)))' V- `% U. o8 |5 A7 L5 G1 j( B
  3083.         tt (cdr (member (assoc 91 tt) (reverse tt)))1 F. i# H( W9 D2 f; }! _
  3084.   )
    9 J) B, M1 n, M0 e% \
  3085. )
    % Y( h% a. x3 d$ Q
  3086. 2 E& u- ~0 P) L/ K* n- P; m3 ^
  3087. ( ]1 J# y. O  N4 x" J/ r
  3088. (princ)
    " X2 h1 T) Q4 s0 Y# s) k) V

  3089. # i! A4 f/ l. h- r
  3090. ;;; =========================== CAC LENH LAYER ==============================& Q% u5 Z/ g" c, j9 ~( C
  3091. ;;; =========================== Layer hien hanh =============================
    0 N: ]4 ~/ h, `2 z/ h
  3092. " Y2 o8 v: ]% p* `
  3093. (defun layset (/ LAY) (setvar "cmdecho" 0)0 v) ~" P5 l! W
  3094. (setq LAY (entsel "\nPick vao doi tuong muon Layer hien hanh la Layer cua doi tuong do : ")): S, r" u# A0 I, f  Z; Z7 Z# w8 q
  3095. (if LAY     (progn     ! m) W, I, j. h4 _
  3096.   (setq LAY (cdr (assoc 8 (entget (car LAY)))))
      o- y5 A/ o+ u# I) p0 m" }; H2 g1 j# l
  3097.   (command "_.layer" "set" LAY "") (princ (strcat "\nLayer : " LAY " da la hien hanh."))  )
    + U) [" h! p+ Q& t. h% B+ i
  3098.              (progn$ W4 Z6 F2 m) P4 {! c$ D8 m
  3099.       (if (not ddlop) (load "ddlop"))  (if (setq LAY (ddlop))
    ) u1 f5 k( ]9 ]( b
  3100.              (progn
    , N+ `; L5 F, Y' K3 Y
  3101.             (command "_.LAYER" "ON" LAY "THAW" LAY "SET" LAY "")  (princ (strcat "\nLayer : " LAY " da la hien hanh.")) ) ) ) )(princ) )/ P$ r( W$ M  w6 a  t3 z
  3102. (defun c:LLL     () (layset))(defun c:LAYSET () (layset))# o% R8 X% q) ?% D: Y  c# v( e

  3103. % N! n' F% y2 c4 N
  3104. ;;; ================== Cap nhat doi tuong vao layer hien hanh ==================
    ! z1 _, V: E$ [+ d- `# j2 d) b

  3105. - M3 P7 H# T9 H3 c8 {; _
  3106. (Defun LAYCUR (/ SS CNT LAY)  (setvar "cmdecho" 0)
    . _+ f1 G9 k& X  i
  3107.   (if (not (setq SS (ssget "i")))' @9 D/ l1 E6 e) [+ Y
  3108.     (progn (prompt "\nChon doi tuong cap nhat vao layer hien hanh: "); i/ O/ Y7 b( {" n! {
  3109.       (setq SS (ssget))    )  )% P, U* h. n1 H4 w# Z0 M1 n  e  b
  3110.   (if SS    (progn
      z9 s) C, F( l# x+ o# {
  3111.    (setq CNT (sslength SS)) (princ (strcat "\n" (itoa CNT) " doi tuong tim thay."))                  (command "_.move" SS "")                     
    & B  E! B# x' v& O9 C
  3112.       (if (> (getvar "cmdactive") 0)                : H# H/ p5 }) |( O
  3113.         (progn9 N2 A) q/ K) p9 O) z5 s
  3114.           (command "0,0" "0,0") (setq SS  (ssget "p") CNT (- CNT (sslength SS))    )   )/ N; {$ B  Z- q; A5 h9 N% k+ `
  3115.           (setq SS nil)     )  (if (> CNT 0)                                 1 u! P- k  E3 Q. ?! R
  3116.           (princ (strcat "\n" (itoa CNT) " doi tuong tren layer LOCK.")) ) ) )
    & d5 f1 F6 C. _
  3117.   (if SS    (progn, C$ `8 f- f! L6 T3 ~
  3118.       (setq LAY (getvar "CLAYER")) (command "_.chprop" SS "" "_la" LAY "")
    ' |# @# x' ^; J0 |  B, a
  3119.       (if (= (sslength SS) 1)/ P0 p1 l0 c* c9 o! a
  3120.         (prompt (strcat "\n1 doi tuong da cap nhat vao layer : " LAY " (layer hien hanh)."))2 Z0 H. J; D! ?7 f1 _1 d
  3121.         (prompt (strcat "\n" (itoa (sslength SS)) " doi tuong da cap nhat vao layer : " LAY " (layer hien hanh).")) ) ))  (princ) );end
    + |# o3 ?, J! a1 }, O3 _
  3122. (defun c:LAYCUR () (laycur)) (defun c:LHH    () (laycur))0 N1 l9 U) r* L/ M4 V
  3123. ! ?) B: D1 h9 ]( {& B. v5 y, M
  3124. ;;; =========================== Layer Iso ===================================
    3 H1 Z, j$ o6 ?. {

  3125. ( q+ P& U1 [- g* C2 K6 i3 V, n
  3126. (Defun LAYISO (/ SS CNT LAY LAYLST VAL)  (setvar "cmdecho" 0)' @! D+ p, v' C- s* s0 Q; B1 ]
  3127.   (if (not (setq SS (ssget "i")))    (progn! n+ e! D; P& |1 ]5 g* x, S! P8 K
  3128.       (prompt "\nChon doi tuong tren layer(s) muon lam viec doc lap: ")% X1 G* {. J9 e: p8 s  y3 o
  3129.       (setq SS (ssget))    )  )
    1 I# E1 C3 _, Q" L, Z1 {
  3130.   (if SS    (progn      (setq CNT 0)
    3 k  f8 D" l2 [7 x5 B* R7 j
  3131.       (while (setq LAY (ssname SS CNT))
    - x4 e( \. v3 O' J
  3132.         (setq LAY (cdr (assoc 8 (entget LAY))))
    ) j) A4 ~0 u- ~4 f" M. }7 d
  3133.         (if (not (member LAY LAYLST))- M' v# i+ D- J# X
  3134.           (setq LAYLST (cons LAY LAYLST))        )4 M6 }) J/ D6 |" X6 o  W" U9 {
  3135.         (setq CNT (1+ CNT))      )- O- t, n0 w& j% Z0 H! N
  3136.       (if (member (getvar "CLAYER") LAYLST)
    8 m4 Z# k0 l- R
  3137.         (setq LAY (getvar "CLAYER"))
    . G1 L9 \' |' Z- }+ I0 F; u# k
  3138.         (setvar "CLAYER" (setq LAY (last LAYLST)))      ). L% C8 A& |: ~' U0 h
  3139.       (command "_.LAYER" "_OFF" "*" "_Y")
    " i8 d& Z9 F! P3 K0 ^8 w& P( v
  3140.       (foreach VAL LAYLST (command "_ON" VAL))' m% S, C* d, }  D
  3141.       (command "")            (if (= (length LAYLST) 1)
    9 ]$ x) ?6 y( H& _- J" ?$ j" E  l! A
  3142.         (prompt (strcat "\nLayer " (car LAYLST) " da tach ra."))( N' I# P+ S5 |9 I8 |( E3 u2 i! k
  3143.         (prompt (strcat "\n" (itoa (length LAYLST)) " layers da tach ra. "# z% v5 J8 C6 z1 @" V2 l1 _, N
  3144.                         "Layer " LAY " la hien hanh."   )  )  )  )  )  (princ) )& k1 w! r% Q; v) P2 Y, f
  3145. (defun c:LAYISO () (layiso)) (defun c:LI () (layiso))
    . c3 q1 W1 c% X+ X2 u. m+ a
  3146. ' p& w! y5 n7 `. s
  3147. ;;; =========================  Layer Match ==================================# E, s, W$ Z/ _* K) d/ r0 C
  3148. 3 w: S  a4 O5 s% d& r2 M' U
  3149. (Defun LAYMCH (/ SS CNT LOOP LAY ANS)0 |0 H: {0 `$ I# B. D/ d" q1 r  J
  3150.   (setvar "cmdecho" 0)
    5 Z0 X; \4 j+ K% C, z) g
  3151.   (if (not (setq SS (ssget "i")))    (progn; a  _7 W+ X) O# S8 w4 r; S
  3152.       (prompt "\nChon doi tuong muon thay doi Layer : ")+ F# x7 S: z" U* C% S/ D5 d
  3153.       (setq SS (ssget))    )  )  N3 s$ U; q8 @" C; e6 {1 m
  3154.   (if SS    (progn% r' _( M! N1 X0 C7 g
  3155.       (setq CNT (sslength SS))
    # N. s( ]& X/ R/ t" V1 O; a, N
  3156.       (princ (strcat "\n" (itoa CNT) " found."))  (command "_.move" SS "")                        
    ! G% ]1 S2 ]9 E, H$ D$ y
  3157.       (if (> (getvar "cmdactive") 0)   (progn
    & E; `3 l; p# u4 @' x
  3158.           (command "0,0" "0,0")  (setq SS  (ssget "p")
    0 s2 I  ~8 N- @! o
  3159.                 CNT (- CNT (sslength SS))    )    )
    % ^" @: s" ]3 I9 @! y( U
  3160.         (setq SS nil)      )  (if (> CNT 0)                                    
    $ ^, I: l7 ]1 g0 Q3 X$ h
  3161.           (princ (strcat "\n" (itoa CNT) " tren layer LOCK.")) ) )  )
    8 x' |" g9 L+ g5 o
  3162.   (if SS    (progn+ j2 C2 y, Y' ]1 |$ o/ j
  3163.       (initget "Ten")  (setq LAY  (entsel "\nTen layer/<Pick doi tuong>: ")  LOOP T  )
    1 f8 c  `4 d  n& K3 J: g
  3164.     (while LOOP        (cond$ o: G  ?+ B) y& ^
  3165.           ((not LAY)
    4 Z" b# h6 _( G; C% K
  3166.             (prompt "\nKhong chon doi tuong.")
    7 ?0 x7 D: p# u5 j. a
  3167.             (prompt "\nSu dung layer hien hanh? <Y> ")8 d, }8 }1 P% L4 e5 _
  3168.             (setq ANS (strcase (getstring)))
    % l, }5 y' t* ~
  3169.             (if (or (= ANS "") (= ANS "Y") (= ANS "YES"))9 S# @) N& P2 L, G/ @" W
  3170.               (setq LAY  (getvar "clayer")  LOOP nil )  )  )
    $ y! M2 x, d6 Y% u' k! }
  3171.           ((listp LAY)  (setq LOOP nil) )
    4 M% s1 y1 A3 U0 D$ R# A
  3172.           ((= LAY "Ten")
    8 D/ A, h1 m6 v# `3 ~
  3173.             (setq LAY (getstring "\n>Nhap ten layer: "))
    1 ]+ s9 N; B$ }) R, `
  3174.             (cond
    & h+ a6 p; P' B. e8 B1 z0 l' U
  3175.               ((tblsearch "LAYER" LAY)  (setq LOOP nil)   )' T- t4 z8 W/ }& \" r5 F- e2 r
  3176.               ((/= LAY "")
    % C) c# i1 [. q- D7 z4 ]
  3177.                 (prompt "\nLayer chua co trong ban ve. Tao layer moi? <Y>: ")
    . m3 |3 K/ |' [! D, A- _. w
  3178.                 (setq ANS (strcase (getstring)))
    ( w  A6 m6 ~* c
  3179.                 (if (or (= ANS "") (= ANS "Y") (= ANS "YES"))
    . f1 u. B2 _* f% [: j) G7 v  H
  3180.                     (progn
    # j3 }! _: p, W1 Z! o, Z3 ^
  3181.                         (command "_.LAYER" "NEW" LAY "")
    # _$ z: m- w% w
  3182.                         (setq LOOP nil)   )
    / F& `9 L1 I7 E  M4 ^: C- _0 r
  3183.                     (prompt "\nLoi ten layer.")   )   )  )  )   )
    5 b7 A* l% h. F. E
  3184.         (if LOOP  (progn (initget "Ten")6 q2 t' p/ p0 b
  3185.             (setq LAY  (entsel "\nTen layer/<Pick doi tuong>: ")) ) ) ); while LOOP* `$ v5 p* N% q* j9 g3 R$ N% J
  3186.         (if (listp LAY)+ V0 _3 `: X0 ?! N
  3187.         (setq LAY (cdr (assoc 8 (entget (car LAY)))))      )
    0 Y' ?. R8 ]% b! [3 E$ M
  3188.       (command "_.chprop" SS "" "_la" LAY "")
    2 }% L- K' ~; N2 C3 x1 h
  3189.       (if SS  (prompt (strcat "\n" (itoa (sslength SS)) " doi tuong thay doi toi layer " LAY )) )3 {3 O* o1 X* }/ ~8 H% F5 m
  3190.       (if (= LAY (getvar "clayer")). r* O- ?/ u3 y9 \, r
  3191.         (prompt " (layer hien hanh).")  (prompt ".") ) ) )  (princ) )
    7 V/ O* a' N2 a+ b2 K# T( R
  3192. (defun c:LAYMCH () (laymch)) (defun c:CLL    () (laymch))3 F7 U3 c7 V( {5 z# _& X) o

  3193. 4 e& y  R' k# H& I) M6 b: Y# b/ V
  3194. ;;; ============================ Layer OFF =================================$ @4 j% M5 v8 I! }5 v
  3195. 1 g8 h; a& F* k0 M& c
  3196. (DEFUN C:LJ (/ SSET SSL ENT LAY I MODE)
    0 b/ u  F: U8 ]
  3197.    (SETQ SSET (SSGET))" d3 _$ i" q6 ~/ E  @- Z% V* Y3 w
  3198.    (IF (/= NIL SSET) 7 y( F1 h# o  L& T2 B
  3199.     (PROGN" ]6 S, M8 X# g3 a  h* X3 D! c5 h
  3200.      (SETQ SSL (SSLENGTH SSET))
    9 v/ j. D: y) C9 q% y
  3201.      (SETQ LAY "")
    ; X8 a4 {3 ^1 \% a, b
  3202.      (SETQ I 0)
    - i4 |0 _4 e: q) z% D
  3203.      (SETQ MODE 0)   T* p- e. l3 m& \# Z8 g! x2 u3 j
  3204.      (WHILE (< I SSL)4 q. R# @- q7 A
  3205.                  (SETQ ENT (ENTGET (SSNAME SSET I)))6 _, C! Z- Z# ~# D
  3206.           (IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )' E: O, s* C4 }+ s! }
  3207.           (SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) ))
    . E- k9 |: ^7 G* t, H
  3208.           (SETQ I (+ I 1))/ m  O6 q  z$ D/ A9 S% `" F. G
  3209.      )
    / ?' d$ @3 M/ d$ V+ }: l9 Y
  3210.      (COMMAND "LAYER" "OFF" LAY "")
    : ?! y0 d* g: Q/ ~; o  r
  3211.      (IF (= MODE 1) (COMMAND "") )' V, J+ P" r! y2 t; @1 f7 q
  3212.     )
    3 ~7 J3 S5 U% L, _3 ~
  3213.    )
    8 j0 O, A9 V' ?/ r' l# r! @
  3214.    (PRINC)) W1 H+ H! c+ C  T- p: W& f1 C
  3215. )/ z8 m) g+ c- d, L

  3216. 4 F6 O8 ?" \; \+ G8 S" J
  3217. ;;; ================================ Layer ON ==============================! |8 e6 M3 F+ K* ^- P
  3218. ; S% o* B* y* m( ?
  3219. (Defun LAYON ()  (setvar "cmdecho" 0)/ M; J8 |6 {. r. A$ j
  3220. (setq Lay loff1) (setq Loff1 Loff2) (setq Loff2 Loff3) (setq Loff3 Loff4) (setq Loff4 Loff5) (setq Loff5 Loff6) (setq Loff6 "0")
    - w1 f( {" U9 y0 `; A7 y
  3221.   (Command "LAYER" "ON" Lay "") (princ (strcat "\n      Layer : " LAY " da ON."))  (princ))- C5 P9 q5 }0 e( q4 m% n$ z- L
  3222. (defun c:LAYON () (layon)) (defun c:LOO   () (layon)), }5 W+ M, I0 ^1 x  G9 |6 r& W
  3223. (Defun C:LO () (setvar "cmdecho" 0)  (Command "_.LAYER" "_ON" "*" "") (princ "\nDa ON toan bo cac Layer !") (princ))' D1 `8 M3 K2 k2 S

  3224. # X; E: F8 }) ]$ ~/ r
  3225. ;;; ============================== Layer Freeze ===========================$ @( n8 u+ N! b$ w
  3226. 0 C! X* {$ V4 C8 k( M6 {
  3227. (Defun LAYFRZ (/ LAY TEMP)(setvar "cmdecho" 0)
    , B# D# i/ T, f* n9 k# m4 o
  3228. (prompt "\nChon doi tuong tren layer(s) muon FREEZE: ") (SETQ SSET (SSGET))2 Z# f+ x% P6 g2 A
  3229. (IF (/= NIL SSET) (PROGN
    6 w/ S. ~6 w" f# k; c  }, M
  3230.      (SETQ SSL (SSLENGTH SSET))  (SETQ LAY "") (SETQ I 0) (SETQ MODE 0) 3 o$ y8 d9 ~% `* E" H% m3 @
  3231.      (WHILE (< I SSL)
    ) W- K$ Q4 F( `
  3232.        (SETQ ENT (ENTGET (SSNAME SSET I)))
    : h; }; R. B" e5 e. o+ D# H; R
  3233.        (IF (= (CDR (ASSOC '8 ENT)) (GETVAR "CLAYER")) (SETQ MODE 1) )& s& x  C. [' j- J( S' j
  3234.        (SETQ LAY (STRCAT LAY "," (CDR (ASSOC '8 ENT)) )) (SETQ I (+ I 1)))/ R: w. o( y" a
  3235.      (COMMAND "LAYER" "FREEZE" LAY "")" J! B6 \% a  {) r8 e5 _
  3236.      (IF (= MODE 1) (COMMAND "")))), L( i0 d. o" h+ [, I$ s
  3237. (setq Lff6 Lff5) (setq Lff5 Lff4) (setq Lff4 Lff3) (setq Lff3 Lff2) (setq Lff2 Lff1) (setq Lff1 LAY)
    1 F& \7 h3 S; ~  t6 {" D
  3238. (princ (strcat "\n      Layer " LAY " da FREEZE."))(setvar "cmdecho" 1) (princ) )
    - o8 `5 e+ P9 \2 W
  3239. (defun c:LAYFRZ () (layfrz)) (defun c:LF     () (layfrz))( A2 K2 Z* h4 ]5 @
  3240. 2 M2 v- ?5 k$ p9 e/ Q' v
  3241. ;;; ============================== Layer Thaw ===============================
    , o; j5 M! Q+ F1 s1 A

  3242. " ~0 L, ^6 H' o# T: s4 |& ^
  3243. (Defun LAYTHW ()
    . O& E; S3 E: `" E* Y
  3244.   (setvar "cmdecho" 0)+ p$ O& F3 U5 }- ?4 g" V
  3245. (setq Lay lff1) (setq Lff1 Lff2) (setq Lff2 Lff3) (setq Lff3 Lff4) (setq Lff4 Lff5) (setq Lff5 Lff6) (setq Lff6 "0")
    5 J' J3 B& r+ q; x  z! k+ n
  3246.   (Command "_.LAYER" "_THAW" LAY "")
    - S- T* p8 U% _: h2 {
  3247.            (princ (strcat "\n     Layer : " LAY " da THAW."))
    3 w$ u7 d- s3 n  ~' Z/ \( ?
  3248.            (princ) )7 m" W3 k% l% \  E5 q4 m9 @
  3249. (defun c:LAYTHW () (laythw)) (defun c:LW    () (laythw))" b8 U% o  a! e5 b
  3250. , A" d# x; D1 H: @+ o
  3251. ;;; ============================== Layer Lock ==============================7 ~/ A6 h$ Z! n+ S

  3252. 6 @5 s3 p' i1 E  A* [9 k
  3253. (Defun LAYLCK (/ LAY)
    * T0 h9 K5 V8 C4 R
  3254.   (setvar "cmdecho" 0)
    7 @9 U8 k! g' I' |2 d9 {
  3255.   (setq LAY (entsel "\n>Pick doi tuong tren layer muon LOCK: "))
    / E! G! E6 _4 b# S. m
  3256.   (if LAY9 t1 _5 |  P! {1 J( }+ Q9 m
  3257.     (progn  o0 i" ]" D- l# x1 P/ X
  3258.       (setq LAY (cdr (assoc 8 (entget (car LAY)))))* X# F5 t# _& Q6 G
  3259.       (Command "_.LAYER" "_LOCK" LAY ""): n! g3 t8 x$ V9 h, @( ^) U
  3260.       (princ (strcat "\nLayer " LAY " da LOCK."))    )  )  (princ) )+ r) B3 p/ v5 Q& O
  3261. (defun c:LAYLCK () (laylck)) (defun c:LK     () (laylck))0 E' y4 {' X# @8 _4 ]- V7 U

  3262. 6 p  v1 r' x7 h* F
  3263. ;;; ============================== Layer UnLock ==============================
    ) r( r& T' N# k, \: u( O/ n
  3264. 8 M; M& F" l* Y- E
  3265. (Defun LAYULK (/ LAY)1 W. ~+ `- X# J" ^7 ?4 T: F3 l! y7 h
  3266.   (setvar "cmdecho" 0)
    + l' J( u& t4 J- D# b3 Z; R
  3267.   (setq LAY (entsel "\n>Pick doi tuong tren layer muon UNLOCK: "))
    6 o8 a  o) [$ a3 C1 i  Z* s
  3268.   (if LAY; n- g( u0 s2 J9 u2 u; h, {  J
  3269.     (progn
    ; w' ?# _8 W# ?; l
  3270.       (setq LAY (cdr (assoc 8 (entget (car LAY)))))+ N: x3 g4 v- J) n. u2 f
  3271.       (Command "_.LAYER" "_UNLOCK" LAY "")
    9 w2 `- {. o* z* ]$ b" l8 S
  3272.       (princ (strcat "\nLayer " LAY " da UNLOCK."))    )  )  (princ) )
    . q8 `$ Q8 x  h( j, Z
  3273. (defun c:LAYULK () (layulk)) (defun c:LU    () (layulk))5 Q& c! g& }* w' u5 ?! b5 d

  3274. ) M$ }8 m) P/ _: t
  3275. ;;;===================== Delete all objects of Layer ========================7 l3 z8 t! V+ u, f$ ]
  3276. 5 u, ~) p' x) @+ @2 E6 _) a
  3277. (defun DELAYER (/ ocmd L S)
    " ^5 F7 Y/ h9 m$ l' [5 S
  3278.   (setq ocmd (getvar "CMDECHO"))
    ; H) O) v3 H5 z" m6 A% _
  3279.   (setvar "CMDECHO" 0). P6 @0 g* p- _7 r/ {$ I5 D
  3280.   (setq L (strcase (getstring "\nLayer(s) to delete: ")))" S2 g( ~6 F8 R# I
  3281.   (setq S (ssget "X" (list (cons 8 L))))
    % ~2 V0 P2 j0 P
  3282.   (if S . z7 h- C& I! Y1 r0 U4 G4 C
  3283.     (command "ERASE" S "")            
    0 k  o& c' F$ }+ S, K
  3284.     (princ "Layer empty or not a valid layer name.")  )
    ' F# f- l7 Q; X  t% U% a3 \( l: {
  3285.   (setq S nil)                        
      H$ @# m8 \! B% X0 W. b4 T
  3286.   (setvar "CMDECHO" ocmd)            
    # e+ ?+ X' G& P* I" w  S. j+ U& e2 F
  3287.   (princ) )
    ; J! i% G0 R- V
  3288. (defun c:DELAYER  () (delayer)) (defun c:DELLAYER () (delayer)) (defun c:DEL      () (delayer))
    5 m# E5 W) q1 n1 h
  3289. 6 S  A0 R7 A3 c
  3290. ;;; ========================= HET CAC LENH LAYER ===========================
    4 p- {9 }$ x/ q) V. ?2 f
  3291. 1 ^4 g: q1 Y( W6 ~# ^# \) c, R
  3292. ;;;====================== EXTEND NHIEU DOI TUONG ===========================
    9 Q* _7 H) Z7 G

  3293. 4 ]4 o' t, J" e
  3294. (Defun C:EET ()
    / U% E6 A; x8 P* ~1 W
  3295.   (Setq CVAR (Getvar "CMDECHO"))  (Setvar "CMDECHO" 0)9 F3 U9 G. e: R7 z1 g
  3296.   (Prompt "Chon doi tuong dich cua EXTEND :")  (Setq CUTEDG (Ssget))1 E1 }: y& b. T
  3297.   (Prompt "Chon doi tuong de Extend :")  (Setq SS (SSget))  (Setq LEN (SSlength SS))
    - E, C9 w; T' c- |% ?
  3298.   (Setq I -1)
    ' q. L: d6 Y# Z& H! Q8 C
  3299.   (Setq SIDE (getpoint"Chon phia de EXTEND"))  (Command "EXTEND" CUTEDG "")8 f$ R: T# I4 O" O7 t! E
  3300.   (Repeat LEN: I$ F* G# b- }$ L! l: o
  3301.    (Setq I (1+ I))- k6 g9 B. J: a( ~
  3302.    (Command (List(SSname SS I) SIDE))  )  (Command "")
    " T6 L9 _  ]: @5 W  R
  3303.   (Setvar "CMDECHO" CVAR)  (Princ "Da Extend xong moi ban lam tiep")  (Princ) ), N2 O0 R4 d5 R& G4 \4 j4 }6 q
  3304. : @6 S2 ], l! J. r; u0 l
  3305. ;;; ===============  EXTEND 1 DOI TUONG THEO KHOANG CACH ===============
    $ i. k/ ~4 G9 M+ T; C

  3306. " c3 Y0 p* G( }/ V; \( U1 m# J" e2 k1 ]
  3307. (defun c:ETT ()  (setq os (getvar "osmode"))  (setvar "osmode" 512)
    1 N& q/ F  l% e7 Q
  3308.   (setq pt1 (getpoint "\nKich vao 1 dau doan thang can EXTEND  "))
    0 o& U$ L" q: d  q
  3309.   (setvar "osmode" os), J* Y) o3 x5 t; `4 z+ F/ b8 \
  3310.   (setq dis (getdist pt1 "\nKhoang cach can EXTEND :"))
    ! m$ S6 ?3 _. x- u- n8 S* N
  3311.   (command "circle" "endpoint" pt1 dis)  (command "extend" "last" "" pt1 "")  (command "erase" "last" "") (princ))! o: H5 P. x) M+ w# y1 A$ x
  3312. 8 M2 F; a$ J( V4 F" f! N
  3313. ;; ================ Change width of polylines =========================
    , K4 |0 j' P& q' B/ A% X. n3 I0 M
  3314. * @- ?% c4 i  A5 \
  3315. (DEFUN wp (/ a b sophantu sodem list1 ha:wid)
    1 z  C) ?& t/ K# N0 ]
  3316. (PRINC "\n         Chon doi tuong can thay doi do day (Width) !")
    ; c- }' S" J9 @" R) \: S5 j
  3317. (setq b (ssget))
    9 c# c' q! ~0 J: L# k1 Q! J! ^3 F
  3318. (setq sophantu (sslength b))
    , s3 t$ c5 ~! x' Q9 l
  3319. (if (null ha:wid) (setq ha:wid (getvar "tracewid")))
    ( \" Z! W% L; |7 d; v
  3320. (princ "\nDo rong polyline <")  {3 g& w* o3 g% }  [
  3321. (princ ha:wid)$ I2 p" ]" i. ], M- V4 _# X" ]
  3322. (princ ">: ")
    " y0 I0 r" P4 a1 G6 t5 f
  3323. (initget 4)
    ( a- Q. }3 m9 l/ m
  3324. (setq ha:wid (getdist))) H6 `% `( `4 g5 R
  3325. (if (null ha:wid) (setq ha:wid (getvar "tracewid")))
      o1 ], o$ l2 y; w
  3326. (setvar "tracewid" ha:wid)
    ' d6 c' V# s7 Q1 T  [# g
  3327. (setvar "cmdecho" 0)
    $ V4 l& b# x2 }6 f
  3328. (setq sodem 0) 3 v0 X6 N; X$ [# p4 ]' m$ L
  3329. (repeat sophantu
    " c1 U% g$ B+ I5 ]2 C; T! ^
  3330.   (setq a (ssname b sodem))
    , Q4 z" |/ F. P$ r9 y5 l# K4 p
  3331.   (setq list1 (assoc 0 (entget a)))9 }1 w5 {1 S! D, ?+ _
  3332.     (cond1 G! Z2 B& Y( r
  3333.      ((= (cdr list1) "POLYLINE") (command "_Pedit" a "w" ha:wid ""))! R7 t" p2 J% R2 l4 `/ Q/ L
  3334.      (PROGN (command "_Pedit" a "" "w" ha:wid ""))    ) , W5 x! J) ?, T8 \" E
  3335. (setq sodem (1+ sodem)) )(SETVAR "cmdecho" 1)(princ))9 M( o5 D8 a) O4 h: N
  3336. (defun c:wp () (wp)) (defun c:pw () (wp))
    0 j3 z+ }) [: T0 ~: R

  3337. 3 T6 s! K  X2 V! }/ N* X: ~
  3338. ;; ================ Change radius of circles ==========================
    * h% Z+ G  ^; c& O* N
  3339. 7 l, q! ]& y3 c  b  h3 ?+ n
  3340. (DEFUN C:CHR (/ SSET SSL M RD I)   (PRINC "\nSelect Circles :")   (SETQ SSET (SSGET))
    , T4 v6 O1 B" u7 J% R7 V: ~0 f, [
  3341.    (IF (/= NIL SSET) (PROGN  (SETQ SSL (SSLENGTH SSET))  (INITGET 4 "")  (SETQ RD (GETDIST "\nNew radius : "))
    & {; U8 }. \/ L0 ]
  3342.    (IF (/= RD NIL)  (PROGN (SETQ I 0)
    + f8 z) t/ {) @
  3343.    (WHILE (< I SSL) (SETQ M (ENTGET (SSNAME SSET I) ) ): [9 f( K0 G9 b" l' j
  3344.    (IF (= (CDR (ASSOC '0 M)) "CIRCLE") (PROGN
    7 v+ {) S8 L/ T: z9 m
  3345.   (SETQ M (SUBST (CONS 40 RD) (ASSOC 40 M) M))  (ENTMOD M) ) )  (SETQ I (+ I 1)) )      )   ))) (PRINC) )
    ; r; o( \: _, b/ G+ [3 O

  3346. 2 [' ^- O: P4 ^0 `
  3347. ;;; ============================== TEXT Hight ===============================% V( C+ v' _1 E/ W' T# \/ H4 v1 K

  3348. 3 Y2 W3 ?) ^7 u
  3349. (defun texthght (/ ent hght)4 \5 T- i; A* \
  3350.   (setvar "cmdecho" 1)- s+ q8 O; R& L$ G
  3351.   (prompt (strcat"\nSelect text entity with required text height"))# t& q' L& G# M0 c  h
  3352.   (prompt (strcat"\n."))
    # z! T1 C1 U. ]
  3353.   (setq ent (entget (car (entsel))))
    4 {9 ?6 E+ t2 _+ g. c1 {9 ]
  3354.   (setq hght (cdr (assoc 40 ent)))* P: w8 R7 x1 d
  3355.   (prompt (strcat"\nText height now set at "))(prin1 hght)
    ! o* {# d6 u( ]3 e0 ]
  3356.   (prompt (strcat"\n."))
      p- X( r4 E% }1 H- Z, c3 Q# y
  3357.     (setvar "cmdecho" 1)
    ) Z/ ]: I* m4 K$ E. W4 j2 \
  3358.     (command "DTEXT" PAUSE hght "") )
    , |/ }: w8 ^4 ^+ H/ x
  3359. (defun c:teh () (texthght))  (defun c:texthght () (texthght))7 p) ~" L6 d- D- Q: V

  3360. . t7 D) V+ z, \1 N
  3361. ;;; ================ BAT -TAT CHE DO GACH CHAN TEXT =================
    + Q  H6 |- K/ k# ]2 }5 j/ j% l0 z$ p6 q: ^
  3362. # L' c" Y& w5 ]) m' o
  3363. (defun c:tuu ()  (setvar "cmdecho" 0)
    ! a/ `! x; i& h( s2 y0 i
  3364.     (prompt "\nHay chon dong TEXT can gach chan ")
    2 m  {3 d9 U6 c8 D0 Y
  3365.     (prompt "\nSelect objects: ")
    $ ]* W2 ?  ?+ T
  3366.     (command "select" "au" pause)" |. b3 ~% h$ H1 ~6 S
  3367.     (setq sstxt (ssget "p"). f9 }; p8 w0 R. B% t3 U* f2 C7 }  q
  3368.           sslen (sslength sstxt)$ i  x0 ~8 z. Q& X
  3369.           ctr 0    )4 P& b; h! {2 R; v9 J5 W$ [. H
  3370.     (command ".undo" "mark")  x8 ^$ d& I: r7 z
  3371.     (while (< ctr sslen)1 ?4 V5 \* B" _( I" N
  3372.            (setq listxt (entget (ssname sstxt ctr))1 Z* ^! [1 T2 c" P1 V# f. X
  3373.                  txttxt (cdr (assoc 1 listxt))  Q' @+ `9 ]; \: x
  3374.                  enttxt (cdr (assoc 0 listxt))   ): T- ~& T# L4 A& f) M4 e5 @1 _6 f
  3375.            (if (= enttxt "TEXT")
    ( ]! j6 q3 f6 ^0 g
  3376.                (progn
    8 t! `& ~! |9 C- a2 \
  3377.                    (setq testxt (substr txttxt 1 3)), X4 p0 d. w1 |& c2 _
  3378.                    (if (or (= testxt "%%u") (= testxt "%%U"))3 U5 P; a2 M" G. [( |4 k
  3379.                        (setq newtxt (substr txttxt 4)), M1 ^" Q; B: |+ K' i
  3380.                        (setq newtxt (strcat "%%u" txttxt))    )
    # O* R' k6 F( `2 w; A( ]( j
  3381.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    / i4 o/ g; U; k# u. m
  3382.                    (entmod listxt)                ) )
    ) }4 n- H/ m8 g
  3383.             (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))1 d! V" f9 O! E, v# {4 Z

  3384. - d$ c& m4 d1 t% x) T- {
  3385. ;;; ================ BAT -TAT CHE DO GACH CHAN TEXT =================
    , s% M* _% l. D; m$ T$ \

  3386. 0 \0 \' T- T# S: R
  3387. (defun c:tob ()  (setvar "cmdecho" 0)
    3 ?& c$ r7 W$ F: A1 B: Z! ]
  3388.     (prompt "\nHay chon dong TEXT can gach tren dau ")2 f9 J- W- a1 {' l8 p
  3389.     (prompt "\nSelect objects: ")$ C7 a* v  `3 D0 G- I* B4 _; K
  3390.     (command "select" "au" pause)
    ! a8 P) W1 z7 O, b: i( |
  3391.     (setq sstxt (ssget "p")
    / Z$ Q: \5 W8 b6 X* J) e
  3392.           sslen (sslength sstxt)
    : f  n+ V% a. z, o
  3393.           ctr 0    )5 I! e! C9 g+ h8 x; M: r6 N
  3394.     (command ".undo" "mark")1 F% H: [6 t" ~9 }/ g' U
  3395.     (while (< ctr sslen)
    0 v! T+ y+ k$ a1 s
  3396.            (setq listxt (entget (ssname sstxt ctr))1 A4 K" w/ z7 c! o$ L
  3397.                  txttxt (cdr (assoc 1 listxt))
    ) R4 r; L( t" M) U3 I: O2 t
  3398.                  enttxt (cdr (assoc 0 listxt))   )  G* P" S* @. }/ }9 R
  3399.            (if (= enttxt "TEXT")
    1 u; R' o6 n  r/ y
  3400.                (progn1 P/ [& W  J: B9 j6 G
  3401.                    (setq testxt (substr txttxt 1 3))3 O$ o% z; k1 V. X9 X2 o
  3402.                    (if (or (= testxt "%%o") (= testxt "%%o"))+ b) e; u5 L$ u; D
  3403.                        (setq newtxt (substr txttxt 4))
    9 G9 H. E! f9 M
  3404.                        (setq newtxt (strcat "%%o" txttxt))    )# v! O. w9 Q6 m/ ?
  3405.                    (setq listxt (subst (cons 1 newtxt) (assoc 1 listxt) listxt))
    * m4 {6 ~( |/ Y7 f% ]7 Q6 d
  3406.                    (entmod listxt)                ) )9 Z0 I. B2 E! i# ^. O1 F7 ^
  3407.             (setq ctr (1+ ctr))  )    (setvar "cmdecho" 1)    (princ))" H. c" z3 K5 K- E/ Q$ E
  3408. % P. R2 E- x" |& v( {
  3409. ;;; ========================== Tim & thay the TEXT ==========================
    % [+ D/ }0 E) }. R8 g

  3410. ; d+ w+ H6 j$ s& u! K
  3411. (defun frstring (str search replace / str1 str2 index find)
    ! h3 A& P: P3 ]; G8 [9 {
  3412. (setq index 0) (while  (<= index (- (strlen str) (strlen search)))  (setq index (1+ index))
    ( s9 u. z) V+ p; W/ i
  3413. (setq find (substr str index (strlen search)))  (if (= find search) (progn    (setq str1 (substr str 1 (1- index)))
    - N; i8 O7 K8 k3 l3 e& ^1 M
  3414. (setq str2 (substr str (+ index (strlen search))))  (setq str (strcat str1 replace str2)) )  ) ) (setq str str))
    0 U7 m0 {1 Q8 N5 }- y
  3415. (defun hai (/ dial)7 b* Y, }/ F$ l
  3416. (setq dial (load_dialog "hai.dcl"))       ;;goi dialog
    " I- M3 K8 h( p9 C  \1 a, B
  3417. (if (not (new_dialog "find" Dial)) (exit)) ;;
    # j- I  D( c5 |4 i1 M" z/ o
  3418. (mode_tile "find" 2); Tao dau nhac tai hop thoai6 F, U# r  L; j8 Y
  3419. (action_tile "find" "(hai1)"), v7 v, i$ }% ~. u- [. V2 a3 {! ^
  3420. (action_tile "replace" "(hai2)")
    & m  {4 {$ S! V* @
  3421. (action_tile "cancel" "(done_dialog) (exit)")
    , H& U0 \/ ?$ p
  3422. (start_dialog)      
    - ?) [: d& [' i" F4 s5 s
  3423. (unload_dialog dial)): l8 O  s# I3 c* q/ r
  3424. (defun hai1 () (SETQ str1 (get_tile "find")))( g! G2 p9 {, W6 |- R4 Z7 P9 `: E
  3425. (defun hai2 () (SETQ str2 (get_tile "replace")))# J6 \$ C0 H( \! ~0 Z9 O  B# s

  3426. 7 I" B5 ^. V. `+ I; j0 G4 G
  3427. (defun c:TTT (/ a str str1 str2 newstr taphop sodem)
    ! U# o/ G% O$ T% q" ~, y( i. x
  3428. (hai)0 Z: a. m$ p5 P2 Z
  3429. (if (or (null str1) (null str2)) (princ "\nDu lieu khong hop le")$ ?3 Y) v" O0 _3 i; Q/ T
  3430.   (progn
    8 u: G5 L) H, R" V! F
  3431.    (setq taphop (ssget '((0 . "TEXT"))))) r+ B% f- t1 W) L7 v% M4 i
  3432.    (setq sodem 0)- a% \' L1 @/ O5 L- i
  3433.    (if taphop
    1 m3 R0 |4 c( E3 P% x) F9 ^3 ?
  3434.     (progn3 H; _) S2 r% |/ {% |/ O
  3435.      (Repeat (sslength taphop)6 m$ o% _" G- U' C" L  h- _4 ]
  3436.       (setq a (entget (ssname taphop sodem)))
    : C: e4 b. ?# O( ^9 w& j
  3437.       (setq str (cdr (assoc 1 a)))
    ) D2 h5 W3 ?9 E. H7 e5 H
  3438.       (setq newstr (frstring str str1 str2))
    $ `: a/ m2 D; l) K' R
  3439.       (setq a (subst (cons 1 newstr) (assoc 1 a) a))0 @% d- M- [1 D5 ^' D. \
  3440.       (entmod a)
    ( m* _0 l- @! q
  3441.       (setq sodem (1+ sodem))     )    ), N9 u% G- G4 M/ F1 Z$ \$ z
  3442.     (princ "\nNone "TEXT" selected")   )  ) ) (setq *error* olderr) (princ))
    % H$ X+ [- E) F/ u! K: x* e
  3443. 5 f1 T$ {, W1 A6 v6 H
  3444. ;;;=============================  CHTEXSTY.LSP =============================& c& _3 I5 ]( D( L0 H3 f- e

  3445.   I" B3 v5 I1 b) S' C
  3446. (Defun C:TXS () (Setvar "Cmdecho" 0) (Initget 1 "SE ST "), M: K0 p/ N" N/ x" y
  3447. (Setq G (Strcase (Substr (Getkword "STyle/<SElection>:")1 2)))2 N' I  V* Z' }* l  l
  3448. (Cond ((= G "SE") (Setq A (Ssget)) (Setq B (Sslength A))
    , q# z( |2 g- R" O/ x
  3449. (Initget 1) (Setq C (Getstring "\nEnter new text style: "))& O# U9 {/ i1 t4 A! j; Q# Z- B# v
  3450. (Extang C) (While (> B 0) (Setq B (1- B)) (Setq D (Ssname A B))
    3 p% L# Y0 S& [3 q; S3 t
  3451. (Setq D (Entget D)) (Setq E (Assoc 7 D)) (Setq F (Cons 7 C))
    9 o( \# \1 B8 s1 S+ l
  3452. (Setq D (Subst F E D)) (Setq H (Assoc 51 D)) (Setq I (Cons 51 J))
    + S4 W6 J5 O- m( e6 v
  3453. (Entmod (Subst I H D))) (Setq A nil)) ((Or (= G "ST") (= G ""))# P; I) w8 K& j8 T' X
  3454. (Initget 1) (Setq A (Strcase (Getstring( p# O: J" M, O. [, F4 P* h- O
  3455. "\nEnter text style to change: "))) (Initget 1)$ w5 W) T  |$ J1 `6 O) t) Y! j
  3456. (Setq C (Getstring "\nEnter new text style: "))(Setq D (Entnext)), {/ q; M* S% {% G! ]; B3 H; L
  3457. (Extang C) (While D (Princ ".") (Setq E (Entget D)) (If* |& F' V5 Z+ ~
  3458. (And (= "TEXT" (Cdr (Assoc 0 E))) (= A (Cdr (Assoc 7 E))))
    - q- j+ h, b7 d& w4 @9 d$ n) p
  3459. (Progn (Setq F (Assoc 7 E)) (Setq G (Cons 7 C))
    ! z7 l; s% e4 t9 q. W, y
  3460. (Setq E (Subst G F E)) (Setq H (Assoc 51 E)) (Setq I (Cons 51 J))" P/ `( }7 z9 y1 p1 }' D
  3461. (Entmod (Subst I H E)))) (Setq D (Entnext D))))) (Princ))
    * K: u& V) D' a

  3462. 8 S% |* i& s' G% c# U/ @
  3463. (Defun Extang (A) (Setq A (Tblsearch "STYLE" A))
    3 e( F( E+ c6 X5 Q
  3464. (Setq J (Cdr (Assoc 50 A))))
    3 d3 O2 h/ i. @2 l3 r, [0 n# l# U
  3465. 0 J, Y3 h; p# J6 i
  3466. ;;; ============================ DRAW CLOUD =============================" I" Y/ \9 \/ c" z2 d" w
  3467. 9 W. p9 ]0 P( C4 y  y  b# G5 }+ X
  3468. (defun CLOUD (/ pt1 pt2 arc1 cnt ss la)    (setvar "cmdecho" 0)' R5 m+ s2 P3 R8 _1 ~; v9 j
  3469.     (prompt "\nVe cloud (may) khong khep kin - Tu khep kin ve diem dau!")
    5 n" A! X  h3 M* u
  3470.     (setq la (getvar "clayer"))
    - h/ a# O8 K1 @3 l) n$ P9 W' F9 i
  3471.     (command "layer" "m" "cloud" "c" "5" "" "")# ]7 Y& p6 a" ]: D
  3472.     (setq pt1 (getpoint "\nEnter first point of Cloud: "))
    + f3 C" |. k9 p
  3473.     (if pt1 (prompt "\nProceed in a COUNTER-CLOCKWISE direction..."))( _  r- m1 e+ w' |
  3474.     (setq cnt 1 ss (ssadd))
    9 O0 F& Y  F8 i6 S' f5 y
  3475.     (while pt1 (setq pt2 (getpoint "\nEnter next point - and close: "))) K8 d, \$ f; r1 G$ m9 N" z. `: Y
  3476.     (if pt2 (progn (command "arc" pt1 "e" pt2 "r" (/ (distance pt1 pt2) 1.75))/ y3 D3 K, V! I' Z$ _% ~8 Z
  3477.     (if (= cnt 1) (setq arc1 (entlast) cnt 2) (ssadd (entlast) ss)) ))
    ! h$ T/ T5 q: Y* [5 W4 h4 n
  3478.     (setq pt1 pt2) ) (setvar "highlight" 0) (if (> (sslength ss) 0)
    ' a# U  z& x- A$ O" k3 F6 Z
  3479.     (command "pedit" arc1 "y" "j" ss "" "x")
    / H: x4 c: {! L5 r# D. N
  3480.     (if arc1 (command "pedit" arc1 "y" "x")) ) (setvar "highlight" 1)
      j9 J  E8 m; Z, @
  3481.     (command "layer" "s" la "")    (setvar "cmdecho" 1)    (princ))  1 [& u2 K3 y+ z9 ?
  3482. (DEFUN C:CLOUD () (CLOUD)) (DEFUN C:CLO () (CLOUD))
    6 ]) ?; p8 U/ w' b$ H
  3483. + e+ E3 M% B7 z% ?
  3484. ;;; ================================ Funtion-Dulieu ========================- g- C$ b; J  U8 Y8 ~% A
  3485. ;;; ================================ Funtion-Dulieu ========================
    9 y' ?) V$ k) D2 Z
  3486. ;;; ================================ Funtion-Dulieu ========================% y8 v+ J; L. O$ |
  3487. 4 O4 a3 ~; r- E0 B
  3488. (defun ha:nhap (kytu thamso) (princ kytu) (princ thamso) (princ ">: ") (setq key (getint)) (if key (setq thamso key)) (princ thamso) )) U9 [" \" g- v- {4 v! Q$ j; j
  3489. (defun ha:thoat () (reinit) (setq Temp "Da thoat khoi chuong trinh"))3 |7 w' N1 p6 \( ?9 v
  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))- a) m  b' i# a: R" e* t1 d
  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) )" g9 i6 d. y: p% L8 E1 B6 o. x- k
  3492. (defun hauon (hauon1 hauon2) (command "fillet" hauon1 hauon2))& A* O6 T% b8 A: Z- {7 U) n
  3493. (defun init () (setvar "blipmode" 0) (setvar "cmdecho" 0) (setvar "angbase" 0))
    ! V9 U- e5 c' J5 f, Z* d& r
  3494. (defun reinit () (setvar "cmdecho" 1) (setvar "osmode" 0))
    6 g' j/ y, \! F8 `+ s  p
  3495. (defun tichvecto (vecto1 vecto2) (apply '+ (mapcar '* vecto1 vecto2))): K; I& L0 B. ~0 \3 w' W
  3496. (defun vectophap (v01 v02 / vectochiphuong) (setq vectochiphuong (mapcar '- v01 v02)) (list (cadr vectochiphuong) (* -1 (car vectochiphuong))))9 l; d. `. I7 U: @4 |1 j( H
  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)))  B: U! t5 c1 {9 l: u1 {% D$ Y
  3498. (defun dtr (dtr) (* pi (/ dtr 180.0)))' F/ `4 `" H9 T" p
  3499. (defun rtd (rtd) (* 180.0 (/ rtd pi)))$ H+ ~: Z6 S7 U9 B& F5 W: S$ G
  3500. / M# P4 ]5 f! h  [; V: ?
  3501. ;;;==============================PROGRAME===============================
    $ P9 q/ ~1 P+ M# I
  3502. ;;;=====================EditDiM Hien Hop Thoai Dep======================" x9 x2 r, f+ V5 O
  3503. ;;;==============================PROGRAME===============================
    2 N  u' M3 S4 m8 {( ?% K6 W3 I
  3504. + _3 E. N  M) ~$ Z" `
  3505. ;;Dth Edit Text, Dimtex & Attributes(Chu Co Thuoc Tinh): Z" ~' |5 Z1 ~* n6 b/ d
  3506. ;;Chay Cung Du Lieu.Lsp & Hai.Dcl( ~( I- [/ e- d9 C4 U
  3507. (Defun Hai_Edim (Chon / Dial State Str Oldlis Dimdefault Pt10 Pt13 Pt14 St Ang Dis Pt Hc)* i( ^4 |2 b4 J' X8 i5 C! G7 W' p
  3508.   (Setq Oldlis (Entget (Car Chon))& ^/ Q2 O, |  A# o: ?3 R
  3509.         Pt10 (Cdr (Assoc 10 Oldlis))
    . x, v9 w/ C" T1 }8 J+ o3 ~) n
  3510.         Pt13 (Cdr (Assoc 13 Oldlis))
    ' B% d4 i1 A& G# F- [1 L
  3511.         Pt14 (Cdr (Assoc 14 Oldlis))
    9 m/ b5 k$ ]0 }0 G& X6 k
  3512.         St  (Cdr (Assoc 70 Oldlis))
    6 k) D( x* N' K' c8 O; x( \5 o: B
  3513.         Dimdefault (Cdr (Assoc 1 Oldlis))
    + t/ A: b. ?0 L, \
  3514.         )& r: c2 |8 m) I; l. n0 v! z3 u& R
  3515.   (Cond7 m% T! x/ X7 C/ O
  3516.     ((Or (= 32 St)(= 0 St)(= 160 St))' V7 U/ N) S/ l3 t' Z
  3517.      (Progn+ |# E' v6 Y8 L' x8 K  V, B8 Q
  3518.        (Setq Ang (Cdr (Assoc 50 Oldlis))
    , M" Q" j  |! h
  3519.              Pt (Polar Pt13 Ang 500)
    - B* I: W: Z) u# w" k
  3520.              Hc (Lay_Hinh_Chieu Pt10 Pt13 Pt)+ B: ~* p- r  O9 L" x) Y- b! ^+ p
  3521.              Dis (Rtos (Distance Pt13 Hc))( E5 l0 i7 P$ `4 G4 ^. y
  3522.              )0 m4 Y: K3 o* k% {1 Z+ J
  3523.        ): e6 n/ Y3 ^) K  Y: r' z
  3524.      ). @! `% e* [& M$ y$ b- o. {
  3525.     ((Or (= 33 St)(= 1 St))) e( o  E# O5 |% G  O* x' P
  3526.      (Progn(Setq Dis (Rtos (Distance Pt13 Pt14)))))
    + u6 N) W2 ?% o  ^. x: u( W
  3527.     );;End Cond
    5 e6 `6 I& {4 A& V  W( ^# f  D
  3528.   (If (= Dimdefault "") (Setq Dimdefault "<>"))
    / C. f7 ^0 U& T1 u/ H
  3529.   (Setq Dial (Load_Dialog "Hai.Dcl"))
    + C5 H! g  p) a9 u2 ]2 X
  3530.   (If (Not (New_Dialog "eddim" Dial)) (Exit))
    + i" u; m# \& a: _. r
  3531.   (If (Or (= 32 St)(= 0 St)(= 160 St)(= 33 St)(= 1 St))
    6 |$ W' o6 G) c8 q/ G, b; ^
  3532.     (Set_Tile "text" Dis))$ d/ N6 p" A0 h( w
  3533.   (Set_Tile "ha:edim" Dimdefault)
    4 E( T: Y0 Q5 C) i4 ~4 t; S" ^
  3534.   (Mode_Tile "ha:edim" 2); Tao Dau Nhac Tai Hop Thoai
    , q/ g" w" q( I! g8 ~: m
  3535.   (Action_Tile "ha:edim" "(Setq Str (Get_Tile \"ha:edim\"))(Done_Dialog 3)")& E+ P9 E- h6 q! I6 y- A
  3536.   (Setq State (Start_Dialog))(Unload_Dialog Dial)8 C! @. F* t  }! e+ G2 Q  c( }  g
  3537.   (If (And Str (= 3 State))
    ! w0 ~5 x1 e9 e
  3538.     (Progn
    / w0 i8 Q; T) m7 B
  3539.       (Setq Oldlis (Subst (Cons 1 Str) (Assoc 1 Oldlis) Oldlis))(Entmod Oldlis)))
    " `* i0 K+ A) x0 U0 N& J
  3540.   )
    8 X# r0 `3 w" `' U% T
  3541. (Defun C:EH (/ Chon Name )! z; a/ g# {2 I4 F  ]" Y# e
  3542.   (Defun *Error* (Msg)# q8 O& L1 p: a' o
  3543.     (Princ "\nerror: ")(Princ Msg)(Princ "  ")9 d) N1 @" J. Z
  3544.     (Start_Dialog)(Unload_Dialog Dial)& S, _% u* n8 u( C
  3545.     (Setq *Error* Olderr)(Princ)
      O5 |$ M9 }9 [
  3546.     )
    * O, P, K( N' w  Q) W' j; ?4 h
  3547.   (Setq Olderr *Error*)8 @8 O1 c: U9 X2 r( ]
  3548.   (Setq Chon T)$ m( f3 R+ A+ F, s* U2 J4 }
  3549.   (While Chon' p8 g& r7 Y3 r+ C( b3 b
  3550.     (Setq Chon (Entsel "\n\n\nSelect Text, Dimtext Or Attributes To Edit..."))
    ( N" t" q  k; W  p3 u
  3551.     (If Chon/ u' n/ }! F. R2 v4 S# ?4 I
  3552.       (Progn. D6 @7 |# d3 b' n+ A3 E9 M
  3553.         (Setq Name (Cdr (Assoc 0 (Entget (Car Chon)))))
    " s- `  G7 S9 \, i5 F
  3554.         (Cond
    . u7 O9 c' _: Y2 W+ E- B
  3555.           ((= Name "INSERT")(Command "Ddatte" Chon))
    - ]9 P  v+ E1 I. G7 N- r4 \* ^
  3556.           ((Or (= Name "TEXT") (= Name "ATTDEF") (= Name "TOLERANCE") (= Name "MTEXT"))(Command "Ddedit" Chon ""))- S0 c* y  {0 U8 O! g
  3557.           ((= Name "DIMENSION") (Hai_Edim Chon))/ h# P8 U' _9 C3 [2 e; p
  3558.           )
      y$ w6 o% k2 R, |$ ^) g) x) ?
  3559.         );End Cond
    , O# `. ~% @, K1 j
  3560.       );End Progn
    7 w/ u0 t8 p# y2 i, K
  3561.     );End While* R% m$ `  q; T7 E: D: {4 `. U
  3562.   (Setq Olderr *Error*)(Princ)
    6 k. |+ c, J5 m
  3563.   );End Program
    " V/ x' J9 A0 ^  A) F& ?" L, m6 g9 ~
  3564. / S% }6 z# G. @* M9 o: s' c
  3565. ;;;====================DDeditDim=====================
    " b1 s/ i9 y, p
  3566. ;;;=====================Hai.DCL======================
    4 A" G2 t2 W& ~! e* ~+ m( U5 t5 g' E
  3567. ;;;====================DDeditDim=====================
    % l2 q! |' `1 [8 _; A

  3568. * f. S! v9 f; o. v' t. ]
  3569. ;;Dth Edit Text, Dimtex & Attributes(Chu Co Thuoc Tinh)6 _# e9 E4 U5 n. {/ k: U3 U
  3570. ;;Chay Cung Du Lieu.Lsp & Hai.Dcl
    ) h2 p/ I2 H8 A, L0 ]# y
  3571. (Defun Hai_Edim (Chon / Dial State Str Oldlis Dimdefault Pt10 Pt13 Pt14 St Ang Dis Pt Hc)
    2 ?; s1 N' c) D
  3572.   (Setq Oldlis (Entget (Car Chon))9 m0 Q" _4 D1 J  L( [- Q
  3573.         Pt10 (Cdr (Assoc 10 Oldlis))8 ?& w- m% u- V6 @0 A; |+ @
  3574.         Pt13 (Cdr (Assoc 13 Oldlis))
    7 ]3 c  K4 ^/ _' h+ D; v. P
  3575.         Pt14 (Cdr (Assoc 14 Oldlis))
    ' L5 M. \9 z* Y# X& X9 X
  3576.         St  (Cdr (Assoc 70 Oldlis))/ D: |9 n! t* s, C/ V- G4 |: R
  3577.         Dimdefault (Cdr (Assoc 1 Oldlis)): t- p6 t, J& [8 N* j9 Z: Z7 X
  3578.         )
    ! r+ C7 p! z" z6 F
  3579.   (Cond
    & N% w5 K# w- d' N% p$ ~$ k1 N* r0 f
  3580.     ((Or (= 32 St)(= 0 St)(= 160 St))
    6 T4 C4 V/ t2 A+ {1 T# h+ C
  3581.      (Progn
    * y  r) A1 r2 G
  3582.        (Setq Ang (Cdr (Assoc 50 Oldlis))
    ; p( M. i# o' g* t
  3583.              Pt (Polar Pt13 Ang 500)
    / s7 l) }; e* `, {" M
  3584.              Hc (Lay_Hinh_Chieu Pt10 Pt13 Pt)7 Y3 X5 C+ k6 z" J
  3585.              Dis (Rtos (Distance Pt13 Hc)): S$ V0 O9 v2 d2 U" a! J6 `1 P+ M
  3586.              )# j" E' O# B- E2 ]2 x, e
  3587.        )
    + [# T. m& E' }5 g( y# N" z: O1 @* X
  3588.      )
    $ Q% ]0 M/ z# E
  3589.     ((Or (= 33 St)(= 1 St))
    1 k8 u+ F$ d5 y
  3590.      (Progn(Setq Dis (Rtos (Distance Pt13 Pt14)))))- V7 }7 [) p! D  {& o0 m( L8 M
  3591.     );;End Cond
    0 |6 l' m) ^9 @0 _# u- }' a
  3592.   (If (= Dimdefault "") (Setq Dimdefault "<>"))
    4 h+ I# F- N5 I" k/ ^3 u
  3593.   (Setq Dial (Load_Dialog "Hai.Dcl"))+ |0 E- G7 Q6 [
  3594.   (If (Not (New_Dialog "eddim" Dial)) (Exit))
    + Q  i: A8 k) Y/ Y" [4 v. W# n
  3595.   (If (Or (= 32 St)(= 0 St)(= 160 St)(= 33 St)(= 1 St))
    , ~* l, D* `+ W1 u1 C7 s* G1 Z" Z
  3596.     (Set_Tile "text" Dis))9 h% j" m5 y; j3 @& ~% g1 l  I
  3597.   (Set_Tile "ha:edim" Dimdefault)
    : K; I0 c: H- Z# ?6 h6 w9 E
  3598.   (Mode_Tile "ha:edim" 2); Tao Dau Nhac Tai Hop Thoai
    9 V1 G& x4 \- G7 m
  3599.   (Action_Tile "ha:edim" "(Setq Str (Get_Tile \"ha:edim\"))(Done_Dialog 3)")
    * i! `$ @" D6 h* u( {
  3600.   (Setq State (Start_Dialog))(Unload_Dialog Dial)
    2 M: a  `; w/ F) s8 c& c0 C! Y
  3601.   (If (And Str (= 3 State))
    6 ?. \, F. C/ v1 R
  3602.     (Progn
    * [# j6 ?7 V. u, u8 \: C
  3603.       (Setq Oldlis (Subst (Cons 1 Str) (Assoc 1 Oldlis) Oldlis))(Entmod Oldlis)))
    1 L: A# `$ O% B/ A
  3604.   )
    4 F$ g( w) b6 h3 Q9 _  G8 _3 e3 r$ `
  3605. (Defun C:EH (/ Chon Name )
    7 Z9 O2 R, [3 n
  3606. 2 F: A& }5 U+ o1 `. ]5 b3 S
  3607. ;;;********************Du Lieu********************9 \( _/ z+ W2 C3 b- |) C# P- j0 c

  3608. # P! d0 x7 y$ h8 W8 F
  3609. (Defun Ha:Thoat () (Reinit) (Setq Temp "Da Thoat Khoi Chuong Trinh"))
    0 e/ }. h% g/ s1 E
  3610. (Defun Hacat (Hacat1 Hacat2 / Hacat3 Chon)
    9 ~+ R! x3 ]7 }$ c# J
  3611.   (If (And (/= Hacat1 Nil) (/= Hacat2 Nil))$ i% ~) s. m" J2 M+ r
  3612.     (Progn# \7 A, ]( M# c9 G; I8 }6 }
  3613.       (Setq Hacat3 (Polar Hacat1 (Angle Hacat1 Hacat2) (/ (Distance Hacat1 Hacat2) 2)))5 w% R8 h" J# B1 I; w, t( ?3 l/ w
  3614.       (Setq Chon (Ssget Hacat3)), i. r$ c! R& A# h# Y
  3615.       (Command "Break" Chon Hacat1 Hacat2)
    7 I8 \( L$ U- b3 p
  3616.       )6 C) ]" q1 x& S# G" X& u  {
  3617.     )2 h' }. D5 u1 O6 z" ]1 w
  3618.   (Princ); J; `& z4 n5 m' W3 H
  3619.   )- S( w! T6 z7 G! r$ k3 F
  3620. ;;
    . c# r# U& O! h: @9 Q- K" V
  3621. (Defun Hauon (Hauon1 Hauon2)(Command "Fillet" Hauon1 Hauon2))+ n" q' d- K7 w3 i; R
  3622. ;;
    6 `2 \4 j3 V. B: z  [
  3623. (Defun Taolop (Mau Lop / A)(Setq A(Tblsearch "Layer" Lop))(If (Null A)(Command "Layer" "_N" Lop "_C" Mau Lop "")) (Setvar "Clayer" Lop))  d- \8 C2 }# P: b, J. Y
  3624. ;;
    & t6 `( _" A4 r+ e* f: B
  3625. (Defun Init ()(Setvar "Blipmode" 0)(Setvar "Cmdecho" 0)(Setvar "Angbase" 0))/ C8 r: T5 j$ R5 h
  3626. ;;
    5 E, U  w" c9 G; v
  3627. (Defun Reinit ()(Setvar "Cmdecho" 1))
    + o, H7 U7 P8 m7 F5 p
  3628. ;;& b: Z( s% C0 A( e
  3629. (Defun Tichvecto (Vecto1 Vecto2)(Apply '+ (Mapcar '* Vecto1 Vecto2)))' u, c9 b, Z& M3 u. s8 h
  3630. ;;3 G2 o! V, q' R: N$ u
  3631. ;;Cho 2 Diem Tinh Ra Vec To Phap% g7 H& A- a+ Q7 O+ K  v$ k3 ]
  3632. (Defun Vectophap (V01 V02 / Vectochiphuong)(Setq Vectochiphuong(Mapcar '- V01 V02)) (List (Cadr Vectochiphuong) (* -1 (Car Vectochiphuong))))# ^" w. W4 i4 }! q1 e9 ~' V
  3633. ;;Xac Dinh Vi Tri Hinh Chieu 1 Diem Len 1 Duong Thang! q0 j# d: H$ _" B5 ~. o9 {
  3634. ;;Da Biet 2 Diem Thuoc Duong Thang
    + @; b* B" }! k9 C! {
  3635. (Defun Lay_Hinh_Chieu (Dc1 P1 P2 / Hc Dc2)
    5 j. y- m4 U: ~
  3636.   (Setq Dc2 (Polar Dc1 (+ (/ Pi 2) (Angle P1 P2)) 100)
    & _9 ]: `( ~% w! x% D$ V+ m3 q8 l
  3637.         Hc (Inters P1 P2 Dc1 Dc2 Nil)))# P* v# ]( X- H. H" x1 @/ f/ S
  3638. ;;Xac Dinh Khoang Cach Tu 1 Diem Len 1 Duong Thang
    8 U9 I* i" c/ x8 Q
  3639. ;;Da Biet 2 Diem Thuoc Duong Thang
    & s6 @9 ~; ~* o
  3640. (Defun Khoangcach (Dc1 P1 P2 / Dc2 Hc)( r. N3 _$ a  J* P" e, _1 }
  3641.   (Setq Dc2 (Polar Dc1 (+ (/ Pi 2) (Angle P1 P2)) 100)
    6 R* f3 G+ u$ v5 m
  3642.         Hc (Inters P1 P2 Dc1 Dc2 Nil))
    * b9 s' k/ K$ O
  3643.   (Distance Dc1 Hc)8 C" w4 e+ H0 P8 s6 ?- q/ L# ?2 Z
  3644.   )8 T/ K% }6 A5 L# @/ P' H1 U
  3645. (load "nhapcua.lsp")' r4 e1 J$ n/ n. N6 L! r
  3646.   (Defun *Error* (Msg)
    % h* X2 U  c6 x# B4 K; P; N
  3647.     (Princ "\nerror: ")(Princ Msg)(Princ "  ")1 C8 T' @# A1 j. i- y
  3648.     (Start_Dialog)(Unload_Dialog Dial)
    : a2 G# ?4 W7 r5 Q
  3649.     (Setq *Error* Olderr)(Princ)0 w5 ]- p+ t2 F% d1 j9 q
  3650.     )
    ! j* q) q7 G& e- g; g/ s
  3651.   (Setq Olderr *Error*)  I( ?9 _) M7 s: B2 p% X
  3652.   (Setq Chon T)5 U- v" ^' |, i: |# v: X8 s
  3653.   (While Chon
    ! T* v2 t0 k3 C% }0 P- Z# Z8 I
  3654.     (Setq Chon (Entsel "\n\n\nSelect Text, Dimtext Or Attributes To Edit..."))/ O% B$ s1 y. Z* K0 N0 S
  3655.     (If Chon0 L8 ?% ?" I$ {
  3656.       (Progn
    $ W4 S. {- N8 f
  3657.         (Setq Name (Cdr (Assoc 0 (Entget (Car Chon)))))2 c4 T6 T6 q2 T( A: F+ r/ M3 `' P
  3658.         (Cond
    2 g' L  @$ P. c: S  c, G
  3659.           ((= Name "INSERT")(Command "Ddatte" Chon))
    5 }% H( G: |# K0 b$ z8 L8 Y
  3660.           ((Or (= Name "TEXT") (= Name "ATTDEF") (= Name "TOLERANCE") (= Name "MTEXT"))(Command "Ddedit" Chon ""))
    " e; @5 u" V; f3 W# t4 g
  3661.           ((= Name "DIMENSION") (Hai_Edim Chon)), ?& O; `) l, Z/ D; x
  3662.           )
    ) w. o9 |$ B$ {- F8 X5 }! W
  3663.         );End Cond
    ; R' X7 L; L& {/ ?
  3664.       );End Progn8 \: p8 e! ^5 X. w- ?$ o
  3665.     );End While3 k6 B+ l4 r; ~' \
  3666.   (Setq Olderr *Error*)(Princ)6 }* g  C& r, M
  3667.   );End Program
    4 I9 P* k" o2 K# F0 F

  3668. 6 l2 T" W% S+ v& N: S
  3669. ;===================HAI DCL Nhapcua.LSP De chay Hop Thoai EditDiM===================
    , h: a1 I5 ]! @5 a- E& v3 K
  3670. ;====================================Nhapcua.LSP====================================: `& {: h7 |( {, n
  3671. ;===================HAI DCL Nhapcua.LSP De chay Hop Thoai EditDiM===================* W  j( [4 h( z

  3672. ! m* d9 n0 z/ B& d, @
  3673. 8 f$ `6 S$ ~: z) ?& ?- P
  3674. 3 A* p' d# A' t) i0 [- W% u
  3675. ;*******************;*******************;*******************;*******************. R, j) L2 Z; d2 t8 P; v
  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****
    2 ?- V% B) B* k  {: w: w, C7 \
  3677. ;*******************;*******************;*******************;*******************2 q. x2 `5 ^% \1 p+ }4 Z
  3678. 9 i2 D" P' E( K3 o
  3679. ;VE HINH BINH HANH
    * F9 X) P/ u2 T; {8 n
  3680. $ y' h2 E; _8 S
  3681. (defun c:binhhanh (/ p1 p2 p3)1 r& `# i6 Y5 j; v
  3682. (setq p1 (getpoint "\n Nhap diem thu nhat:"))
    ! Z( u" x! `* L( f' s
  3683. (setq p2 (getpoint p1 "\n Nhap diem thu hai:"))
    5 L3 g: q5 U3 Y
  3684. (setq om (getvar "osmode"))
    7 \. m" g, P2 R/ o  U! c6 U
  3685. (setvar "osmode" 0)9 E7 D9 j3 k2 S- D  q" f4 Z
  3686. (command "line" p1 p2 "")- k* f2 Z& [5 E: X
  3687. (setvar "osmode" om)
    ( H% t5 K& \) X: J( ]
  3688. (setq p3 (getpoint p2 "\n Nhap diem thu ba:"))
    % u; q7 t. _2 i+ U& a- g
  3689. (setq a (angle p2 p1))) L2 \$ u! |7 }8 ?- a3 B
  3690. (setq d (distance p1 p2))' a( J: [! j* h; d5 J: A
  3691. (setq p4 (polar p3 a d))
    : R" d2 c1 R, m9 p5 U9 I( t: ~
  3692. (command "OSNAP" "none")
    " I9 g/ ~- a9 `3 {
  3693. (command "erase" "l" "")
    3 Z6 g/ ^8 Q( M7 c8 h
  3694. (command "pline" p1 p2 p3 p4 p1 "")
    5 ]' V# V8 _' [2 d3 M
  3695. (setvar "osmode" om), F& y' E$ i7 y6 T8 ^* N2 q: [+ Z4 e
  3696. )3 q0 k9 b9 P1 Z. O5 c' S
  3697. ; l3 k) |# u! X# `
  3698. ;VE LUOI COT# u/ _# R# i2 O! e& J
  3699. 8 d' B  q' n7 o. ~# j0 [" y
  3700. (defun c:LuoiCot ()1 @# Q/ `3 j+ |, S! k8 Q9 z
  3701. (setq om (getvar "osmode"))
    0 j5 T5 R7 i: x- J! ^; v
  3702. (setvar "osmode" 0)
    # L/ U; I  \: e, H2 ]1 {. u
  3703. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))
    + g, i  {  u( ^- N. W4 x; r: l3 I
  3704. (setq p0 (getpoint "\n Chon Basic Point:"))
    , t& |* r9 }( q1 Z3 Z
  3705. (setq nc (getreal "\n Nhap chieu ngang cua cot : "))  V6 ^) ~. H: ?% ]
  3706. (setq dc (getreal "\n Nhap chieu doc cua cot : "))1 t( o: e6 {& }8 }; e  S
  3707. (setq p1         (polar         (polar p0 pi (/ (* nc hstl) 2 tile) )    (* pi 1.5)    (/ (* dc hstl) 2 tile)  )  )4 b2 ~% u3 G! B: D  C8 d0 i! o
  3708. (setq p2         (polar         (polar p0 0 (/ (* nc hstl) 2 tile) )    (* pi 0.5)    (/ (* dc hstl) 2 tile)  )  )
    9 y/ c3 v; f8 A# T7 I) [
  3709. (command "rectang" p1 p2)
    9 _$ Z, n7 {$ k1 k& y2 [& ?
  3710. (command "hatch" "solid" "l" "")# f2 p# W5 ], ?. R* K5 y
  3711. (setq bcn (getreal "\n Buoc cot theo phuong ngang : "))$ |  `# }% e; `) x
  3712. (setq nn (getint "\n So buoc cot phuong ngang : "))/ [- m5 N7 c; J- F9 \) Q* _
  3713. (setq w1         (polar         (polar p1 pi (/ (* nc hstl) 2 tile) )    (* pi 1.5)    (/ (* dc hstl) 2 tile)  )  )( J1 l$ z& p; s) E/ I
  3714. (setq w2         (polar         (polar p2 0 (/ (* nc hstl) 2 tile) )    (* pi 0.5)    (/ (* dc hstl) 2 tile)  )  )* _; x7 s7 }- o! u
  3715. (command "select" "w" w1 w2 "")
    7 J' x; ?" x( u$ m: u
  3716. (command "array" "p" "" "r" "1" (+ nn 1) (/ (* bcn hstl) tile) )& H: D; b2 L- Q: r+ T
  3717. (command "line" (polar p0 pi (/ (* 1000 hstl) tile)) (polar p0 0 (/ (* (+ (* bcn nn) 1000) hstl) tile) ) ""). I2 c% m' ?8 |/ ?/ t- X; A
  3718. (setq w1 (polar (polar p0 pi (/ (* hstl 2000) tile)) (* pi 1.5)  (/ (* hstl 2000) tile) ))
      P$ J  h, u: h5 |0 W
  3719. (setq w2 (polar (polar p0 0 (/ (* (+ (* bcn nn) 2000) hstl) tile) ) (* pi 0.5)  (/ (* hstl 2000) tile) ))
    # p1 s8 r6 _0 z* X
  3720. (command "zoom" "w" w1 w2)$ a  l7 @) b- W' r1 D, K( h' R( Z
  3721. (command "select" "w" w1 w2 "")5 C, y8 b9 B- I3 s. ^
  3722. (setq bcd (getreal "\n Buoc cot theo phuong doc : ")). S4 k1 {; y& `, i1 Y
  3723. (setq nd (getint "\n So buoc cot phuong doc : "))" v0 }; b  I: A( @1 x; Y! z
  3724. (command "array" "p" "" "r" (+ nd 1) "1" (/ (* hstl bcd) tile) )( Y/ h! Q: o: F- Q# n+ h. j0 B
  3725. (command "line" (polar p0 (* pi 1.5) (/ (* hstl 1000) tile))  (polar p0 (* pi 0.5)  (/ (* (+ (* bcd nd) 1000) hstl) tile))  "")1 a( ^: b2 |$ u; j
  3726. (command "array" "l" "" "r" "1" (+ nn 1) (/ (* hstl bcn) tile) )& c8 m( I& b6 W' I) G
  3727. (setq w2 (polar w2 (* pi 0.5) (/ (* (+ (* bcd nd) 2000) hstl) tile))  )  
    2 J5 X, ?* T# r% U8 T8 A
  3728. (command "zoom" "w" w1 w2)
    ) |0 Q4 T% G/ W9 g5 n
  3729. (setvar "osmode" om)9 P5 a1 Z- ~8 P- {, h. T
  3730. )/ z5 F* t8 s. A
  3731. 0 }1 _# D3 q: }1 T- n# t* f
  3732. ;VE CUA DI
    + W3 s; `! \8 D# Q* C

  3733. 8 k( D. i4 m" l% `3 T  `* Y' i
  3734. (defun c:cuadi ()
    : h# W" b6 m: Z, M; v7 n7 \
  3735. (setq om (getvar "osmode"))
    + k0 \& X! w, [) ~" N; f  g5 M; ]
  3736. (setvar "osmode" 0)7 d, S7 ^4 }0 F* E/ C; q
  3737. 3 E/ u0 Z* _& o0 t) a5 k1 }/ s
  3738. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x=")), p( x8 J/ E# m
  3739. (setq b (getreal "\n Nhap be rong cua : "))
    : h7 u5 j: ?0 f9 ^% g5 b
  3740. (setvar "osmode" om)
    3 j: X7 c5 z4 P/ f! B4 Z) Q* b
  3741. (while (< 0 1)5 W, O: M* x( W4 H& L" z
  3742. (progn
    4 T( A6 o+ r# Z7 c! t7 K
  3743. (setq p0 (getpoint "\n Chon Basic Point:"))" E4 O, E6 I9 a- J
  3744. (setq p1 (getpoint p0 "\n Chon diem de xac dinh huong cua cua:"))2 I3 d1 y% X3 K8 J
  3745. (command "osnap" "none")
    * t- i& f4 {" k
  3746. (setq p2 (getpoint p0 "\n Chon diem de xac dinh huong mo cua:"))/ }) o" I% X6 L3 J( w
  3747. (setq a1 (angle p0 p1))
    ( d$ J9 w; k9 Q$ `
  3748. (setq p1 (polar p0 a1 (/ (* hstl b) tile))), M: c5 D6 g0 N4 {' o
  3749. (setq a2 (angle p0 p2))+ M1 N  ~( X7 o& N& r8 i) h5 h* ~/ R
  3750. (if (< (- a2 a1) pi) (setq a3 (+ (/ pi 2) a1)) (setq a3 (- a1 (/ pi 2))) )
    . ?4 X# l  K1 u) ]- Z
  3751. (command "pline" p0 "w" "0" "0" p1 (polar p1 a3 (/ (* hstl 40) tile)) (polar p0 a3 (/ (* hstl 40) tile)) p0 "")* x( u* T1 L1 m% R9 C- T
  3752. (command "rotate" "l" "" p0 (/ (* (- a3 a1) 180) pi))9 C: z1 s, F0 \  w$ L8 p
  3753. (command "arc" "ce" p0 p1 "a" (/ (* (- a3 a1) 180) pi))
    ) L# G+ b' Z0 d/ t; M9 X
  3754. (setvar "osmode" om)1 f$ ]7 K7 g; o) O
  3755. ))
    3 B' }5 M8 |3 R
  3756. )+ k1 _! Y/ q1 K

  3757. ( ?/ H2 A4 E) A$ \8 i& d3 S& ]
  3758. ;VE CUA SO: _# \8 `% n" s  }

  3759. ; e* G6 a0 v: o- h* [' v* g9 L
  3760. (defun c:cuaso ()7 t* y3 R0 d+ _' w; P; N5 z- H
  3761. (setq om (getvar "osmode"))
    5 B: b- w; b1 F
  3762. (setvar "osmode" 0)
    ' S5 O" L% c4 ~4 t( B

  3763. : |# e% Q6 w/ {3 ~, r" a
  3764. (setq tile (getreal "\nCho biet Ti Le ve 1/x, x="))
    6 Z. j0 w) R3 I6 S5 A  I
  3765. (setvar "osmode" om)
    : D! x  o$ \6 ~' g7 I
  3766. (while (< 0 1)
    5 w. P8 [' Z5 \" r; Y
  3767. (progn) Z* w: x3 w  ^/ x, W# U; o: R, {
  3768. (setq p0 (getpoint "\n Chon Basic Point:"))0 k* Z9 L' I( \) O4 Y7 v6 C
  3769. (setq p1 (getpoint p0 "\n Chon diem de xac dinh be rong cua:"))
    - r  b: G+ Q* V8 G% Q8 F
  3770. (command "osnap" "none")) k% }: m' {2 E% T
  3771. (setq p2 (getpoint p1 "\n Chon 1 diem o trong nha de xac dinh huong cua so:"))
    9 r8 v+ b6 C/ g. V
  3772. (setq b (distance p0 p1))
    ( Q; N5 X: s# a* S
  3773. (if (< b  (/ (* hstl 600) tile)) (setq du 50))) C* w- i$ N( R# H6 q, C
  3774. (if (> b  (/ (* hstl 600) tile)) (setq du 150))
    & H, ?4 h) z9 d, _5 |3 z/ x6 ~1 _: V
  3775. (if (> b (/ (* hstl 1800) tile)) (setq du 200))* K# S/ A9 A- P; d
  3776. (setq a1 (angle p0 p1)). W- l' \4 @. U% b3 t) H, Z6 Y% a
  3777. (setq a2 (angle p0 p2))
    ! G4 p1 f; J+ g2 l
  3778. (if (> a2 pi) (setq a2 (- a2 (* pi 2)) )  )5 j8 M6 g* G3 Y+ L0 X
  3779. (if (> (- a2 a1) 0) (setq a3 (+ (/ pi 2) a1))  )- r  z+ W/ y; g; R' d; W2 o) v( n
  3780. (if (> (- a1 a2) 0) (setq a3 (- a1 (/ pi 2)))  )
    3 w% P3 Q5 I* M
  3781. (command "pline" p0 "w" "0" "0" p1 "")- V& b3 i0 t- v
  3782. (command "pline" (polar p0 a3 (/ (* hstl 50) tile)) (polar p1 a3 (/ (* hstl 50) tile)) "")8 e+ S4 v3 Q4 ?) s5 q9 s
  3783. (command "pline" (polar p0 a3 (/ (* hstl 100) tile)) (polar p1 a3 (/ (* hstl 100) tile)) ""). h+ A6 \$ u6 b8 m& M) k& Y
  3784. (command "pline" (polar p0 a1 (* (- du) (/ hstl tile))) (polar (polar p0 a1 (* (- du) (/ hstl tile))) a3 (* -100 (/ hstl tile)))
    - r% B& ^0 G2 `1 O$ x
  3785.                 (polar (polar p1 a1 (* du (/ hstl tile))) a3 (* -100 (/ hstl tile))) (polar p1 a1 (* du (/ hstl tile))) "")6 X( L. |5 x- P9 P9 a" J% g
  3786. (setvar "osmode" om)% O) S; @3 F( F2 y7 o/ `0 f; h
  3787. ))
    6 e# Y) S2 x" I5 h6 [
  3788. )
    ! F7 j" X& J: w! R5 t5 i

  3789. 6 \' f" Y6 A, ~4 ~: Q. @+ x
  3790. ;;;=== General Utility Functions ===& o: U/ o; _: W9 z) R
  3791. ( \8 w" W" Z" u- Q$ N/ f" e
  3792. ;   R12 compatibility - In R12 (acad_helpdlg) was an externally-defined , `8 W5 N6 d3 n
  3793. ;   ADS function.  Now it's a simple AutoLISP function that calls the ) [  f: X* S5 o$ w2 \3 u& U
  3794. ;   built-in function (help).  It's only purpose is R12 compatibility.  
    ! J& C; s) S) `1 q
  3795. ;   If you are calling it for anything else, you should almost certainly
    8 C7 J! Q0 f; n- X9 z1 W3 L1 }* c6 }
  3796. ;   be calling (help) instead.
    . n: M8 E! F" j' R4 z
  3797. ( f9 A: M6 y% i& G0 v
  3798. (defun acad_helpdlg (helpfile topic)
    # M" B" R5 p" ^$ q% @
  3799.   (help helpfile topic)
    5 G0 f, v! U1 A8 o
  3800. )
    1 C! V8 t, y. C: q+ Z1 ^4 C
  3801. # Y$ Y. [/ B/ u5 w% ]# e7 P2 ~& M

  3802. 6 q$ g  k( d7 d- `4 q
  3803. (defun *merr* (msg)
    $ V2 P8 M/ A( l; m4 j9 @0 H$ |
  3804.   (setq *error* m:err m:err nil)
    8 Y# Q- Q& D, o, h) q  e3 _8 r% @
  3805.   (princ)
    ' B; f& b1 s, X" Q( C4 Z5 e
  3806. )
    7 o% ^  T3 u4 {0 A) Q2 T
  3807. . Q* k# P, ?) r8 u( m- p9 W
  3808. (defun *merrmsg* (msg)) f; q: T4 p6 x) a5 S& p. X
  3809.   (princ msg)
    - J" H3 e1 R+ X/ N- Z
  3810.   (setq *error* m:err m:err nil)+ G! F) P6 v, ]6 k' g
  3811.   (princ)
    8 F# d3 ?  Z, I/ f
  3812. )
    # M; e1 b: n* F/ k) S, @- U0 Y, ^
  3813. . K3 \& ], I2 a+ K4 D1 q
  3814. ;; Loads the indicated ARX app if it isn't already loaded* t" Y; g: v1 Q6 E
  3815. ;; returns nil if no load was necessary, else returns the
    , y7 v& G  B' O8 v) F! k4 d
  3816. ;; app name if a load occurred.  {% M1 t$ s  V( x, C2 l2 Z2 w5 q
  3817. (defun verify_arxapp_loaded (app) % O$ F9 k* N/ C5 t6 ?2 m9 l& ?% ~
  3818.   (if (not (loadedp app (arx)))9 K( m# n& ]' j- ?
  3819.       (arxload app f)
    3 U# y+ H( [5 e  S+ [+ {( p+ e: d$ a
  3820.   )
    ( e. F7 s5 X5 z$ v, i* |2 c! U0 E
  3821. )
    & `+ \0 x, \2 q3 r; P# H
  3822. 3 E( e* J5 P# s+ }$ }0 y! ?
  3823. ;; determines if a given application is loaded...
    2 `4 Z5 y* X* w" k% N* b9 n9 ?
  3824. ;; general purpose: can ostensibly be used for appsets (arx) or (ads) or....
      i  I( I, u8 V9 b9 f
  3825. ;;3 F4 V' Q7 p) Y* d; ~
  3826. ;; app is the filename of the application to check (extension is required)& C7 x% l. G, j; y
  3827. ;; appset is a list of applications, (such as (arx) or (ads)
    " S- x7 N" C7 {6 j
  3828. ;;
    7 D# U/ A5 Z  ~& m
  3829. ;; returns T or nil, depending on whether app is present in the appset; a2 n5 R0 j9 ]  x9 o
  3830. ;; indicated.  Case is ignored in comparison, so "foo.arx" matches "FOO.ARX"* ]  F. W$ ?: [( o' i/ H
  3831. ;; Also, if appset contains members that contain paths, app will right-match7 a( }3 V2 \! B, V/ Y4 p
  3832. ;; against these members, so "bar.arx" matches "c:\\path\\bar.arx"; note that
    + u, k5 B4 @0 F; r3 n, _$ n1 N
  3833. ;; "bar.arx" will *not* match "c:\\path\\foobar.arx."
    1 `! k3 J! r& `& m1 X/ G, F  q
  3834. (defun loadedp (app appset): |, O+ `' T) k% I
  3835.   (cond (appset  (or
      M0 j* r9 l6 \. V0 y
  3836.                      ;; exactly equal? (ignoring case)  {8 c% w* Y  W, [; K8 t! E
  3837.                      (= (strcase (car appset))
    + x  K$ A, W! [( i( H
  3838.                         (strcase app))
    7 o" K! {: Q9 W! {& N) [; i
  3839.                      ;; right-matching? (ignoring case, but assuming that! V# K1 |: i6 p+ Q; J1 g" }
  3840.                      ;; it's a complete filename (with a backslash before it)% Q9 {) S# b( `6 B
  3841.                                          (and , f4 b; Q" q- }5 b0 l) ^9 k( J
  3842.                                              (> (strlen (car appset)) (strlen app))
    ; v* d0 Z  _( u( \. r2 b
  3843.                              (= (strcase (substr (car appset) 4 A/ J1 Z8 ?% E. n$ E/ l
  3844.                                                  (- (strlen (car appset))
    # O2 h* @& G' `
  3845.                                                     (strlen app) 6 `4 @! f2 i0 B6 y
  3846.                                                  )
    3 a0 l& P4 r% N/ _
  3847.                                          )
      D# }: p$ S6 x; p
  3848.                                 )
    / Z/ |) H! U! m
  3849.                                 (strcase (strcat "\\" app))* r% O' e6 B3 m8 A! o1 ?0 h
  3850.                              )
      R9 `& Y4 E3 i
  3851.                                      )
    5 h3 z3 O" \# N3 R2 [9 r2 j9 D
  3852.                      ;; no match for this entry in appset, try next one....
    , d; V3 t+ ~# I2 A  Y) c( G# m
  3853.                      (loadedp app (cdr appset)) )))  M% s+ _& R# J3 l" y, V% Y& m
  3854. )% M$ F" W& E" [3 V" z! d
  3855. ; P6 [  X) p6 |! Y* O7 d  \
  3856. : ~1 H+ L1 S- e6 H; c
  3857. ;;; ===== Single-line MText editor =====
    2 n9 z& ^1 }* Z
  3858. (defun LispEd (contents / fname dcl state)) [3 P: j0 z, S' R( @; E! c
  3859.   (if (not (setq fname (getvar "program")))
    , E; k+ H6 [  c; w2 I9 Q6 R
  3860.      (setq fname "acad")
    / p. i$ _9 Z3 W" l! j
  3861.   )
    ( ~+ r. s) Q+ x- }$ L5 P# e9 _
  3862.   (strcat fname ".dcl")
    ) k1 f2 q4 b/ Y
  3863.   (setq dcl (load_dialog fname))
    3 b. j# G3 o. z/ x" a
  3864.   (if (not (new_dialog "LispEd" dcl)) (exit))
    : j# ?9 Q1 ^% T3 k) \3 Z% L
  3865.   (set_tile "contents" contents)! U: v0 S+ F4 h- _& M& w
  3866.   (mode_tile "contents" 2)
    , v; X5 y/ _, k
  3867.   (action_tile "contents" "(setq contents $value)")
    . s/ ^- V% h* d+ Y$ e5 y0 v
  3868.   (action_tile "accept" "(done_dialog 1)")
    * _0 S3 _9 A$ A& p0 Q
  3869.   (action_tile "mtexted" "(done_dialog 2)" )% l2 J# _/ L5 z+ w- W
  3870.   (setq state (start_dialog)), Z1 T/ a, f5 Z. J4 q
  3871.   (unload_dialog dcl)
    ! ?1 t+ D' P" i
  3872.   (cond
    , d" r9 ?! g0 `, J& @- ~" O" |
  3873.     ((= state 1) contents)8 {: ]% I* [/ K9 n# Y0 R7 M6 E/ x
  3874.     ((= state 2) -1)/ U0 `3 R& H" b- r
  3875.     (t 0)
      v6 ]+ i; X& P7 J2 B
  3876.   )
    6 q) G* E' }! o$ {, s# h
  3877. )# u/ Z. ~5 A5 T" Y2 u
  3878. ' V* D/ o; \! u: g
  3879. ;;; ===== Discontinued commands =====
    , A4 D7 p% ]- p+ |, x5 D
  3880. (defun c:ddselect(/ cmdecho-save)- \4 c, n9 ?* T$ L( i8 b) H
  3881.   (setq cmdecho-save (getvar "CMDECHO"))' ?" F( K4 Y: \  g8 {- _
  3882.   (setvar "CMDECHO" 0): K6 Y( Y* Y* O2 F7 \4 O. n# Y
  3883.   (command "._+options" 7)2 L6 j7 K! M# X4 g
  3884.   (setvar "CMDECHO" cmdecho-save)4 D& @# B" R0 k) z5 q" Z
  3885.   (princ)
    , i. P0 W' `3 Y+ ^; g3 _, u7 Z. L# w6 [
  3886. )* I3 A, L8 W- ?$ W& o9 x

  3887. 0 M$ b: a* a  y+ x6 u
  3888. (defun c:ddgrips(/ cmdecho-save)/ r! g; T  ?1 n: }. C8 q$ l- C
  3889.   (setq cmdecho-save (getvar "CMDECHO"))
    + W+ Z4 Q5 }4 `6 k  f
  3890.   (setvar "CMDECHO" 0)0 l; F' N8 }; P4 w
  3891.   (command "._+options" 7)
    ( c; k2 O# E+ f5 _% i( t5 p
  3892.   (setvar "CMDECHO" cmdecho-save)0 w8 T4 P6 b# x' U- l/ k" T
  3893.   (princ)9 W/ ~  m4 m7 Z
  3894. )1 y) j/ A' r' f4 g, j

  3895. ' B; e0 f1 y+ a+ g+ |, q
  3896. (defun c:gifin ()! D! W" x# O) b6 K& o  {
  3897.   (alert "\nThe GIFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")5 G6 U$ Z6 ?7 }5 K+ x
  3898.   (princ)
    : q/ n5 x$ t  [: w; Z7 @8 r
  3899. ), X  M9 e6 z( N+ F: ]

  3900. . y7 x/ q7 b  I3 {" ?# q" y
  3901. (defun c:pcxin (); F" F6 @: y( |5 v( D2 n3 |5 q
  3902.   (alert "\nThe PCXIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")
    + @- d* Y. ?: N5 \
  3903.   (princ)
    . c. n1 }6 j' D8 j
  3904. )2 `4 }4 C+ }  y" ^

  3905. % J. D) [: q/ C7 l2 p6 z* N4 w
  3906. (defun c:tiffin ()# Y; V+ }* G+ Y* h8 r* b5 |
  3907.   (alert "\nThe TIFFIN command is no longer supported.\nUse the IMAGE command to attach raster image files.\n")
    % _3 Z0 L/ i" @- S0 L1 e
  3908.   (princ)9 h- n; y& _: n) Z% x6 K2 n
  3909. ). a0 t- z: u  C3 q# O4 A; T

  3910. ! v6 \! I( S9 q7 `) N' a; V0 z/ r8 }
  3911. (defun c:ddemodes()! g! i7 m: d' N3 j( O5 N7 `, _
  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.")1 H' q2 g$ ?% D: M9 ?
  3913.   (princ)  a- z3 C: i  x- V9 d# B4 O
  3914. )( C: J4 h/ |+ u6 ^3 G" G4 z
  3915. 6 Z9 v  E# e* H* Q3 z5 Y* ?- r3 O, H
  3916. (defun c:ddrmodes(/ cmdecho-save)4 E$ O( [  |, [  B! r( z+ y
  3917.   (setq cmdecho-save (getvar "CMDECHO"))2 o+ T( `4 C+ a" H, m1 Z3 R
  3918.   (setvar "CMDECHO" 0)0 i( N3 z( E+ p" V8 U. R
  3919.   (command "._+dsettings" 0)
    : F& e4 f6 z3 i7 Z
  3920.   (setvar "CMDECHO" cmdecho-save)
    + F' P. c4 t$ w) z
  3921.   (princ). f: N8 c) ^/ k! \
  3922. )0 l, r4 x; E% N

  3923. # w/ V* A' e! z+ H. C# ~3 Y
  3924. ;; HPCONFIG
    ' |7 Q3 I% {) E
  3925. (defun c:hpconfig (/ hlppath)
    ( D+ O# w5 ~( F( x
  3926.   (if (not (setq hlppath (findfile "acad.hlp")))
    + u1 [9 c7 L9 p) _0 d% l2 H
  3927.     (setq hlppath ""))2 _- h5 k7 v, _: e9 K0 Y/ W  l0 W4 E
  3928.   (help hlppath "hpconfig")$ D5 v! T/ f4 H1 ~8 Q% o; [
  3929.   (princ)
    . I6 K/ I# W& X; K$ F( v
  3930. )
    . X5 ]# ?+ Z1 I: M6 D2 E- N/ n

  3931. 2 h. ~9 c# v+ q& o+ k8 i
  3932. ;; OCECONFIG
    4 I9 i' H6 ]% \
  3933. (defun c:oceconfig (/ hlppath)
    5 Y( n$ ^8 q4 z9 ^" S5 `
  3934.   (if (not (setq hlppath (findfile "acad.hlp")))) S: }& |5 K1 k
  3935.     (setq hlppath ""))
    & ~5 [) A3 f" Y' |2 h+ v! u
  3936.   (help hlppath "oceconfig")1 J! e* Z5 {; T& k; x3 m
  3937.   (princ)
    , U0 y$ t$ V" [! F: u  o
  3938. )
    8 J, s* E) }0 k5 I3 R# r

  3939. % @9 z# C5 P0 a: l& i- l) l# t
  3940. ;; CCONFIG
    + S& C: K, H4 [3 a
  3941. (defun c:cconfig (/ hlppath)/ Q" r7 C/ S) z6 ^
  3942.   (if (not (setq hlppath (findfile "acad.hlp")))$ u  g* V7 e4 q$ U1 L
  3943.     (setq hlppath ""))
    + f: W1 S" T3 ^1 p0 ^! Y
  3944.   (help hlppath "cconfig")% Q! n' s* U. T9 k5 S, L
  3945.   (princ)
    3 I" Z. V8 R) m; Y* w+ n: e
  3946. )
    7 W9 _7 b. {+ t

  3947. 6 Z5 o" X6 {' k4 m7 w3 V
  3948. ;;; ===== AutoLoad =====
    9 h5 ]" A+ P! A9 ^& w) B, q

  3949. / v2 _  ]. Z5 x
  3950. ;;; Check list of loaded <apptype> applications ("ads" or "arx")
    - m2 l# S9 p  p6 O% U
  3951. ;;; for the name of a certain appplication <appname>.; v2 q* A" `' S2 l; F7 p- j9 S, L
  3952. ;;; Returns T if <appname> is loaded.
    3 Z& d% r. G8 |* Y  @8 ~. Y7 o

  3953. + b. t- y( _" x2 A; j( K
  3954. (defun ai_AppLoaded (appname apptype)
    3 Y2 @+ W2 Q4 d7 M' l2 W
  3955.    (apply 'or% e2 a1 {. d3 I& ^# }  R9 G  ?# [; }6 s
  3956.       (mapcar
    8 `2 x+ K7 C0 T. C& D$ h
  3957.         '(lambda (j)2 f4 z; n3 Q$ ]$ J6 Z' {
  3958.             (wcmatch
    - y' x! S- G8 _8 O3 Y
  3959.                (strcase j T)) F! V) @( Q" P
  3960.                (strcase (strcat "*" appname "*") T)4 y2 U  l  R9 v
  3961.             )   
    * q6 y9 M- E  r
  3962.          )- R0 b, v- Z+ r1 l
  3963.          (eval (list (read apptype)))! M- q# A4 m' L" J) d
  3964.       )
    & ?( P7 s! ?  p* K* {/ A' ?* \
  3965.    )* o& ~6 y: @: }, X- \
  3966. )0 Q" x, G' x6 \; ^7 f1 a
  3967. + f+ }6 f: m+ M! D
  3968. ;;  
      R: i2 m- R3 N  H
  3969. ;;  Native Rx commands cannot be called with the "C:" syntax.  They must 8 }9 Y. C# T0 B$ G* @
  3970. ;;  be called via (command).  Therefore they require their own autoload 5 {2 ^, Z% z3 N: }7 c5 [
  3971. ;;  command.
    6 _( t9 r6 z8 q1 j
  3972. 1 H8 p0 T$ ]+ \6 ~4 t
  3973. (defun autonativeload (app cmdliste / qapp). C; o2 w; R; W: |4 K4 l) n3 q5 Z
  3974.   (setq qapp (strcat "\"" app "\""))- R, P: w2 z& d+ ~% m
  3975.   (setq initstring "\nInitializing...")
    & n, B' {3 K+ I
  3976.   (mapcar- X+ Q0 ^# h( S. O6 {) b. c( D
  3977.    '(lambda (cmd / nom_cmd native_cmd): b# E" i4 \9 X2 c9 Y
  3978.       (progn7 I) C, i( B5 [* D6 f' V# Z; M
  3979.         (setq nom_cmd (strcat "C:" cmd)). C6 S5 H: U7 v
  3980.         (setq native_cmd (strcat "\"_" cmd "\""))
    + C, y  c* Z$ \, ?/ R/ z0 Y
  3981.         (if (not (eval (read nom_cmd)))* \' B: k) Z1 O6 M1 \" C; ~' a: s
  3982.             (eval
    0 e" x% Z  ?1 u8 M0 L- c) S
  3983.              (read (strcat$ r% k% z. q1 t5 Z$ q/ r
  3984.                     "(defun " nom_cmd "()"
    - u# ]( [6 P  v  ~$ Z
  3985.                     "(setq m:err *error* *error* *merrmsg*)"0 s2 \- D' G8 t- F
  3986.                     "(if (ai_ffile " qapp ")"
    4 T: s- j7 O  K/ N
  3987.                     "(progn (princ initstring)"
    $ ?- ^, ?) P( ?4 J2 B: n
  3988.                     "(_autoarxload " qapp ") (command " native_cmd "))"
    1 [( q' q5 w6 [: M, T
  3989.                     "(ai_nofile " qapp "))"
    8 U+ ?; f3 m' h7 d
  3990.                     "(setq *error* m:err m:err nil))"
    : m5 \5 m" b% t5 @2 B$ t
  3991.                     ))))))
    0 m' S& ~$ V5 k$ `1 `
  3992.    cmdliste)
    $ p) P. r- H( u9 Q. x; o& n
  3993.   nil, {+ X6 Z' a) m  q* E
  3994. )
    & z( v7 ?" G! T
  3995. 4 y$ r2 e/ r: s# g% B4 z3 Q
  3996. (defun _autoqload (quoi app cmdliste / qapp symnam)
    ( G8 @8 Y% S7 Q6 L( r$ J
  3997.   (setq qapp (strcat "\"" app "\""))
    4 d. P2 U0 l4 O/ H6 X  M
  3998.   (setq initstring "\nInitializing...")
    ' u6 w/ g- [1 a1 X
  3999.   (mapcar
    ) \& r9 |( a1 p1 x
  4000.    '(lambda (cmd / nom_cmd)7 ^8 \6 i1 Z2 a0 b( E3 r( d; S
  4001.       (progn: H9 X& r8 S' p# z
  4002.         (setq nom_cmd (strcat "C:" cmd))
    1 Y4 q8 v; c  L: _" Q& W
  4003.         (if (not (eval (read nom_cmd)))
    2 A7 r9 X" S. U, N: L" T  w
  4004.             (eval
    1 s& p8 O) r. q  m$ e& W' w
  4005.              (read (strcat5 z+ c7 M+ z1 B6 W( b" b
  4006.                     "(defun " nom_cmd "( / rtn)"
    + u/ R2 r" Y0 P/ b% z( l0 r1 `
  4007.                     "(setq m:err *error* *error* *merrmsg*)"2 H: A8 }( \/ A+ y) a. @
  4008.                     "(if (ai_ffile " qapp ")": ^( L( o9 q9 r4 g+ z5 g; k4 k
  4009.                     "(progn (princ initstring)"
    ; t+ x# l+ p1 k/ t4 H: ^
  4010.                     "(_auto" quoi "load " qapp ") (setq rtn (" nom_cmd ")))"# d9 M# z6 f( ]5 e0 H* h
  4011.                     "(ai_nofile " qapp "))"# Z! ~8 C" B+ W; x
  4012.                     "(setq *error* m:err m:err nil)"
    & _* ^# n# Q. k; o& o( F
  4013.                     "rtn)"  Q" s7 w  Y7 ^+ P. p  E% G
  4014.                     ))))))
    ( D; q' [7 j' S5 H  p1 L) E
  4015.    cmdliste)
    / f" W  O) |1 }! R8 _4 L( e+ X
  4016.   nil+ ?1 Z' p* M# S% V
  4017. )1 ?; q1 b8 t+ u8 i6 |$ V2 c* d+ Z

  4018. , B- [2 L% `6 Z" ~
  4019. (defun autoload (app cmdliste)
    / I4 `/ I) L$ W$ J# s- ^% p
  4020.   (_autoqload "" app cmdliste); f1 s8 i# D& D! M, a9 f
  4021. )) b7 B5 |, b9 x  g6 m

  4022. 4 R# A# }1 u7 I1 e$ X
  4023. (defun autoarxload (app cmdliste)( {3 j( L' K! J5 _
  4024.   (_autoqload "arx" app cmdliste)
    * P5 a5 ~6 d* V( H4 x; G1 J& z2 Y6 n
  4025. )8 @( c% [3 s# H1 n- Z: T
  4026. 4 \5 J/ y; x! F) ^; A
  4027. (defun autoarxacedload (app cmdliste / qapp symnam)
    2 v6 t& K- c! z3 Z0 F
  4028.   (setq qapp (strcat "\"" app "\""))7 C/ H9 V: r* G' ?
  4029.   (setq initstring "\nInitializing...")
    2 m+ e; ?+ S$ r
  4030.   (mapcar2 h! `2 |3 p/ ]5 O- d
  4031.    '(lambda (cmd / nom_cmd)& @/ ?9 @: H3 h, }
  4032.       (progn
    , \: z. ]2 M* f1 P  Z& ?
  4033.         (setq nom_cmd (strcat "C:" cmd))* @5 {+ Q- s& T
  4034.         (if (not (eval (read nom_cmd)))
    + g% a3 R8 Z# Y+ \6 X1 S
  4035.             (eval
      W& d# m1 X% g' O$ ?
  4036.              (read (strcat! ~. ~% w; D5 m8 \; w, H) K
  4037.                     "(defun " nom_cmd "( / oldcmdecho)"
    9 ?' L5 T. _0 ^; a2 C
  4038.                     "(setq m:err *error* *error* *merrmsg*)"
    ' f( M$ ~; a5 ?
  4039.                     "(if (ai_ffile " qapp ")"
    ( i, g4 U! r8 ^
  4040.                     "(progn (princ initstring)"6 M: p* |# S7 O- h, Q; {. _( [; P
  4041.                     "(_autoarxload " qapp ")"# m' p& a% L! k4 e7 q3 A
  4042.                     "(setq oldcmdecho (getvar \"CMDECHO\"))"
    0 h3 j3 M6 a3 N- U5 |0 I
  4043.                     "(setvar \"CMDECHO\" 0)"2 A! `* I+ R  g( `* H0 s
  4044.                     "(command " "\"_" cmd "\"" ")"
    : T3 ~& I+ N# |5 o$ l9 O
  4045.                     "(setvar \"CMDECHO\" oldcmdecho))"! K% k' B* b6 o2 a4 A+ d
  4046.                     "(ai_nofile " qapp "))". _/ \, D" ]# f7 L4 f* |- e
  4047.                     "(setq *error* m:err m:err nil)"9 g' J! w* z3 q- B* U
  4048.                     "(princ))". i: G: d5 F/ j4 f' ]! j
  4049.                     ))))))
      g9 F8 l- V: b
  4050.    cmdliste)
    - @( s  k3 c* U+ @" H
  4051.   nil, e' e( S/ q1 d* r6 P9 g: [( i0 P
  4052. )
    % G0 \* t; i1 d7 t3 R

  4053. + W$ ~6 K" @: M# F
  4054. (defun _autoload (app)' U, E3 D) g+ R- g
  4055. ; (princ "Auto:(load ") (princ app) (princ ")") (terpri)
    . @" m6 J" }6 s6 r2 y7 x
  4056.   (load app)
    ; i" o  N) |6 \+ `. S
  4057. )1 H3 n# D3 X" ]7 @7 M$ v
  4058. - z+ W+ I* [$ T% O
  4059. (defun _autoarxload (app)/ ?0 U) B( ?# T2 e7 F5 q
  4060. ; (princ "Auto:(arxload ") (princ app) (princ ")") (terpri)2 p( h$ M# P% ^: z
  4061.   (arxload app)3 |3 X2 T% V8 L- a' b7 F
  4062. )
    ! `+ G& y. U( H$ t5 ?9 x9 ~# o
  4063. 7 k) u2 k! B2 A7 a# ^
  4064. (defun ai_ffile (app)
    5 R( `6 y2 R- M' z8 W( P2 e' d, q
  4065.   (or (findfile (strcat app ".lsp"))
    $ t$ w- c( _( F; P' b& Z
  4066.       (findfile (strcat app ".exp"))
    1 Q7 P5 j4 _) u
  4067.       (findfile (strcat app ".exe"))
    , c! g! D1 ^& b& _. S4 n: i
  4068.       (findfile (strcat app ".arx"))/ A! m( S0 }$ c
  4069.       (findfile app)! G) S/ @8 i% a% f
  4070.   )% S* g! s/ [& n7 N
  4071. )
    2 _; c5 n6 e$ k: I8 x1 _, r
  4072. 4 R: @" {8 j+ Z# D4 Y
  4073. (defun ai_nofile (filename)
    3 _' y- b- V# I% x
  4074.   (princ
    0 H- m3 I( D! B' e
  4075.     (strcat "\nThe file "3 z0 U' y- i# J# h3 a6 N
  4076.             filename6 t+ [9 s5 E% D7 E
  4077.             "(.lsp/.exe/.arx) was not found in your search path folders."/ U4 p8 I( M$ J( r
  4078.     )
    % S; S, t. h8 P
  4079.   )
    : M$ b% h/ t. {
  4080.   (princ "\nCheck the installation of the support files and try again.")1 K/ `) [, d+ b  u0 f* v
  4081.   (princ)9 o/ x3 r8 b$ w7 _7 @% }
  4082. ); |0 f2 T5 X# P1 \/ N6 q

  4083. 1 E3 S- o: r. G, b, x& a$ z4 h
  4084. 4 E% W: n+ F9 G7 Q& M. }' V
  4085. ;;;===== AutoLoad LISP Applications =====9 o& @8 x# T% `6 _! ~  l3 V2 R! `
  4086. ;  Set help for those apps with a command line interface. B+ g( Q4 p4 Q- }$ I2 ^

  4087. ' n3 B6 X, U- F7 N& C+ h  N
  4088. (autoload "edge"  '("edge"))
    $ c' E; R0 D5 d2 x6 u$ Y* _4 N
  4089. (setfunhelp "C:edge" "" "edge"): ?; x+ F2 g$ q5 `* x

  4090. / d0 n4 k7 Z) X$ Q
  4091. (autoload "filter" '("filter " "filter"))
    2 I( W2 A) d( ?6 ]6 }2 N; v2 w/ O
  4092. ) o. O0 m: R3 |- [8 r0 I! I
  4093. (autoload "3d" '("3d" "3d" "ai_box" "ai_pyramid" "ai_wedge" "ai_dome"$ K/ A) Q' C. c$ D5 c5 D
  4094.                  "ai_mesh" "ai_sphere" "ai_cone" "ai_torus" "ai_dish")
    ' a$ D5 U. G7 U' y! E# U" @9 Y
  4095. )
    5 ?/ U+ W1 o) O! P. S; P# s' F
  4096. (setfunhelp "C:3d" "" "3d"). _) V/ G6 l9 ]0 f8 e1 B  e
  4097. (setfunhelp "C:ai_box" "" "3d_box")$ G$ m+ s8 T. P% V
  4098. (setfunhelp "C:ai_pyramid" "" "3d_pyramid")7 e. L9 Z, v5 c  [. H% T; j4 ~
  4099. (setfunhelp "C:ai__wedge" "" "3d_wedge")4 ]8 t! e& m4 K2 h% Z( d& I( b
  4100. (setfunhelp "C:ai_dome" "" "3d_dome")" [& R4 m$ y: G8 t; ]* }# r
  4101. (setfunhelp "C:ai_mesh" "" "3d_mesh")
    6 w, x' Q2 h$ f, e( ?: F
  4102. (setfunhelp "C:ai_sphere" "" "3d_sphere")! C! {4 f4 m6 f, M8 O9 @
  4103. (setfunhelp "C:ai_cone" "" "3d_cone"). }' l2 A8 h0 |* W4 ^, w
  4104. (setfunhelp "C:ai_torus" "" "3d_torus")
    ) ~' h4 N' H1 u
  4105. (setfunhelp "C:ai_dish" "" "3d_dish")( S( L6 h7 T# S; }% d/ A
  4106. 4 w  u3 T6 k6 W# v* v% l$ n
  4107. (autoload "3darray" '("3darray"))
    ! v+ V" P2 @  ~! N! E) q+ r
  4108. (setfunhelp "C:3darray" "" "3darray")
    % a& \: C0 F$ z+ V" w
  4109. 1 i) Z# M! B9 Y" m9 t9 e
  4110. (autoload "ddvpoint" '("ddvpoint"))
    ! A0 }9 b. F/ \8 M8 c

  4111. + n/ ~+ n; Z! ?$ q5 y& m
  4112. (autoload "mvsetup" '("mvsetup"))
    $ c2 D- j- B7 x5 s
  4113. (setfunhelp "C:mvsetup" "" "mvsetup")
    0 [" _. K$ N5 t  f/ w
  4114. ; G/ D7 z& {- U0 R7 A! b  A2 p
  4115. (autoload "ddptype" '("ddptype"))% R6 N7 p9 x( L+ G0 z) F# u

  4116. : W: G0 U8 T) ]2 h( ]
  4117. (autoload "attredef" '("attredef"))  N& [  n; r5 f: q/ I
  4118. (setfunhelp "C:attredef" "" "attredef")
    $ Y3 p. [) ]( W3 O

  4119. 0 w# S0 J% n1 N* h
  4120. (autoload "xplode" '("xp" "xplode"))
    8 O, R& o. z8 k( T) H& q+ ]# s4 N
  4121. (setfunhelp "C:xplode" "" "xplode")
    $ q. a- R6 s; }+ U

  4122. * Q& y  m; h" T; W! R
  4123. (autoload "tutorial" '("tutdemo" "tutclear"
    , X6 ]! K( A; _8 R4 Z$ y" n
  4124.                                        "tutdemo" 8 [/ g8 }- r) ?5 L0 {- W
  4125.                                        "tutclear")), u1 o6 S$ l& c1 ?) k( F, D
  4126. 6 r  q3 g! r/ t
  4127. ;;;===== AutoArxLoad Arx Applications =====3 Q, I- K3 s3 ?, N, G) j. f

  4128. ) g- \0 d' G% W3 K* H
  4129. (autoarxload "geomcal" '("cal" "cal"))! b0 _5 R5 s) a2 x, a

  4130. " }8 v8 ^$ a: ~
  4131. (autoarxload "geom3d" '("mirror3d" "rotate3d" "align". p  V! j6 M& ]* X! |) C; d# m$ {" y
  4132.                       "mirror3d" "rotate3d"
    0 @! \; D" d7 o" b
  4133.                                  "align"))1 Y3 H* m  J1 \9 J
  4134. 8 Y0 r* ]" l# [+ i2 d5 |

  4135. 3 l( g# x3 P! g6 X. L2 r+ i1 a
  4136. ;;; ===== Double byte character handling functions =====
    ' e7 d! l( C1 _9 P- f
  4137. 5 O9 n% ?2 H2 ]
  4138. (defun is_lead_byte(code)
    2 N- C: r4 o2 U8 I+ w' K
  4139.     (setq asia_cd (getvar "dwgcodepage"))
    2 t. |1 P( K# F6 n5 A) I
  4140.     (cond
    - O4 ]4 d6 B2 R+ V' S4 S
  4141.         ( (or (= asia_cd "dos932")  |0 N; m3 D' w6 e* y" U
  4142.               (= asia_cd "ANSI_932")7 l2 R" O2 D2 e0 |2 N
  4143.           )
    ' B9 v! D) U4 E+ n" y: `0 E
  4144.           (or (and (<= 129 code) (<= code 159))/ r5 b, |% ?3 u2 D  w7 j7 c
  4145.               (and (<= 224 code) (<= code 252))  J2 s5 }1 q8 u  {% C
  4146.           )4 W# e  o* k/ b4 x4 l- w$ f$ ?
  4147.         )7 J# x% m- E" k
  4148.         ( (or (= asia_cd "big5"). R8 X- V- G7 k
  4149.               (= asia_cd "ANSI_950")- x' G- `- [1 j8 l# ?0 Q4 o
  4150.           )
    " s* L' n2 E$ i# ^
  4151.           (and (<= 129 code) (<= code 254))
    ) T7 n1 J& m9 f' `
  4152.         )( A) w5 ^' S$ D7 I% a
  4153.         ( (or (= asia_cd "gb2312")
    6 u! H5 Q# e+ C2 |% E  e
  4154.               (= asia_cd "ANSI_936")
    : X+ ]: q6 C. B- y" p
  4155.           )
    " L' `, }  A: C' p# K  L
  4156.           (and (<= 161 code) (<= code 254))
    4 O- G' {) F5 r1 b. n
  4157.         )
    . B, Q- c9 v, W2 C
  4158.         ( (or (= asia_cd "johab")6 s, W$ U) i0 _2 l7 {
  4159.               (= asia_cd "ANSI_1361"): c! k/ G7 y! _* _& m
  4160.           )
    ' L4 Y  D% K0 }; v6 W: P
  4161.           (and (<= 132 code) (<= code 211))5 G0 F$ e5 P0 `' ], k* N& E5 W
  4162.         ). u4 q5 w8 r0 F) x3 V  L
  4163.         ( (or (= asia_cd "ksc5601"): B- W/ Z& U, D4 s" ]
  4164.               (= asia_cd "ANSI_949")
    0 `/ \# Z+ w$ O1 J: o& N0 F# f
  4165.           )
    5 U/ L/ k! ~( U6 G
  4166.           (and (<= 129 code) (<= code 254))0 ~4 U3 x  b9 d$ L$ E3 W" h
  4167.         ); \. j# f& n% s' M' o0 F! q9 h* \
  4168.     )
    7 |+ J4 U  q4 ?( t  e9 }
  4169. )" a  A5 x% Q* o0 z3 E

  4170. : f! x5 y) I: U
  4171. ;;; ====================================================
    : ?  I' _0 b$ F& u

  4172. 2 F% I7 J* ^! n8 g* I; o' h+ l

  4173. ( ^# \; x" i* v2 ~4 r
  4174. ;;;
    / r" B; R6 s! ~. i1 {& G5 l5 _
  4175. ;;;  FITSTR2LEN3 `" d9 E" G" C: J4 P
  4176. ;;;
    4 A1 s2 [7 _  M1 q% t2 e
  4177. ;;;  Truncates the given string to the given length.
    3 \  x) Y9 I& y3 i3 j9 u
  4178. ;;;  This function should be used to fit symbol table names, that8 _8 D$ x+ Q, k0 A! W/ [' }5 r3 \
  4179. ;;;  may turn into \U+ sequences into a given size to be displayed
    6 }" g: b  `4 E
  4180. ;;;  inside a dialog box.. V6 E* T# X) g6 e
  4181. ;;;4 f/ z6 z, O2 N3 A2 u; ]3 m
  4182. ;;;  Ex: the following string:
    ; }% o. m: Y6 U  D' v% X- @: l# l
  4183. ;;;
    8 Y$ {- _# h* I6 g
  4184. ;;;      "This is a long string that will not fit into a 32 character static text box."
    ( j# k, {/ b. m* b' K4 h% i/ _
  4185. ;;;: E' ^$ ]% W( Y$ {
  4186. ;;;      would display as a 32 character long string as follows:
    : e( j5 J6 m3 L" D7 G
  4187. ;;;
    ! `* N; O& z+ t) }* G( n
  4188. ;;;      "This is a long...tatic text box."
    / v1 ^/ g; p, `8 S- L
  4189. ;;;/ q. `# v; {* ~( A% b
  4190. " V, g+ ?8 [( l6 ^5 R9 y, ?5 P
  4191. (defun fitstr2len (str1 maxlen)* H" e$ J8 P, p- O5 N3 h

  4192. 4 J% H7 k$ v0 a6 W2 T
  4193.     ;;; initialize internals
    : s6 F; [3 @/ ^  T6 k% o
  4194.     (setq tmpstr str1)
    5 m6 a' z0 p& }2 Z
  4195.     (setq len (strlen tmpstr))
    . F. }$ ?* }' L9 k7 ]( h/ ^( b
  4196. . G) X8 H$ i% d! \6 ~
  4197.     (if (> len maxlen) * a# }) V! V  v* c) H) N
  4198.          (progn
    4 Y" u, h% F3 S0 o8 H* X/ v$ U; {
  4199.             (setq maxlen2 (/ maxlen 2))7 _) G7 Z" [9 Q& g
  4200.             (if (> maxlen (* maxlen2 2))
    " |- @! y( r) w5 P7 ~
  4201.                  (setq maxlen2 (- maxlen2 1))  C- l* {3 `, s1 d" G" |0 o
  4202.             )
    7 J3 H2 P3 ~# L( Z2 G) s/ U) t
  4203.             (if (is_lead_byte (substr tmpstr (- maxlen2 2) 1))
    , _( q1 Z4 Z$ [2 j
  4204.                  (setq tmpstr1 (substr tmpstr 1 (- maxlen2 3)))
    ; i9 r. W6 p$ O' ]
  4205.                  (setq tmpstr1 (substr tmpstr 1 (- maxlen2 2)))8 E% ~6 ^% C: R6 t! Y9 k
  4206.             )) S1 L' \1 ~2 X
  4207.             (if (is_lead_byte (substr tmpstr (- len (- maxlen2 1)) 1))8 }$ T7 w& N! o# M
  4208.                  (setq tmpstr2 (substr tmpstr (- len (- maxlen2 3))))( h6 l8 Q* @9 w1 G; N
  4209.                  (setq tmpstr2 (substr tmpstr (- len (- maxlen2 2))))
    , e" m5 P0 J6 J- S
  4210.             )
    6 a$ [1 |. j, _0 H- A  ]
  4211.             (setq str2 (strcat tmpstr1 "..." tmpstr2))
    6 m$ t" N$ v$ r5 O8 m6 R
  4212.          ) ;;; progn
    % p" Z1 c  {8 z, R( k- I
  4213.          (setq str2 (strcat tmpstr))
    7 S- s7 D! O- E% o4 k1 Q
  4214.     ) ;;; if
    ! \+ M% f$ r) R2 }1 m3 y/ w
  4215. ) ;;; defun1 ^! d! J/ ^4 K, g

  4216. $ L; i/ P- w9 L0 o3 U, `% U4 n/ m- O
  4217. ; B% h. M/ D5 n3 Q& ^
  4218. ;;;
    7 B: j# ~6 R1 _
  4219. ;;;  If the first object in a selection set has an attached URL2 O4 W/ D; i6 j+ V2 v5 s! C
  4220. ;;;  Then launch browser and point to the URL.
    , O9 G8 `0 C6 Q: r: G
  4221. ;;;  Called by the Grips Cursor Menu% ?9 f9 E6 q8 d4 J# y! U" V
  4222. ;;;* }- o+ u3 Q: Z2 ]
  4223. # i# {% F/ V% D& F; D
  4224. (defun C:gotourl ( / ssurl url i)
    ; g# j2 }5 j9 j4 K+ D5 P
  4225.    (setq m:err *error* *error* *merrmsg* i 0)
    % p8 E' N) {+ Z6 V* o
  4226. ' W, L1 w5 T$ b8 j* K8 k/ o
  4227. ; if some objects are not already pickfirst selected, - S5 p+ a% ]+ b5 }* p1 _! B
  4228. ; then allow objects to be selected. @: }; u4 f4 n

  4229. ! k+ w+ v8 W" D
  4230.   (if (not (setq ssurl (ssget "_I"))), M0 V8 g8 _9 m2 o  C% C1 W
  4231.       (setq ssurl (ssget))
    3 O. l5 x+ ~: F; x; l  U  N
  4232.   )
    . v1 \1 @/ B( L9 a; P1 l
  4233.   z$ m4 Z4 C& ~/ G9 I0 a
  4234. ; if geturl LISP command not found then load arx application
    - l. t& v1 ~6 n# z- |( ^; v

  4235. , D3 P& b& g4 E8 _+ g
  4236.   (if (/= (type geturl) 'EXRXSUBR)1 |8 \5 y9 B+ M* S4 u
  4237.     (arxload "dwfout")
    3 w" h$ Y: k. M0 Q2 W7 n4 Q
  4238.   )
    8 N5 j! w0 _! \
  4239.   % W4 B7 V% h1 ~. O; L1 O8 K- l
  4240. ;  Search list for first object with an URL8 x7 a/ ?2 p3 s3 q5 A% ]
  4241.   (while (and (= url nil) (< i (sslength ssurl)))
      E8 y8 s% R/ v
  4242.     (setq url (geturl (ssname ssurl i))
    9 a, m( y' b4 B# ^% ?
  4243.           i (1+ i))
    ' W4 T+ G% W9 x" ?
  4244.   )  }2 [6 R; v/ q9 R) a
  4245. # d7 }1 r) D' N, i
  4246. ; If an URL has be found, open browser and point to URL
    $ s: q" r& T. e. B7 |7 i+ _
  4247.   (if (= url nil)
    + B5 m; K' K4 P8 G0 u0 F) |
  4248.     (alert "No Universal Resource Locator associated with the object.")
    * h; B7 h: S5 ^: V/ x
  4249.     (command "_.browser" url)/ s; C: X1 U* C0 K/ P5 W4 n
  4250.   )
    ! c8 u" v6 B& g9 ?
  4251. , J( K9 D) u! f9 {
  4252.   (setq *error* m:err m:err nil)+ _/ m7 l# _3 f' k. j! o: I7 f
  4253.   (princ)) N6 f) z4 x- l. f  q+ \5 f8 N% O: a

  4254. ; I  V* b$ M/ h
  4255. )  z5 C" b% I* `
  4256. 7 y+ ]7 Z. T- \, A2 x6 [0 z
  4257. ;; Used by the import dialog to silently load a 3ds file
    " t; z- J, v% S% r  Z2 v7 V9 t+ ]2 p
  4258. (defun import3ds (filename / filedia_old render)& K7 U' i! S. ?, n. P. ~& u( \
  4259.   ;; Load Render if not loaded" \5 I. T- W2 Y, \! J
  4260.   (setq render (findfile "acRender.arx"))0 v. n) Q8 d1 N: X5 L
  4261.   (if render
      Y7 k/ }- t0 t+ F: r8 g. f/ X8 J
  4262.     (verify_arxapp_loaded render) 7 z$ K1 l! b$ S5 B3 C0 k6 [& @  {) E
  4263.     (quit)
      [+ M- A0 u+ ?. |+ y
  4264.   )
    - q; B4 P. f5 j
  4265. * _' U2 ]* U+ t2 _
  4266.   ;; Save current filedia & cmdecho setting.: I- \; `+ r4 ?# J5 P
  4267.   (setq filedia-save (getvar "FILEDIA"))2 @8 I" }. \( c
  4268.   (setq cmdecho-save (getvar "CMDECHO"))  r! X4 v6 A1 Z. H
  4269.   (setvar "FILEDIA" 0)3 _: d+ U. c5 f% B: e6 C( \
  4270.   (setvar "CMDECHO" 0)( |% K: S& m( t1 U
  4271. . `- Q( o* u8 K% e1 {
  4272.   ;; Call 3DSIN and pass in filename.2 F- [6 G- d0 v, o( N
  4273.   (c:3dsin 1 filename)* Q  k9 Y& O- P9 P* H7 g
  4274. 5 a: s8 S' J, {9 B+ P( J/ Q
  4275.   ;; Reset filedia & cmdecho" K8 @( i! l5 |( H$ f
  4276.   (setvar "FILEDIA" filedia-save)" `4 h2 D8 n6 y; o
  4277.   (setvar "CMDECHO" cmdecho-save)
    ! J2 r. B0 N: P$ s
  4278.   (princ)9 l4 u5 c7 m% l& x1 J' n1 N, O
  4279. )
    ; N& H  [1 h/ N/ T
  4280. 2 @" Y/ D' X+ t& A4 w8 P7 M2 w

  4281. ' [5 }' c+ l" y9 U# }' A% N
  4282. ;;;=== Menu Functions ======================================! E! z4 C( ]" ~2 s& Y3 j
  4283. 6 C  e  e' y9 j$ q  w- U2 K$ u
  4284. (defun ai_rootmenus ()
    + T7 {1 x9 ^: y' b
  4285.   (setq T_MENU 0)
    8 p4 h" z; ]7 M
  4286.   (menucmd "S=S")5 n0 R7 B0 J) G3 V2 C) i1 M& Z
  4287.   (menucmd "S=ACAD.S")
    7 B3 R- w# S0 i2 k
  4288.   (princ)/ R- b; J1 ~4 ^% @* A! u1 n  j
  4289. )/ M3 K/ [( d! D2 D# Y1 R

  4290. ) A" R5 h: `% r! r
  4291. (defun c:ai_fms ( / fmsa fmsb); \% y  P& ^) v) `" O
  4292.   (setq m:err *error* *error* *merr*)8 V8 O7 g; Q0 u
  4293.   (ai_undo_push)( W; V. z/ i% e1 F5 a' _9 W
  4294.   (if (getvar "TILEMODE") (setvar "TILEMODE" 0))1 s1 L, j; p* q. ^* B; ]% x* d
  4295.   (setq fmsa (vports) fmsb (nth 0 fmsa))" i. `, E! p' _' R5 f
  4296.   (if (member 1 fmsb); D5 {, j% }) x$ \; N  S
  4297.     (if (> (length fmsa) 1)
    ' c1 c. c5 w, U2 L+ s2 B
  4298.       (command "_.mspace")
    ! m3 y; r7 D2 y" r6 c" ~
  4299.       (progn
    0 Q- I* U' ]& @
  4300.         (ai_sysvar '("cmdecho" . 1))
    ' Q$ t& ~- ~7 |7 c0 @0 r$ t3 k
  4301.         (command "_.mview")
    , I+ f& x, n" m* m6 A& ]6 S/ E
  4302.         (while (eq 1 (logand 1 (getvar "CMDACTIVE")))# |9 t  m! O) V) e8 x2 Z
  4303.           (command pause)9 m+ h. ]) I5 M3 W* _1 P' |* E7 V
  4304.         )
    " }8 B% Q7 k1 f0 ]& o
  4305.         (ai_sysvar NIL)
    ! I1 x) V$ Y3 O: a4 i0 `
  4306.         (command "_.mspace")! p2 l) Y! {8 L0 _
  4307.       ), w: }" G  I. i- O% R2 m+ X
  4308.     )& o+ L, s0 N. @1 j
  4309.   )8 k( k3 v4 f$ r0 A' V: t* n
  4310.   (ai_undo_pop)
    - a7 I: d1 k9 ^) X+ U( g6 J
  4311.   (setq *error* m:err m:err nil)
    ( h% C) O( d- C( p$ X4 i
  4312.   (princ)  N& d: u' \4 E* A9 \# ?2 o
  4313. )& Y1 ^3 c7 O8 r- D" L. `

  4314. 1 d! O/ h$ n* {4 P4 i' c' K3 J" B
  4315. (defun ai_onoff (var)) ]  b; n! A/ F: ?5 V. L
  4316.   (setvar var (abs (1- (getvar var))))
    * X; W" B- B' [) c- Y2 M6 R3 b
  4317.   (princ)
    $ h6 ?4 ~0 X+ m* Z
  4318. ): ?9 N5 O  K# `' [, `

  4319. 9 z( y- ~3 k1 ^& |! S
  4320. ;;; go to paper space
    ! ?% @6 K) z- \" \1 L( C
  4321. (defun c:ai_pspace ()
    " j3 ]% Q* i1 o' l0 Y; I
  4322.   (ai_undo_push)
    6 s& }1 C7 c& S0 k
  4323.   (if (/= 0 (getvar "tilemode"))
    : P9 I( S" u1 k1 G- X
  4324.     (command "_.tilemode" 0)
    # }9 j. c4 ?! y8 y8 P  b
  4325.   )9 G/ D  Q1 ]% D/ N9 x
  4326.   (if (/= 1 (getvar "cvport"))
    6 i$ U/ M5 Z3 k$ p5 [
  4327.     (command "_.pspace")! k" S0 D1 o7 U- E; s
  4328.   ), m4 n2 c$ N( f2 b( Z$ x; f, X
  4329.   (ai_undo_pop)" O( a6 J7 |7 }6 v6 w
  4330.   (princ)
    1 t$ Q! h0 S" M1 `1 `* W- z
  4331. )
    ; z. l$ l& J' q# U3 E1 V
  4332. ! V' n# ^  @) T" \, g
  4333. ;;; go to tilemode 1
    % {% x2 d8 ~: E2 }
  4334. (defun c:ai_tilemode1 ()
    : F) R/ G6 K! ?( }. @
  4335.   (ai_undo_push)  e& o& d- |) \4 `9 ?
  4336.   (if (/= 1 (getvar "tilemode"))
    3 e7 v  J( I3 X- l$ E. x% ]# a
  4337.     (command "_.tilemode" 1)$ K2 v/ y' F  W3 C- `( q  q$ l
  4338.   )& @; \2 t6 E+ @& d
  4339.   (ai_undo_pop)& o/ `% N: k' ]6 @# i8 N6 F
  4340.   (princ)
    - v# q6 @# D/ n& y
  4341. )* \8 x" S* Q  A% F( g6 Z
  4342. 5 Y. e* ?6 @& M* D
  4343. ;;; Pop menu Draw/ Dim/ Align Text/ Centered; B  D7 u! }; f( Q! B" b7 B3 X
  4344. ;;; Toolbar Dimensions/ Align Text/ Centered
    1 F: k% _! R. l8 C8 y% `* d' ~

  4345. / `/ V  Q4 Y, X* F% l+ u- l
  4346. (defun ai_dim_cen (/ ai_sysvar ai_dim_ss)2 y; P+ |- W  c/ q/ _8 `
  4347.   (setq ai_sysvar (getvar "cmdecho"))% e! ]6 f" O" S' Q
  4348.   (setvar "cmdecho" 0)& O5 b" i0 b1 I  b' K- g
  4349.   (cond% K$ C( ]6 y: V- V
  4350.     ((setq ai_dim_ss (ssget  "_P" '((0 . "DIMENSION")))), B) [5 n- b2 k8 H$ V& }
  4351.       (command "_.dimoverride" "_dimjust" 0 "" ai_dim_ss ""
    2 o+ i& m6 I: P2 v
  4352.                "_.dimtedit" ai_dim_ss "_h")8 o2 y/ r) W+ ?, T$ n: c
  4353.     ), A; D, F& X; n6 e4 x9 B8 _7 q
  4354.     (T nil)4 ?, _8 l$ D% B' O" W9 d( u
  4355.   )
    / m4 ]1 w( i1 Y0 n+ a+ @  H
  4356.   (setvar "cmdecho" ai_sysvar)/ L3 M5 ^$ {* C! t& I. r+ J9 I
  4357.   (princ)
    + r. r$ P. g* U$ t
  4358. )) z/ w& ~+ w, a$ u
  4359. - z% v' D$ G  j1 s: J
  4360. ;;; Shortcut menu for Dimension Text Above . [; L* X0 @  k: {0 O! t: k

  4361. : c% j: ]9 z/ x" H7 m: z
  4362. (defun c:ai_dim_textabove (/ ss)5 F8 i+ O* c+ E( u, ~/ B8 H# g7 F
  4363.   (ai_sysvar '("cmdecho" . 0))0 D( `4 e+ _- Q# R& p% b
  4364.   (if (setq ss (ssget "_I"))/ H8 K+ X7 f/ F* t! B. b6 O+ J% u& }
  4365.     (command "_.dimoverride" "_dimtad" 3 "" ss "")  `% }" Q- X$ X8 n/ h+ A1 Z* H: d' s
  4366.     (if (setq ss (ssget))
    5 O3 u( o& v( I0 T
  4367.       (command "_.dimoverride" "_dimtad" 3 "" ss "") ) r, p/ I; T$ c; A! j& A% Q5 M
  4368.     )
    # r4 J. @( j9 E* f
  4369.   )3 t0 V. n% U" _5 a2 {
  4370.   (ai_sysvar NIL)
    * [, Q# b, a% Q. O' v1 \
  4371.   (princ)
    , a+ h3 W$ S) |, R# a
  4372. )( I, N6 ~! N+ W8 g& A! u4 M7 y+ K

  4373. ' W2 j' o/ Y+ F' M& Q
  4374. ;;; Shortcut menu for Dimension Text Center
    $ V" r0 [* Q% J5 p! }5 l4 [
  4375. 4 r3 `8 C# g/ _( s2 T  B
  4376. (defun c:ai_dim_textcenter (/ ss)
    $ }/ T4 {) @% [. P9 Q- K
  4377.   (ai_sysvar '("cmdecho" . 0))' w0 e8 N% Q' o/ o# M
  4378.   (if (setq ss (ssget "_I"))
    / m9 L! d: G' H2 v+ w* t
  4379.     (command "_.dimoverride" "_dimtad" 0 "" ss "")' D* }9 t; v& g& b
  4380.     (if (setq ss (ssget))
    : X2 q) N3 W* A, h; E
  4381.       (command "_.dimoverride" "_dimtad" 0 "" ss "") 6 k4 s4 A1 _% W+ U$ I4 C
  4382.     )7 Y. o7 i+ [5 y- W5 P6 R0 ~
  4383.   )! U# |( n% g( e6 n2 ?5 y
  4384.   (ai_sysvar NIL)
    + m* j4 m1 S" i3 ?9 a5 t) K% a
  4385.   (princ)
    % e8 n5 e/ r0 p7 F8 q1 n
  4386. )
    1 A% s! S% {6 S+ O

  4387. . w) e0 m, z- c# a% M: L& O9 F
  4388. ;;; Shortcut menu for Dimension Text Home
    , l/ y& H" }; M; L4 N2 a
  4389. & }; \7 o. L2 {8 k7 Q' Z8 b
  4390. (defun c:ai_dim_texthome (/ ss), K; K5 F3 Q/ P
  4391.   (ai_sysvar '("cmdecho" . 0))
    9 n3 C: a% Z# C. X& J# c0 K& y
  4392.   (if (setq ss (ssget "_I"))
    0 }6 [" h7 U) [0 a$ D1 S
  4393.     (command "_.dimedit" "_h")
    8 w6 K1 P" v) b
  4394.     (if (setq ss (ssget))) E& n8 u! a" m( ?  t3 y
  4395.       (command "_.dimedit" "_h" ss)
    5 ^4 `# K/ o* ~, l
  4396.     )
    3 o2 H, ?( `* S9 V3 G+ X
  4397.   )
    ! z/ B' V! J# H( ^
  4398.   (ai_sysvar NIL)
    / k, l/ b. n% S; y2 f3 n
  4399.   (princ)
    - G# ?8 g4 O9 f4 F4 D- F; ^
  4400. )* w- {6 B$ w5 G& ?( a; l
  4401. * B/ v. f" f7 p- ?( z" ~3 s( H
  4402. * w( ^& e8 g$ ?6 x4 x9 X
  4403. ;;; Screen menu item for CIRCLE TaTaTan option.( t" k, a0 U, t; V# s, S3 B
  4404. ;;;     first, get points on entities
    # n7 C! {" c' O% L2 _2 {1 U
  4405. (defun ai_circtanstart()  k$ B; z& Z1 A) W4 {
  4406.    (setq m:err *error* *error* *merr*)
    # L( \& ?4 U4 A
  4407.    (ai_sysvar : ~1 c1 f5 C7 S# h) X
  4408.       (list '("cmdecho" . 0)
    . Z' p& ]7 ~" s7 y; Y: m9 ^
  4409.          ;; make sure _tan pick for CIRCLE gets same entity) j  l- }) c! M* |1 J& k5 f9 K
  4410.          (cons "aperture"  (getvar "pickbox"))5 I; r7 V# E% t  I* n
  4411.           )4 g& A  \2 N. q7 @) u
  4412.    )3 V; {. `6 K6 ]6 x* A$ O
  4413.    ;; prompts are the same as CIRCLE/TTR command option2 _6 H% |( ^8 U
  4414.    (setq pt1 (ai_entsnap "\nEnter Tangent spec: "  nil))( p  K  h2 _, h, g. J/ |% [- E
  4415.    (setq pt2 (ai_entsnap "\nEnter second Tangent spec: " nil))
    $ b3 g$ }3 D0 o; `5 \" @, @! ~* n
  4416.    (setq pt3 (ai_entsnap "\nEnter third Tangent spec: "  nil))
      [; n9 C: e; m  u" n" L
  4417. )' P5 S( C4 x2 W1 r. A8 }: T' ~- g
  4418. ;;; Command-line version
    ) N! K2 N4 k5 q0 N) d3 K
  4419. (defun c:ai_circtan (/ pt1 pt2 pt3)
    ( K6 y& j% n  c3 H( O5 d3 J& S
  4420.    (ai_circtanstart)5 ^0 l7 c* o4 C

  4421. & n/ L' G0 m9 ]6 T8 M, P
  4422.    (ai_sysvar '("osmode" . 256))" \- {1 e) S6 E, O
  4423.    (command "_.circle" "_3p" "_tan" pt1 "_tan" pt2 "_tan" pt3)
    . R5 z5 }- X* \' k
  4424.    
    " R6 f/ w0 A) H/ L) H- ~; v
  4425.    (ai_sysvar nil)
    7 ?3 l4 C% G' A. [3 f
  4426.    (setq *error* m:err m:err nil)1 _2 k+ q* q) k/ \8 |7 h  l
  4427.    (princ)
    0 o  T' e8 B7 T! ?- o1 g
  4428. )+ b; \6 b  \5 T, a8 ~+ Q, m- G
  4429. ;;; Use this if CMDNAMES == CIRCLE. r3 o1 ]  B6 H, H7 ^
  4430. (defun ai_circtan (/ pt1 pt2 pt3): M! r; K0 z8 m3 M9 y: i! h
  4431.    (ai_circtanstart)* v# D' b$ K) A7 J

  4432. : L( I' |- l$ l- H: N& I2 W, ~* y  I) K
  4433.    (ai_sysvar '("osmode" . 256)): ?6 z2 d3 K* A1 X" `5 [
  4434.    (command "_3p" pt1  pt2  pt3)# _$ o3 F4 [' z
  4435.    
    & k8 q8 h' X% ]) \# L
  4436.    (ai_sysvar nil)
    . i6 P8 O9 L. S, G& ]
  4437.    (setq *error* m:err m:err nil)8 t: `, z* D  @3 F  b
  4438.    (princ)
    ) I; S. Z! E% p: n& ]# q
  4439. )
    2 H! e* R, G7 D% W. p/ N0 U5 y* B3 M

  4440. : R3 `$ \3 I: _/ S" h
  4441. : z/ X2 _# N  N( K; Y
  4442. 0 F+ p. g4 C: f1 b8 z- w
  4443. ;;; Shortcut menu Deselect All item.! e4 ~$ l" f! g5 m9 ]! Z" R: w0 D( X
  4444. & O3 ]  c) G. a( z
  4445. (defun ai_deselect ()* X2 L' W" E% ^8 O! g8 Z7 o
  4446.    (if (= (getvar "cmdecho") 0)                        ;start if) _$ T1 R  V) T9 N- j; c( T
  4447.        (command "_.select" "_r" "_all" "")
    ' z: \( ]3 C9 j
  4448.        (progn                                        ;start progn for cmdecho 12 @7 U" E9 Y6 |& O5 I. `  d
  4449.            (setvar "cmdecho" 0)+ m% s# N, E2 S# a8 k4 Q7 \& q0 l
  4450.            (command "_.select" "_r" "_all" "")
    + s: g( E" B/ [' q4 T, K- k  j
  4451.            (setvar "cmdecho" 1)
    2 \) V8 G; N$ i
  4452.        )                                        ;end progn for cmdecho 16 j& h/ `! g# o5 N, ]7 h* v& C
  4453.    )                                                ;end if
    - m' ~( z5 f6 `$ k: h: |; x
  4454.    (terpri)
    ( v7 p. \; f) f- w$ M9 E( r5 P9 w
  4455.    (prompt "Everything has been deselected")
    5 s- |1 Z. |3 [/ b+ U
  4456.    (princ)
    6 L. p0 o. @: s" r# `0 M
  4457. )
    ! W* N- u3 E( W5 f+ F$ t5 i) o+ @

  4458. 6 D7 [7 D, x( {: a6 m7 o
  4459. ;;; Command version of ai_deselect to be called from the CUI* p$ P" X2 X( Q4 I* q
  4460. ;;; so it gets properly recorded by the Action Recorder
    : G" x2 Q) A  m
  4461. ;;;
    / u; |( e! L6 e* S2 r
  4462. (defun c:ai_deselect ()
    1 x1 ~9 W, o: z+ p# g
  4463.   (ai_deselect)( \/ {1 f2 N+ y! n+ M
  4464.   (princ)
    1 P6 o4 ~, n& ^% D* x8 _) S
  4465. )
    4 f" l  {5 f& U1 y/ k, G* b
  4466. 0 a% a% X5 [8 `6 k! l& X/ {, x' a
  4467. ;;;
    * V8 g* U  k4 d7 C
  4468. ;;; Enable Draworder to be called from a menu3 ~: x# c# ]5 o# I7 g% m4 b
  4469. ;;; Checks for Pickfirst selected objects
    4 P( a! p# }6 g: R) g- H9 `
  4470. ;;;
    & w. B; g6 |3 M) u

  4471. 4 E# w0 n2 T/ x! k# }+ j* Z) X
  4472. (defun ai_draworder (option / ss )) h4 S9 l$ J1 d

  4473. 2 L- p( U7 F4 q3 ^5 D: Q, a& q1 {
  4474.   (setq m:err *error* *error* *merr*)
    ) i7 g- X  b- m" s: j# {+ I
  4475.   (ai_sysvar '("cmdecho" . 0))
    ( j8 X8 w5 M( X+ w( ]

  4476. ( F( C7 ~( M' X3 J
  4477.   (if (setq ss (ssget "_I"))
    2 h7 Z( _9 z9 [" P' X% v1 c/ ]
  4478.     (command "_.draworder" option)! D. z& d; J5 H) K
  4479.     (if (setq ss (ssget))
    & U, i4 b: K  G$ H. \3 {1 n: j' r9 z
  4480.       (command "_.draworder" ss "" option)
    . b) V+ x7 Y& [/ e' j4 d: ~
  4481.     )
    - l/ u0 ~5 C7 {2 c- n
  4482.   )
    , E4 C' \/ C" l* i' f6 w" }
  4483.   (ai_sysvar NIL)
    : X( ^% ~4 T6 o' _% i( {- h
  4484.   (setq *error* m:err m:err nil)$ |& D: W8 E) ^% d

  4485. ' ]% }. J, w2 |& ^
  4486.   (princ)7 L' W1 J- w: y3 l: t
  4487. )9 l: n4 R, A4 `
  4488. ( q$ u' F3 Z# H- C
  4489. ;;; Command version of ai_draworder to be called from the CUI; U+ g5 K/ P  }! s
  4490. ;;; so it gets properly recorded by the Action Recorder
    " \0 z, M. H, @( g  j
  4491. ;;;0 A7 n* D- W" U4 h8 g
  4492. (defun c:ai_draworder ()4 O* |2 R, Y, S1 k% d
  4493.   (initget "Above Under Front Back")
    1 `* F  v8 P: b8 _8 A
  4494.   (ai_draworder (strcat "_" (getkword)))
    & A5 I/ S( \9 v
  4495.   (princ)
    3 x- r5 A4 h+ J8 u6 N' E1 T
  4496. )
    ! Y4 N& w2 W+ B! s, w

  4497. ( K( `% B: e: l8 S
  4498. (defun c:vlisp ()$ A$ t) d1 q, f* ]0 @( G& w1 q
  4499.   (if (/= nil c:vlide) (c:vlide))* y/ C6 q. _; V% ~  P
  4500. )& p8 V0 Q8 m4 k4 ~

  4501. - [& |% d* L8 Y" b) f. E. O
  4502. (princ "loaded.")
    + S9 `7 B) Z$ G: @0 ^, G& A) Y' }7 M7 g

  4503. % \, a7 G2 v- j) c
  4504. ;; Silent load.+ z* z. s$ P/ k
  4505. (princ)
    & ~) }. M. i9 o  \6 h8 i3 N
  4506. $ ^: X  m, G$ y; r9 {2 m& K' h8 f- i* F
  4507. ;;;----------------------------------------------------------------------------$ b, z3 |( j3 h  }6 P  \
  4508. ;;;# ^6 W6 y' R* X% i& ~% E
  4509. ;;;   DDCHPROP.LSP   Version 0.5
    2 @7 k- t5 A7 x! X& B
  4510. ;;;1 ]+ P- F* N5 Q( l& R: X
  4511. ;;;   Copyright (C) 1991-1993 by Autodesk, Inc.
    6 F% ^, i" q* r5 n
  4512. ;;;
    6 L- X$ E, \! k9 a, h1 H' v
  4513. ;;;   Permission to use, copy, modify, and distribute this software
    3 x1 j4 R, P7 T# W' a4 U3 ]' _" R7 k
  4514. ;;;   for any purpose and without fee is hereby granted, provided& M1 |) [+ ^! i, N1 L% A
  4515. ;;;   that the above copyright notice appears in all copies and that( S" [, `' h4 ?! X$ b. ~2 A. G
  4516. ;;;   both that copyright notice and this permission notice appear in! e5 h8 {6 F. v3 ^/ _4 Q7 ?! X
  4517. ;;;   all supporting documentation.5 Q1 u2 @5 Z# v, v
  4518. ;;;
    * a0 O% z+ @' f5 J* L
  4519. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
    8 T" A1 y' y2 Z, U8 \
  4520. ;;;   WARRANTY.  ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR
    , q7 r) V8 b8 ?; U  n$ N
  4521. ;;;   PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.1 _3 p& s/ Y7 v" v
  4522. ;;;
    % `: Z% v" M& J3 N2 b" Z: V
  4523. ;;;   2 February 1992
    & W, ~* Q" k+ \* j
  4524. ;;;   
    + F2 W: J. v  f$ b! F
  4525. ;;;----------------------------------------------------------------------------
    1 e( n7 J1 b3 m9 w: n
  4526. ;;;   DESCRIPTION$ o( k% q% {: K
  4527. ;;;----------------------------------------------------------------------------
    : [  r7 V9 K% i* {, b, S4 ]
  4528. ;;;   C:DDCHPROP is a dialogue interface for the CHPROP command.
    ! }( d5 ^# S9 q/ g
  4529. ;;;- J1 A* ]! e3 T2 k4 B7 f
  4530. ;;;   The command looks similar to DDEMODES.  The main dialogue has an image
    , `3 d3 h& o# }+ q# E, K8 x/ N
  4531. ;;;   tile, 3 buttons (layer, color, linetype), and an editbox (thickness).   
    $ u$ X( |. f/ _
  4532. ;;;   The 3 buttons each launch a sub-dialogue containing a list and edit box.  " _7 ]. [0 P4 O
  4533. ;;;   The dialogues are all defined in the DDCHPROP.DCL file./ v5 w/ X  E$ B5 l$ S
  4534. ;;;
    5 t$ [# O+ k( r4 M. W2 i
  4535. ;;;
    : F2 L( g+ g7 D; ~. Q1 y# J6 V
  4536. ;;;----------------------------------------------------------------------------; I1 o; ?8 Z' }/ \1 _+ A( d
  4537. ;;;----------------------------------------------------------------------------
    4 k) @" C6 O4 |
  4538. ;;;   Prefixes in command and keyword strings: 6 ?3 h* y2 J+ h" b" u5 |; N
  4539. ;;;      "."  specifies the built-in AutoCAD command in case it has been        * @" ]7 `; @0 k& G/ w% k
  4540. ;;;           redefined.7 p  g! @, J. [9 @2 l3 q
  4541. ;;;      "_"  denotes an AutoCAD command or keyword in the native language  o+ s7 K% V( A6 w5 Q
  4542. ;;;           version, English.
    " \' q( |! K6 \* n+ i& o
  4543. ;;;----------------------------------------------------------------------------( ], n' N, `2 ~" x7 T' S
  4544. ;;;+ M6 d0 S$ d" j
  4545. ;;;
    8 A7 _0 p  ~1 u7 G4 B0 b
  4546. ;;; ===========================================================================
      ?* S$ p$ ^# S3 B5 w8 b
  4547. ;;; ===================== load-time error checking ============================
    7 g2 b; c8 S, l! s* O5 b. Y& H
  4548. ;;;! b5 w4 ?$ w3 N& P

  4549. 4 H7 C1 c( s, r% |
  4550.   (defun ai_abort (app msg)
      [3 b( H' V5 m9 g
  4551.      (defun *error* (s)
    ; W1 j1 Y# \3 `$ l
  4552.         (if old_error (setq *error* old_error))0 j# g  v5 A3 e) ?1 ~1 p
  4553.         (princ)
    6 Y& O8 z) m; C0 r; I, L
  4554.      )* G6 l- a2 o1 U
  4555.      (if msg
    $ i$ Q' z& b( G3 s
  4556.        (alert (strcat " Application error: "
      F, |2 @" e2 Y8 F
  4557.                       app6 p% ?9 Q1 m$ h. a6 O4 ]
  4558.                       " \n\n  ": y9 |( y1 X8 B) s( D  I
  4559.                       msg
    6 s& w' W+ ^) W% G0 p9 S( K' p
  4560.                       "  \n"; ~* b9 E4 [. E5 ]6 E
  4561.               )* }$ P# }2 s: S
  4562.        )
    + j, M' c9 q/ a4 a
  4563.      )) p! n0 b0 x2 H0 |& y
  4564.      (exit)2 R) T% ^/ y( D, t  {. w" a: j8 G
  4565.   )8 U2 b: u8 i# R  e! \- f
  4566. 4 I# D4 Q! N, w- \
  4567. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,) d' _% H' r: e  r6 _
  4568. ;;; and then try to load it.
    1 H, E2 s& U- L
  4569. ;;;
    $ c6 t! F+ R+ F! _+ g+ j
  4570. ;;; If it can't be found or it can't be loaded, then abort the
    7 i# v) s) `  H
  4571. ;;; loading of this file immediately, preserving the (autoload)* J2 e9 ^, `! g3 V: {/ z
  4572. ;;; stub function.* o9 S6 P3 t* R: C
  4573. ; r7 W* B) w( {+ O. U
  4574.   (cond
    : _. f! f2 E5 E- o6 z+ o
  4575.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    # Q, |- d0 o: E7 A9 n

  4576. ; A( k# V9 A/ p: E. i* e
  4577.      (  (not (findfile "ai_utils.lsp"))                     ; find it' B( E7 J  Y3 b" R% y
  4578.         (ai_abort "DDCHPROP"' T1 |% M% r2 ?: ^3 Y
  4579.                   (strcat "Can't locate file AI_UTILS.LSP."( E' Q# o: I) c' G3 g
  4580.                           "\n Check support directory.")))
    # v6 B, k7 t* g3 d
  4581. 2 {' u# L, [& p( @8 ?6 b
  4582.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it3 n2 n3 e$ W! I6 q, ~
  4583.         (ai_abort "DDCHPROP" "Can't load file AI_UTILS.LSP"))# ?4 H* E0 t2 R( S4 I) E% Z/ R) |
  4584.   )9 K, s- Q0 p( ^* c1 c# R
  4585. 1 v5 W0 ^  f" w% I
  4586.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    ! W# A0 P3 o% ~, E/ n1 ]: O1 d
  4587.       (ai_abort "DDCHPROP" nil)        ; a Nil <msg> supresses
    9 ^. p# C! E/ E; k0 r2 @: d
  4588.   )                                    ; ai_abort's alert box dialog.: A  q8 z, g! ^# u. u: ^4 A5 H

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

  5043. 0 n! G2 ?8 e5 l. s& O/ `- X/ x" d% b
  5044.     (if (= ltname "CONTINUOUS")
    5 Z; [9 m7 [- |7 f
  5045.       (setq mdashlist (list "CONT")), {$ j1 u# z. E6 S; J
  5046.       (setq mdashlist
    ' }- U3 A- W3 H( M# T, i) H- n
  5047.             (append mdashlist (list (add-mdash ltlist)))
    2 b) z! c/ O7 _3 d9 z
  5048.       )
    ( {! w" h% w, i2 A9 p( T
  5049.     )" Q- J, U% z6 T# _  k% C0 r- a
  5050.     (while (setq ltlist (tblnext "LTYPE"))
    8 a& Z. z' u2 {- U/ }# R. b) i
  5051.            (setq ltname (cdr (assoc 2 ltlist)))
    7 M- Q* S0 p7 X
  5052.            (setq ltnmlst (append ltnmlst (list ltname)))
    4 p; F1 I1 C2 z- k, Y8 _' \# j
  5053.            (setq mdashlist
    " _/ Z& I2 H1 a* c, ]7 W; }
  5054.                 (append mdashlist (list (add-mdash ltlist)))
    2 b: Q- P  `$ x# k: F0 T9 ]
  5055.            )
    % G' T2 }3 F0 T# R1 }
  5056.     )4 J4 Y6 I: F% T$ s
  5057.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))
      H  |. x5 O* \1 M
  5058.     (setq mdashlist  (cons nil mdashlist)): D4 a8 ]$ z# h$ F% D
  5059.     (setq ltnmlst (cons "BYLAYER" ltnmlst))/ P* F  M" S9 h8 s
  5060.     (setq mdashlist  (cons nil mdashlist))3 t. F6 X' e) y: i- X
  5061.   )$ I7 r8 Q' M  F7 K% @
  5062.   ;;9 C: g0 u( F; o9 P
  5063.   ;; Get all the group code 49 values for a linetype and put them in a list 9 v* Z' B4 @! K& C4 `
  5064.   ;; (pen-up, pen-down info)1 U( x) q" m# v6 Y- k4 q
  5065.   ;;1 f  S0 a" Y  T7 o
  5066.   (defun add-mdash (ltlist1 / dashlist assoclist dashsize)- t6 f' Y7 B% ^4 F9 _( C4 h' Y0 _
  5067.     (setq dashlist nil)& A0 q% t4 F5 [7 c
  5068.     (while (setq assoclist (car ltlist1))0 W* L9 X8 q# [. _( f5 T
  5069.       (if (= (car assoclist) 49)
    ! |9 Z3 }! t" z+ z" w$ Z8 s9 d
  5070.         (progn0 L: z3 {4 S4 R9 E
  5071.           (setq dashsize (cdr assoclist))
    " [) w2 d% E- X+ Q& ]9 q) ?! ~
  5072.           (setq dashlist (cons dashsize dashlist))
    4 e9 m5 P/ Z1 _
  5073.         )
    7 p. z/ C* k. l# m, W' W
  5074.       )+ x# C5 U1 I5 C, m9 @
  5075.       (setq ltlist1 (cdr ltlist1))
    1 ^. j) f! Q1 ?3 H8 _  g  d9 F
  5076.     ), J8 h& L. t7 R% U
  5077.     (setq dashlist (reverse dashlist))
    : H3 y1 @7 h2 o; ?
  5078.   )
    2 M' F  t% j2 q& z% l( R
  5079.   ;;
    ! q5 z, _5 g- I3 {( }$ D
  5080.   ;; Color a tile, draw linetype, and draw a border around it( b! r( W7 _5 p* V
  5081.   ;;
    9 c- [$ _, {. n' ]  e( {- f
  5082.   (defun col_tile (tile color patlist / x y)
    3 {/ t) U  ~2 i7 [7 I
  5083.     (setq x (dimx_tile tile))+ M% [: O0 T  }. N
  5084.     (setq y (dimy_tile tile))' {; k! I8 q9 a7 F& J: u, @- u
  5085.     (start_image tile)
    6 z) J3 c! Q5 y, g& \8 |9 P* c
  5086.     (fill_image 0 0 x y color); E4 n$ G0 }/ A7 f1 b, z- a
  5087.     (if (= color 7)) r5 Q0 x- \4 D
  5088.       (progn- {8 F% `; c2 j$ s4 o7 k, Z
  5089.         (if patlist (drawpattern x (/ y 2) patlist 0))
    $ r& A- N" H8 @7 x7 T& I
  5090.         (tile_rect 0 0 x y 0)
    , O" @) c" e/ ?" k  _' c# n2 @: b
  5091.       )" `. d0 U! q. b# N  b
  5092.       (progn
    : Q+ u" Z: P; Q5 S  K
  5093.         (if patlist (drawpattern x (/ y 2) patlist 7))$ e4 O% q5 d8 Z; k) \
  5094.         (tile_rect 0 0 x y 7)
    , H8 `! B' M% m! a1 J. X
  5095.       )8 x" b! J8 `  J. O0 W7 }6 K. Y
  5096.     )
    % c0 n6 \& N7 ~* F
  5097.     (end_image)
    # I/ R( e/ K0 g& M( P: f% }# {
  5098.   )# S% l9 ^& H/ z* ^; ?
  5099.   ;;# @# p8 o! H" |2 w7 t
  5100.   ;; Draw a border around a tile4 Y2 v" K+ G1 U1 e
  5101.   ;;+ q: H8 k+ T* ?# _, J2 F+ R/ E2 O9 \
  5102.   (defun tile_rect (x1 y1 x2 y2 color); E7 X' T! |3 l% p
  5103.     (setq x2 (- x2 1))* l2 b# i' F. V7 ~
  5104.     (setq y2 (- y2 1))
    3 z' q9 M7 O0 D/ L! F( G- b) e
  5105.     (vector_image x1 y1 x2 y1 color)
    & d+ a3 {$ e0 t, |2 b
  5106.     (vector_image x2 y1 x2 y2 color); O5 B* N$ }$ ^1 \- H
  5107.     (vector_image x2 y2 x1 y2 color)
    ' C8 w# f& P% G* H/ u2 Y8 _
  5108.     (vector_image x1 y2 x1 y1 color)
    ; E7 u5 T2 h# @, \% U0 k; e
  5109.   )
    3 }+ Z- p9 l9 b# G
  5110.   ;;
    4 a- ~/ g/ k  @" M8 i0 ]/ Y
  5111.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image
    * P) o( j8 ?5 O/ _8 b1 H( B' N3 q5 t8 D
  5112.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a
    1 L5 R" i: S% L5 F: b$ C0 x# f; ?9 ]
  5113.   ;; list of numbers that define the linetype, and color is the color of the
    # P( \" y5 T0 }2 P
  5114.   ;; tile.
    ) T- S5 ?* |4 Z. L+ ^; V! l. o
  5115.   ;;2 M' b% K, V5 H& A" C) p0 P. y" M
  5116.   (defun drawpattern (boxlength y2 pattern color / x1 x2" l5 m+ G. w* W% G) k: C# h
  5117.                       patlist dash). V1 ?4 A0 U" |* q" n% b
  5118.     (setq x1 0 x2 0)) `, T/ {+ ^3 @' I6 S6 B
  5119.     (setq patlist pattern)
    " }6 c# ~0 Y! @% q
  5120.     (if (= patlist "CONT")
    2 C! v0 y3 o6 _, P4 k- R- R
  5121.       (progn 8 U' X! w! R# X4 ~7 o- j
  5122.         (setq dash boxlength)( T' d3 _; C/ Q# B( d* J) a; U
  5123.         (vi)4 O8 W, n' @! t' O3 U; g5 q3 R
  5124.         (setq x1 boxlength)
      F& G4 ?6 ]0 p8 W- d0 y
  5125.       )
    9 k( {$ j2 i( R# W: @# w* Z+ k- W
  5126.     ): h! x& g; a; f8 v2 t
  5127.     (while (< x1 boxlength)8 S' r0 Y1 A; M3 m
  5128.       (if (setq dash (car patlist))5 q  \! u& Y9 j: M1 e2 p; ?- N
  5129.         (progn3 k+ T$ w, b& y& c4 R# ?
  5130.           (setq dash (fix (* 30 dash))); F1 a, T5 j0 g
  5131.           (cond
    * ~* V' w# k3 Q! {# ?
  5132.             ((= dash 0) 8 G% Z2 T' ?! F! c+ k. ~5 s% r
  5133.               (setq dash 1) , T9 s, p3 @% \  J
  5134.               (vi)4 @/ k4 x/ X" W" B5 J
  5135.             )4 ~3 S# }  L1 U& M6 ~! o  ^
  5136.             ((> dash 0)
    " j8 @" q" y# ~9 I
  5137.               (vi)
    3 F- y- z. q/ o
  5138.             )
    % A& S1 U. W) ^: _; k6 c# T9 R
  5139.             (T ( h' i9 ?- L4 d- K4 h
  5140.               (if (< (abs dash) 2) (setq dash 2))' S4 T0 _9 z5 j  Y- G. O1 R3 N
  5141.               (setq x2 (+ x2 (abs dash)))
    4 p5 r# B' T6 u6 E: k/ m; R) G
  5142.             )
    - S! j  M/ p9 D. R, {9 e/ P4 [/ L4 Y
  5143.           )
    0 M0 Y$ E  q! J
  5144.           (setq patlist (cdr patlist))
    * O9 x3 ^+ D- W% x( Y8 L7 M
  5145.           (setq x1 x2)/ |( N; v, Y$ u
  5146.         )
    3 p' r' `5 o- X0 L/ `0 e. H
  5147.         (setq patlist pattern)
    2 o$ m2 _" E% Z$ k# s
  5148.       )# L  o. S3 r; ]) G4 {
  5149.     )
    ! ]* v# ^$ }5 @
  5150.   )
    : K' m) h" E, K
  5151.   ;;- I8 X% @" u- j( T) x$ e. q: {
  5152.   ;; Draw a dash or dot in image tile& ^! `  m" b- K% I! M1 b# g
  5153.   ;;
    ! M+ W) X) X: r) L
  5154.   (defun vi ()
    # s, d0 n1 Q* [) t: n5 Y. ^
  5155.     (setq x2 (+ x2 dash))7 Q% ]* f, y8 D+ k+ X
  5156.     (vector_image x1 y2 x2 y2 color)
    ) R/ V' U9 }" s1 i- n+ W* ~9 ^$ ^
  5157.   )
      H' {8 X% b8 a, G. d0 L5 s, g
  5158.   ;;
    3 e' Q/ |& w8 v! f# P' {$ u
  5159.   ;; This function takes a selection and returns a list of the color, linetype,
    + \/ s7 y* y+ v, A, y
  5160.   ;; layer, and thickness properties that are common to every entities in the
    7 T! w3 I! ~, F3 j
  5161.   ;; selection set - (color linetype layer thickness).  If all entities do not 3 ^- ?! Q" Z. ^2 M$ c
  5162.   ;; share the same property value it returns "Varies" in place of the % I  ^+ A# I$ C: P9 @, g
  5163.   ;; property value.  i.e. ("BYLAYER" "DASHED" "Varies" 0)
    " P/ s" t" S: l  [
  5164.   ;;
    6 A, `) n+ [3 \
  5165.   (defun getprops (selset / sslen elist color ltype layer
    2 v, k" S# V% E: m6 R+ z; M; ~
  5166.                             thickness go chk-col chk-lt chk-lay chk-th ctr)5 B/ M& G5 n" G
  5167.     (setq sslen (sslength selset))3 ^; L" U) w# ?
  5168.     (setq elist (entget (ssname selset 0)))
    . q) }) N6 E6 |
  5169.     (setq color (cdr (assoc 62 elist)))! ~, f6 M7 o/ S) o& |& `! Z3 W
  5170.     (if (not color) (setq color 256))% z6 z5 v: y1 [; V" w
  5171.     (setq ltype (cdr (assoc 6 elist)))
    " J% u- ]! Y' G6 M! ~- V1 Z
  5172.     (if (not ltype) (setq ltype "BYLAYER"))9 d# f5 e" N# N
  5173.     (setq layer (cdr (assoc 8 elist)))( _$ h( I: w, ?8 ]& E. n
  5174.     (setq thickness (cdr (assoc 39 elist)))' z% B  v" V7 L/ n1 y
  5175.     (if (not thickness) (setq thickness 0))
    3 r8 s4 H1 X* w' M8 e+ R0 {6 {
  5176.     (setq go T chk-col T chk-lt T chk-lay T chk-th T ctr 1)% U2 b! p7 `3 I- T; B( L

  5177. 4 I# F; h. n& v- d7 |% W4 p) D6 D3 U
  5178.     ;; Page through the selection set.  When a property
    1 M- {, z9 f- j4 M; U4 x; T3 G
  5179.     ;; does not match, stop checking for that property.1 K- x8 V5 o6 F4 d; o( U
  5180.     ;; If all properties vary, stop paging.
    . U% L) o3 V1 C6 ]: F

  5181. 9 q  ~2 A! H' J, G1 M  l7 z/ ]
  5182.     (while (and (> sslen ctr) go)
    # T% U. N8 z! ?
  5183.       (setq elist (entget (setq en (ssname selset ctr))))0 J% o: i+ d9 }* i7 w
  5184.       (if chk-col (match-col))' W- u9 K- v. g+ j) v+ P
  5185.       (if chk-lt (match-lt))
    - l' L4 j. [/ h' n5 ]
  5186.       (if chk-lay (match-lay))4 b. k0 d- b2 k  q
  5187.       (if chk-th (match-th))
    7 v. g7 R4 c. y+ D3 |6 `
  5188.       (setq ctr (1+ ctr))( g6 {9 ]% w: r3 ?) a
  5189.       (if (and (not chk-col) (not chk-lt) (not chk-lay) (not chk-th))8 F, h8 ~# b. A3 U
  5190.         (setq go nil)
    $ Q' z% o# n4 F/ P# x
  5191.       )
    - L* m( Y4 R; G" y# w7 g. I
  5192.     )
    4 [0 |) p" x( l4 {7 n( ^# |
  5193.     (list color ltype layer thickness)
    2 I3 e4 o* C7 [* N0 w( X
  5194.   )) ^, U* W4 _8 U8 s, f  b3 R; N

  5195. $ I* y/ _4 u5 k' S& L
  5196.   (defun match-col (/ ncolor); h( ]3 F5 z' @0 ~+ g
  5197.     (setq ncolor (cdr (assoc 62 elist)))- Z7 o8 [" y$ r+ f1 S/ E* t; f& }  t
  5198.     (if (not ncolor) (setq ncolor 256))
    4 r; c8 L( r% @6 _$ \/ S2 \( |
  5199.     (if (/= color ncolor)8 R3 t5 U% _# q3 L. J
  5200.       (progn* u4 n6 u6 _" Q: g
  5201.         (setq chk-col nil)
    7 ?, R: ]; u& J
  5202.         (setq color nil)& E! I/ x# @+ J8 p
  5203.       )
    3 p. z% V; g( B  r2 ?
  5204.     )) s/ d, C7 `# b- e: |( ^8 J
  5205.   )- `% p! s1 S1 K& K+ ^8 m3 v3 t6 K

  5206. / X( O( ~1 b# H5 Q+ X
  5207.   (defun match-lt (/ nltype)
    % E% K, ]' T& [9 b. r! ]6 j
  5208.     (setq nltype (cdr (assoc 6 elist)))
    & Y! F  B+ F# U! N. }2 j# d
  5209.     (if (not nltype) (setq nltype "BYLAYER")): A9 L2 {! ]8 t( x: K% l
  5210.     (if (/= ltype nltype)
    0 J3 F+ u0 W: k3 g, M
  5211.       (progn
    8 G7 d: U$ D$ k
  5212.         (setq chk-lt nil)0 P8 m: o7 X. ^+ [4 Q* N) O
  5213.         (setq ltype "Varies")
    8 v$ E* F5 Z! n
  5214.       )$ d7 M; I: o" V6 `
  5215.     )
    ; k( G4 ]/ s5 ^' \: h
  5216.   )
    # b( o/ i/ M% P5 ^# V* G1 K

  5217. , e( D/ Z8 D9 Q' Z2 X. E5 |% q* k  _
  5218.   (defun match-lay (/ nlayer)4 T6 |" v9 y8 \
  5219.     (setq nlayer (cdr (assoc 8 elist))), w( A6 D  k8 D$ l+ z' V* }
  5220.     (if (/= layer nlayer)6 a  w4 i; D% ]# }* u
  5221.       (progn
    + a/ L7 y. {% V- N) V) E
  5222.         (setq chk-lay nil)( k. f+ V  |. `" z, d
  5223.         (setq layer "Varies")
    " H0 z, I+ x( H
  5224.       ); ~% M$ i8 A3 F$ ~' d; E3 ~
  5225.     )
    1 g! B, k5 S2 [) z4 o- z
  5226.   )
    / j' q+ w1 V+ y3 v. u. h
  5227. 6 ?- U- G" Q. ]( w9 N
  5228.   (defun match-th (/ nthickness)
    . t2 x3 y+ k) E
  5229.     (setq nthickness (cdr (assoc 39 elist)))
      h" w" f+ ~: C% {: ^+ @
  5230.     (if (not nthickness) (setq nthickness 0))
      e  b! i) l$ f( }) C9 `6 I
  5231.     (if (/= thickness nthickness)
    0 Z% m% u; \7 A
  5232.       (progn
    $ o$ P2 A3 N6 a0 N
  5233.         (setq chk-th nil)
    - \5 l4 j* i4 b8 G5 w% n
  5234.         (setq thickness "Varies")1 @+ I0 _7 h$ Z, N# H( @( ~3 p' d
  5235.       )4 L* i# e5 n7 p, U# Q: F
  5236.     )# O$ m' M* {2 x  O$ P2 M$ E! u
  5237.   )
    2 [* g" T( g' |
  5238. 7 J3 s, T: U! l, }8 w( t
  5239.   ;;4 C4 F( X7 s# h1 `# f: ^. z
  5240.   ;; If an item is a member of the list, then return its index number, else ! m6 v$ i* Y5 ?( \8 ~3 z( @2 @! D+ u
  5241.   ;; return nil.
    & Q. A# B* i# ]# L
  5242.   ;;
    & E% J% J3 u/ o8 D6 ^# \
  5243.   (defun getindex (item itemlist / m n)
    4 C  \0 m! y4 {9 l! z. L8 F
  5244.     (setq n (length itemlist)); g6 l# b0 d  ~& f8 W. r: ^
  5245.     (if (> (setq m (length (member item itemlist))) 0)$ f7 u+ q  Z. ^4 e2 P
  5246.         (- n m)8 `$ _% j) M) |. \* N! H3 @- K
  5247.         nil
    7 Q' {) d% d0 j
  5248.     )3 I! b9 i5 y* k- a" x/ }! ]
  5249.   )
    : E. j9 h- b% D- m3 I3 V
  5250.   ;;
    " S( J$ z# ?" M/ A- E3 y, \
  5251.   ;; This function is called if the linetype is set "BYLAYER". It finds the : z3 R+ K2 z; {4 ]0 y6 v2 ^; q
  5252.   ;; ltype of the layer so it can be displayed beside the linetype button.: q+ y% a+ N1 v. S( x- j* j+ u
  5253.   ;;: J8 I$ J$ c5 z% A5 W3 J
  5254.   (defun bylayer_lt (/ layname layinfo ltype)  u' x" R3 v& O2 G! Z
  5255.     (if lay-idx
    , V6 E$ R; ^/ g# a8 Q
  5256.       (progn% |: |+ i0 z! L3 O5 R8 V
  5257.         (setq layname (nth lay-idx laynmlst))
    1 i# e6 `: k, S7 x" U* X4 a
  5258.         (setq layinfo (tblsearch "layer" layname))- ^: O6 ~% w* r) {) Q7 `0 j
  5259.         (setq ltype (cdr (assoc 6 layinfo)))* A8 M% f: ~3 b7 r, L% x
  5260.         (strcat "BYLAYER (" ltype ")"). C5 j6 P* z: w( y# R
  5261.       )
    9 C1 |5 @" f( t) `+ W, W
  5262.       "BYLAYER"
    " x* h) m1 C1 y( h+ ?
  5263.     )) v7 {% F, Y4 o0 s# |& ]8 j
  5264.   )
    - i  }3 S5 f) I6 h8 @0 W" z; c: k$ n
  5265.   ;;) Y8 c8 r1 d  s, q. z
  5266.   ;; This function is called if the color is set "BYLAYER".  It finds the
    $ t+ o6 }. U$ e- W. n6 r$ l$ u
  5267.   ;; color of the layer so it can be displayed  beside the color button.; m) `5 F8 ^5 W, ?# M+ Z5 @% @
  5268.   ;;( l7 E9 ^: o; n! ~, i
  5269.   (defun bylayer_col (/ layname layinfo color). q# C; u: c9 w# I$ S
  5270.     (if lay-idx
    % L9 H$ z9 h& `  p% t# r! x
  5271.       (progn
    & |3 j7 u4 |# d3 s
  5272.         (setq layname (nth lay-idx laynmlst))
    9 A' a7 [1 L3 u0 k( C
  5273.         (setq layinfo (tblsearch "layer" layname))
    " @& s+ ^( g1 |0 \
  5274.         (setq color (abs (cdr (assoc 62 layinfo)))), g5 d) p8 u1 V( g- c1 `0 O: Y' P
  5275.         (setq cn color)
    - Q' E  F0 q% u. e2 d
  5276.         (strcat "BYLAYER (" (colorname color) ")")
    " I; D; Z0 U4 C
  5277.       )
    # C$ W3 W0 ]9 d' V1 R  W# g
  5278.       (progn- k! ?8 H  l( S9 K, v# Y
  5279.         (setq cn 0)
    4 ^* G( g  }7 J
  5280.         "BYLAYER"
    % b% x1 ]' E' Z
  5281.       ): q1 e( S# e- H, j
  5282.     )1 N- z' [, I) T, f- O% ^
  5283.   )
    0 p) z5 r4 C# c& H9 e' G6 }
  5284.   ;;
    * w2 q/ K% D& B) p3 V7 z8 _# _8 G
  5285.   ;; If there is no error message, then close the dialogue" _9 J% ]" p3 A6 p  s
  5286.   ;;3 U% z* D) h  L7 l+ k* A9 `+ B
  5287.   ;; If there is an error message, then set focus to the tile2 C7 Q9 b% g4 ?! R& F0 y
  5288.   ;; that's associated with the error message." C& s7 b# w* _* X
  5289.   ;;
    " X. b; W& [$ t( ]/ U: r
  5290.   (defun test-ok ( / errtile)
    , _" O& q+ @; p  n, [8 V- l6 E
  5291.     (setq errtile (get_tile "error")); R7 n' E- T6 |
  5292.     (cond
    3 w' y3 d. S3 x# Y5 O
  5293.       (  (= errtile "")
    ; }9 B  }: Y4 e" M  Q
  5294.          (done_dialog 1))
    5 T/ ^0 A: f+ x5 K  q
  5295.       (  (= errtile "Invalid thickness.")2 I' A2 b. k% I, S' o2 M6 ^
  5296.          (mode_tile "eb_thickness" 2))
    3 \% Z7 d: p& U. D" e; M' R+ Z
  5297.     )9 m6 O; @; o' x$ W  F- i( C% L0 m
  5298.   )+ O" i7 x) \2 G2 k. P
  5299.   ;;
    3 K; }: m+ ~2 {" U
  5300.   ;; A color function used by getlayer.  K% V4 b0 x$ _7 e* {5 l1 {
  5301.   ;;
    * B8 ^/ v1 _+ l7 }8 z0 p% S
  5302.   (defun colorname (colnum)' {/ x3 ~( }+ w) v& D
  5303.     (setq cn (abs colnum))# `7 v& v4 t$ ~( x+ p  Z( |
  5304.     (cond ((= cn 1) "red")! w4 ]5 L( E/ m; m7 ^$ ]
  5305.           ((= cn 2) "yellow")
    . J) x0 x% l: j
  5306.           ((= cn 3) "green")
    " V/ I- W4 T* t/ L* p& }
  5307.           ((= cn 4) "cyan")
    ! v5 I4 E, s  `' N
  5308.           ((= cn 5) "blue")
    # B; d& c1 U8 d0 U' }
  5309.           ((= cn 6) "magenta")
    ; F) q( d, ], Q+ \" Y/ A6 {8 O  J
  5310.           ((= cn 7) "white")
    + H- j& F2 O" z5 Z; W; q% e
  5311.           (T (itoa cn))5 p' G" J7 z+ T) o9 N) X# \
  5312.     )
    $ F7 W) a( R& k" g2 U3 K) W; R+ h$ N
  5313.   )6 H  g2 r5 |$ _. r7 ~5 \$ [

  5314. # ]1 A) Z) r+ S$ \1 X
  5315. ;;; Construct layer and ltype lists and initialize all& m2 t4 Y( \0 L" H: ]5 ]! @2 g; L6 y7 s
  5316. ;;; program variables:
    4 Z) w9 }+ m4 L. q/ R+ H6 b( H; ^

  5317. 7 [4 \3 d; C. f5 ~6 h0 h
  5318.   (makelaylists)                     ; layer list - laynmlst0 L9 I' i. V" Y
  5319.   (makeltlists)                      ; linetype lists - ltnmlst, mdashlist
    + p. k+ H$ j0 z) K1 V
  5320.   ;; Find the property values of the selection set.
    7 b& Y8 a) q+ E7 o
  5321.   ;; (getprops ss) returns a list of properties from
    ) e6 s* R0 }* c1 R+ E* g
  5322.   ;; a selection set - (color ltype layer thickness)./ H- T% W. K5 C: H
  5323.   (setq proplist (getprops ss))
    & g5 U- y; t$ f1 K$ c( Z/ V" d
  5324.   (setq ecolor (car proplist))# W' [2 F0 x9 G
  5325.   (setq eltype (cadr proplist))3 i- b: y& f2 o2 Z0 C2 m: c
  5326.   (setq elayer (caddr proplist))( h' d& ~5 \4 v; A& v" d
  5327.   (setq ethickness (cadddr proplist))# J1 `) B: H( g/ v
  5328.   ;; Find index of linetype, and layer lists
    " R, y3 ]4 y/ y: O) ^$ ^
  5329.   (cond
    % ?( p% G8 h: c8 l
  5330.     ((= eltype "Varies") (setq lt-idx nil))( b2 w/ t6 D  E1 R; O
  5331. ;   ((= eltype "BYLAYER") (setq lt-idx (getindex "BYLAYER" ltnmlst)))3 U; \( z. l7 v/ a% O% }! ?
  5332. ;   ((= eltype "BYBLOCK") (setq lt-idx (getindex "BYBLOCK" ltnmlst)))# w% f7 Y  E5 ?, g
  5333.     (T (setq lt-idx (getindex eltype ltnmlst)))* J; Q! h4 R4 W# l/ E( e7 P
  5334.   )
    8 N0 D6 t7 l1 g" {0 g5 W+ d
  5335.   (if (= elayer "Varies")
    ) h7 X9 f8 ]" X$ G- ]
  5336.       (setq lay-idx nil)
    * C8 C* G# h: y! @( |
  5337.       (setq lay-idx (getindex elayer laynmlst))' @4 P5 k  i. r2 n* Z# I
  5338.   )
    3 ]6 r, w" j5 g' L. o$ E
  5339.   (if (= ethickness "Varies")7 W1 ]- O0 K: t' c7 \
  5340.       (setq ethickness nil)
    3 {" ~3 j% c3 t# ?, ^! G
  5341.   )4 b$ x1 u$ A' {+ p. u( Q
  5342. 4 Z1 ?/ O& X9 a5 u
  5343. )   ; end (ddchprop_init)1 p/ r8 X2 T1 U8 j& `3 b$ M4 W) G
  5344. 3 l" j7 M* d# g% |9 P4 C
  5345. ;;; (ddchprop_select)
    5 ^' [2 F( L& x- e" x) O
  5346. ;;;: o+ [* E7 N- l; A
  5347. ;;; Aquires selection set for DDCHPROP, in one of three ways:
    % H7 R1 C4 M; e- r" `) \
  5348. ;;;
    1 L0 w$ J0 {9 x! G- B
  5349. ;;;   1 - Autoselected.
    ; R8 U5 m( {  f( k- G& \
  5350. ;;;   2 - Prompted for.
    1 U/ B# Z7 x: T; g3 [" o* j) s
  5351. ;;;   3 - Passed as an argument in a call to (ddchprop <ss> )! q8 `- ^8 W4 P# Q/ Q$ e
  5352. ;;;: s( P! E! i8 q* H+ S- `' \3 V& M& y
  5353. ;;; The (ddchprop_select) function also sets the value of the
    ! I+ y8 U4 n0 ]" D0 o
  5354. ;;; global symbol AI_SELTYPE to one of the above three values to& o8 ^* n5 ~1 T- Z' ]! Q. G
  5355. ;;; indicate the method thru which the entity was aquired.
    ! l7 e+ Y3 C9 N: F$ J1 g; b
  5356. & J2 S7 ]$ B0 A- B
  5357. # ?* i2 h& e. K/ p
  5358. (defun ddchprop_select ()
    $ \  f/ ^/ N$ S$ z! z3 ?/ [1 L
  5359.    (cond
    3 A! s' X& g" D
  5360.       (  (and ss (eq (type ss) 'pickset))        ; selection set passed to
    $ v$ @$ T5 Q0 f) B! a
  5361.          (cond                                   ; (ddchprop) as argument
    8 m( b& [+ g3 ]  S& G
  5362.             (  (not (zerop (sslength ss)))       ;   If not empty, then/ ]( V4 I  X/ F" }- `
  5363.                (setq ai_seltype 3)               ;   then return pickset.
    + k- _  \+ o% h
  5364.                (ai_return ss))))2 a+ s2 z, _0 Z& ~
  5365. ( P9 N* x3 p1 x4 G1 J7 ]" y+ e) l
  5366.       (  (ai_aselect))                          ; Use current selection
    ' H) W7 X+ g% n* g; ]" ^
  5367.                                                 ; set or prompt for objects  `* v, e2 t$ [# {

  5368. ! r4 m9 i' |7 S& ~
  5369.       (t (princ "\nNothing selected.")' _& V1 r3 p! x
  5370.          (ai_return nil))
    * N/ j0 y" {6 y+ V9 y) C
  5371.    )
    & G* H/ j  B& ]4 E
  5372. )
    9 h+ c( ~2 Z# k4 J4 p( q) G
  5373. / V7 S' |) n7 I& \8 T. {' z
  5374. ;;; Define command function.5 E5 l. H) v6 Y/ j6 q+ K% s9 q0 D

  5375. 4 {4 S. k+ a5 `
  5376. (defun C:CH (): w- T; l9 U5 D$ D  J
  5377.    (ddchprop nil)" a! D1 c; _3 b  x. O( E- f1 V2 t% t
  5378.    (princ)2 |7 t  w+ w- w6 ?% T2 P
  5379. )
    5 N8 E( c  Z( o+ o2 G
  5380. . H- F# o( K9 n
  5381. * G$ g/ ]" {& @6 l
  5382. ;;; Main program function - callable as a subroutine.
    , O5 U" d8 F- C3 a" U- e
  5383. ;;;- o9 _- ]* `# K
  5384. ;;; (ddchprop <pickset> )- s- c3 J" F1 a+ E6 D3 T
  5385. ;;;4 U. m$ O- K7 Y3 w( z
  5386. ;;; <pickset> is the selection set of objects to be changed.
    $ D4 L1 q: S) l+ g- _. w* m
  5387. ;;;1 I: f- ?# i+ O; a
  5388. ;;; If <pickset> is nil, then the current selection set is7 B6 L+ g! W2 l8 z  b
  5389. ;;; aquired, if one exists.  Otherwise, the user is prompted
    1 ~. H9 N) l9 B3 J0 u' G
  5390. ;;; to select the objects to be changed.
    3 o& F. v2 T  g8 `$ J
  5391. ;;;
    : e2 X, z, V8 U: d; D
  5392. ;;; Before (ddchprop) can be called as a subroutine, it must1 r  c( b2 I. E; u  Z
  5393. ;;; be loaded first.  It is up to the calling application to
    - b; R# U3 M+ v' c
  5394. ;;; first determine this, and load it if necessary.
    2 B1 @# M- G3 o
  5395. 9 Z5 ^/ @" A- U3 ~" E+ t) z
  5396. (defun ddchprop (ss  /
    # M' u: G, j' ?
  5397. . f! Q3 Y% @! d- Q7 D
  5398.                   add-mdash      ecolor          ltedit_act      s
    : m2 d" }. ~' k. P
  5399.                   assoclist      elayer          ltidx           selset
    - Z# l6 a9 \; Y" c9 P4 ?
  5400.                   bit-70         elist           ltlist          set_col_tile
    1 U8 |0 U% k+ C, g3 m$ s$ Z
  5401.                   boxlength      eltype          ltlist1
    - G+ G, h4 ~% O# \! h( J4 O
  5402.                   bylayer-lt     en              ltlist_act      sortlist  ]' ^8 U0 \) Y' U( t# _
  5403.                   bylayer_col    ethickness      ltname
    / G" P; Y8 B7 L! b# t) c2 R
  5404.                   bylayer_lt     fchk            ltnmlst         sslen
    3 j" C# E% L6 \% F) v
  5405.                   call_chp       frozth          ltvalue         templist6 R# U+ n) g4 X$ s; G; }1 t/ k
  5406.                   chk-col        getcolor        ltype           temp_color# G! \4 K9 Q5 [
  5407.                   chk-lay        getindex        m               test-ok
    + F% ?) v1 y# J% \
  5408.                   chk-lt         getlayer        makelaylists    testidx
    * H3 M5 S4 z6 E2 {& j
  5409.                   chk-th         getltype        makeltlists     testlay" F6 w. x# z6 n2 v) M
  5410.                   cmd            getprops        match-col       th-value" q2 O8 y3 Z. Q" P5 a; O
  5411.                   cmdecho        getthickness    match-in        thickness" R6 J/ m$ e) `# M6 ?. j+ y0 ?1 Z
  5412.                   cn             globals         match-lay       tile
    7 }2 Y6 T' v3 o& S8 r
  5413.                   cnum           go              match-lt        tilemode9 u% I- B; X1 ^9 o3 t4 k7 t
  5414.                   col-idx        index           match-th        tile_rect
    ; G5 u9 [! s+ t7 a  @! P: ?) c9 ?# }
  5415.                   colname        item            match_col       vi5 a! a/ Q, a7 D
  5416.                   colnum         item1           mdashlist       vpf0 _0 o4 c1 A  V
  5417.                   color          item2           n               vpldata1 X8 o& {' e6 O3 F0 u+ x0 [
  5418.                   colorname      itemlist        name            vpn* s, B$ Y6 b" e
  5419.                   col_def        lay-idx         ncolor          x
    ; Y- C  H' G& N3 D9 B  T6 R2 h; F' A
  5420.                   col_tile       layedit_act     nlayer          x1
    ' I9 I, h; ^0 v2 G
  5421.                   ctr            layer           nltype          x2' b4 {* n8 s% S3 ~: L4 C
  5422.                   cvpname        layinfo         nthickness      xdlist4 M7 T% j( N& x, i9 j
  5423.                   dash           laylist         off             y3 D" D' C9 C3 P$ r& K5 r
  5424.                   dashdata       laylist_act     old-idx         y1
    . G* z4 r4 E. A; x% [. d3 J$ W3 c4 \
  5425.                   dashlist       layname         olderr          y2- p7 c: l3 ~3 o: i* K0 n. }
  5426.                   dashsize       laynmlst        on              undo_init8 `$ k, S: g( Z. e) n3 M
  5427.                   dcl_id         layvalue        onoff
    - r" q% b3 D* d( @$ I) ~: o$ W
  5428.                                  linetype        patlist2 h5 m2 e; E6 }  n9 F/ g3 e7 F
  5429.                   ddchprop-err   list1           pattern# p4 H$ H# _3 w8 J/ k  O
  5430.                   longlist       proplist# z8 V9 e* y4 G1 p7 |  ]
  5431.                   lt-idx         reset-lay
    4 S2 ^- W" M! G: {
  5432.                   drawpattern    ltabstr         reset-lt: u5 Q+ |' f) @, I" X* D5 }
  5433.                 )7 D4 x; S9 s. I  y8 f

  5434. * D0 A2 ]. U. O, @0 f9 l
  5435.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    ) L) d' x: R; u: {+ S' x0 c
  5436.         old_error  *error*            ; save current error function
    ( d1 M* c# U" ~  w" v
  5437.         *error* ai_error              ; new error function
    ) z2 C" z+ V. O5 T4 q6 C0 u9 G
  5438.   )
    0 }6 j2 E' L4 z. a9 G2 d) e
  5439. 3 q* J, {7 g: T  G
  5440.   (setvar "cmdecho" 0)
    + j( J) h9 c/ f, N+ y

  5441. / G' v/ E# j! P  }& a% w* @( f2 y" o
  5442.   (cond. ?$ U( E& h( u4 p
  5443.      (  (not (ai_notrans)))                      ; Not transparent?- f$ m' f" P+ i8 v" v
  5444.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?) X) B0 S3 d) v
  5445.      (  (not (setq dcl_id (ai_dcl "ddchprop")))) ; is .DCL file loaded?
    7 o: Q0 ?3 I) e) J9 t, I
  5446.      (  (not (setq ss (ddchprop_select))))       ; objects to modify?: {5 l: h% Q( K4 c) V& f! ^& S
  5447. ! X9 R! L% c4 z8 y! d  A
  5448.      (t (ai_undo_push)- Y) N' N5 b+ c% F/ j7 |* t
  5449.         (ddchprop_init)                          ; Everything's cool," F8 Z# M4 g. Q; m
  5450.         (call_chp)                               ; so proceed!9 Z3 `. \8 f/ D" d6 W/ ]
  5451.         (ai_undo_pop)3 D6 D1 l) \0 h1 ~
  5452.      )* y/ c/ e+ z& x: m
  5453.   )
      m$ k; K/ Y8 r( P9 N# p
  5454.   
    3 ?0 }3 [2 T: Q  X
  5455.   (setq *error* old_error)
    ) N" V- v/ q% ~% a3 a! j
  5456.   (setvar "cmdecho" old_cmd)5 I, A+ d9 w+ ^5 o" H; d3 T+ d
  5457.   (princ)
    ) ?% K! a0 M) \8 Z3 G
  5458. )/ W% ^6 K: I" c2 J) t7 p

  5459. - Y: W; \8 q' T3 A+ {  b/ z
  5460. ;;;----------------------------------------------------------------------------) Y2 z" ?! O* m0 k7 z0 E
  5461. ( [5 P1 m5 k/ m- Z: o
  5462. (princ "   DDCHPROP loaded.")
    7 g( z" L% a+ b4 r
  5463. (princ)
    / A3 B. j: }' C1 w4 X9 g  `) d

  5464. 7 |- w- C( [) E! G& b$ p
  5465. ;;;----------------------------------------------------------------------------: u. G1 E: e& p  X# ]
  5466. ; X: m% t! i. T0 y6 ?
  5467. ;--------------------------------ddmodify.lsp----------------------------------9 M( a2 o. V/ v- W
  5468. ; Next available MSG number is    1116 `7 j& Q  B# L
  5469. ; MODULE_ID DDMODIFY_LSP_/ u3 }9 L5 b* g6 J9 j( a
  5470. ;;;----------------------------------------------------------------------------+ v2 p6 p! Q9 s0 m- Z
  5471. ;;;    DDMODIFY.LSP
    ; y; ?  L, y' _& x  w4 p5 \
  5472. ;;;
    , K- Y0 ]6 H  u8 N# D
  5473. ;;;    Copyright 1997 by Autodesk, Inc.
    ( ^* K) u: g! B. h
  5474. ;;;
    ( E) d3 S3 ~0 \1 }
  5475. ;;;    Permission to use, copy, modify, and distribute this software0 t* v& k2 ~9 F' R. k; N' L
  5476. ;;;    for any purpose and without fee is hereby granted, provided8 O# O6 W* f4 \
  5477. ;;;    that the above copyright notice appears in all copies and
    : X6 n4 {) u! r/ S
  5478. ;;;    that both that copyright notice and the limited warranty and
    : @, ]7 ^  [' T8 E& g1 I- Z
  5479. ;;;    restricted rights notice below appear in all supporting
    6 Y# m0 K  i) O+ u
  5480. ;;;    documentation.
    . d5 {7 h/ e/ X3 b$ r" W6 `
  5481. ;;;
    : V& E# H& x, T9 p( f( Q2 P3 L
  5482. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.; \4 t! a5 f, c
  5483. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    5 d. W' B$ D# Z/ E  h( w
  5484. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    3 m1 }! y8 \* b9 @
  5485. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE( b' D4 f- Y1 |  \( C# s$ i
  5486. ;;;    UNINTERRUPTED OR ERROR FREE.0 ?) v+ y; L" O) T9 E$ H
  5487. ;;;
    6 l8 g) m- W) s3 y1 k6 m6 k
  5488. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to
    % J( j- D) H' ?8 p. e5 j% [$ J
  5489. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer5 D. i4 q! [0 [. i' {4 k; u# u3 u+ y0 \7 ]
  5490. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    - `1 t5 |- x, }- J6 \8 [' ^2 c
  5491. ;;;    (Rights in Technical Data and Computer Software), as applicable.
    * w3 `% L0 t7 l" _) r5 T3 Z. w
  5492. ;;;
    # W9 q  B( A3 v" y$ N3 s
  5493. ;;;.% `  z4 {; n# Y# B1 E7 }' P4 f
  5494. ;;;# X# s0 U3 R8 l& V( ^
  5495. ;;;----------------------------------------------------------------------------- g) k/ X  }4 z# c/ C% U* f" |& G
  5496. ;;;   DESCRIPTION
      H3 R3 l* d2 _
  5497. ;;;- I8 J. ^, l, g4 b
  5498. ;;;   This function allows the user to get a listing comparable to the LIST
      x5 e9 v% U% T* N# W
  5499. ;;;   command for most objects.  In addition, most object fields in the& d4 K7 B, B, z1 ~
  5500. ;;;   dialogue box are editable.  Points can be specified dynamically by) T/ a# @( {) R2 b( ]
  5501. ;;;   temporarily dismissing the dialogue box.  Each object has a unique+ C4 ~2 J- n& _
  5502. ;;;   dialogue.
    / W) Z% W; K  W3 m2 r, d5 B
  5503. ;;;
    4 P- e; i1 v3 v- C# h
  5504. ;;;   Naming conventions1 H* t0 ~5 y5 ?% {( e# p0 A) ~! C
  5505. ;;;   Long function and widget names may use an underscore "_"
    ( |( p4 Q7 _7 D; n7 R( Q
  5506. ;;;   in their names to make them easier to read, long variable6 O* c& V+ q* C" D- h1 D3 S2 w
  5507. ;;;   names use a dash "-".
    2 s  d$ c% _) v  M! C
  5508. ;;;----------------------------------------------------------------------------
    2 }/ {6 N" p$ O. F
  5509. ;;;----------------------------------------------------------------------------
    : I! ^+ J% O$ `4 P  i7 F
  5510. ;;;   Prefixes in command and keyword strings:
    " i9 T! |6 L7 T8 _' k# L
  5511. ;;;      "."  specifies the built-in AutoCAD command in case it has been; r, p: b3 B# F2 Q1 m" D
  5512. ;;;           redefined.! c1 t# M' A# {& X7 u
  5513. ;;;      "_"  denotes an AutoCAD command or keyword in the native language
    5 B0 _7 c/ B& G3 U& `% U$ b) Y
  5514. ;;;           version, English.
    + R! P# W; \$ h0 S& ?: w* Z7 R
  5515. ;;;----------------------------------------------------------------------------$ N! C7 z- k* ~; v4 w5 q
  5516. ;;;
    $ o. p, z& N# T+ i
  5517. ;;; Avoid (gc)s on load to improve load time.4 Y$ o8 f; ]# D. l" n; o1 {& {
  5518. ;;;* Q( e# V+ s1 @1 P9 R- q. I
  5519. (defun do_alloc (/ old_allod new_alloc)
    ) G: L9 O, E3 c/ W0 j3 q# t
  5520.   (setq old_alloc (alloc 2000) new_alloc (alloc 2000))% R8 B* z% G5 a
  5521.   (expand (1+ (/ 17000 new_alloc)))* r8 f. n0 c# U. e+ T
  5522.   (alloc old_alloc)
    7 Q1 Q0 v) \  {& Z9 P8 L
  5523. )$ e8 I4 k! s0 z: A
  5524. (do_alloc)
    + h6 `# F+ H& ?" o! L
  5525. (setq do_alloc nil). {) p. w5 q8 b9 `1 N! i: h  A5 x

  5526. ; s# b4 t; B" D; i$ p& m
  5527. ;;;
    ! Y: M8 r1 V$ e
  5528. ;;;
    9 Y8 d) C* y1 p6 D
  5529. ;;; ===========================================================================
      [9 v3 H) i5 f, A5 U) ?
  5530. ;;; ===================== load-time error checking ============================5 j$ x+ @# I1 j) i5 g  p( {. z$ ?5 X

  5531. - E3 y! h( S$ n. |
  5532.   (defun ai_abort (app msg)
    5 S7 _: I: l* `) @: w  C: Z
  5533.      (defun *error* (s)7 n- O, o" o1 a/ S
  5534.         (if old_error (setq *error* old_error))
    3 M( J) x6 d2 f3 o( [& h+ ^
  5535.         (princ)) H+ R* v& I- u  }
  5536.      )# f' W# {7 a2 J+ l( J0 P$ ?! H( K% y4 O
  5537.      (if msg  e! q% ?5 \9 M  d/ B
  5538.        (alert (strcat " Application error: "
    ! w) U( Z+ {) \3 `1 \% ?0 ^! b
  5539.                       app
    6 [3 x! ]6 x6 Z& X% J
  5540.                       " \n\n  "
    ! D9 P8 H. p9 W9 K9 H! j
  5541.                       msg
    ( k" n( ]7 f) Q. U, d
  5542.                       "  \n"/ s7 D7 C1 S) p7 N) Q8 t  F' r+ R
  5543.               ): @3 f4 v1 W" L* T# \
  5544.        )6 v8 C4 ^" C4 E* Q9 n1 x/ i
  5545.      ); x1 |. k8 G3 O/ W' X  b% z
  5546.      (exit)
    ' W5 S% `* p+ h! D2 W9 Y
  5547.   )* J8 G* L) C$ e  W5 v

  5548. ) a) u% Y' X# W$ `. A% C6 u+ }
  5549. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    . A; {5 m6 e( v' L4 F
  5550. ;;; and then try to load it.  If it can't be found or can't be* r/ Q6 n+ B1 k' t/ m- t) b. u
  5551. ;;; loaded, then abort the loading of this file immediately.) u- C9 ^" J. K
  5552. 8 h; u1 R) ^9 A# z* E
  5553.   (cond
    " p) j& b; @5 Q; o5 C
  5554.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    8 L2 j1 Q' P, ~; N2 ^+ V
  5555. 4 C0 X5 C$ c/ e
  5556.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    ! `% h: _! d! d+ ?! x4 V9 d
  5557.         (ai_abort "DDMODIFY"' T. l8 k4 I. R# f3 o
  5558.                   (strcat "Can't locate file AI_UTILS.LSP."9 s8 l! C1 `8 f0 P
  5559.                           "\n Check support directory.")))7 K% p) c! }3 F! t; t' B
  5560. & b  p% R) ]3 S" F% p& p
  5561.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it" I2 f+ T* P; A) e- B
  5562.         (ai_abort "DDMODIFY" "Can't load file AI_UTILS.LSP"))
    9 N( H1 p6 z) B6 s8 \. _( k
  5563.   )8 z- T' p6 Z0 p1 t1 `! V% |
  5564. ) `7 N! u. a- @" o7 w5 }& k( T9 Y! x+ }
  5565. ;;; If we get this far, then AI_UTILS.LSP is loaded and it can
    8 B8 J: D( x- [$ r; c! T
  5566. ;;; be assumed that all functions defined therein are available.0 p- |* G4 G7 a

  5567. 2 w5 t& Y% m2 w' S/ v' M6 S
  5568. ;;; Next, check to see if ACADAPP.EXP has been xloaded, and abort$ O. x1 l5 H& F- R1 \# i
  5569. ;;; if the file can't be found or xloaded.  Note that AI_ACADAPP  J- Y# a. n: L/ ~! ?7 Q
  5570. ;;; does not abort the running application itself (so that it can
    - h+ X5 Z5 L, ?6 z0 T  u1 W
  5571. ;;; also be called from within the command without also stopping
    ( F' G5 a) @! K1 f3 E0 ?- M$ q
  5572. ;;; an AutoCAD command currently in progress).1 d2 f! Z# g9 x* Z- s* q) d' \
  5573. $ Z+ }$ E- n7 i+ y3 O& r
  5574.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP% Q1 Z; L' f* X2 C+ u
  5575.       (ai_abort "DDMODIFY" nil)        ; a Nil <msg> supresses
    ; Y( c+ _- }8 Q
  5576.   )                                    ; ai_abort's alert box dialog.# J  R' T) X/ v' y

  5577. ' ~2 ]+ w8 d% ~1 v% Y3 O
  5578. ;;; ==================== end load-time operations ===========================- D( {5 a+ k+ j" y

  5579. ; z% \3 O9 S( _- S" X& u# G
  5580. ;;; global variables
    $ ?) o$ ?6 k7 U" C# {9 v  E) [2 v

  5581. 8 S7 d- D) I4 w3 {* h0 c; m$ B# A
  5582. (setq hatch-elist nil)( E$ {* r& z7 z* W- k: h

  5583. ! E! _5 n; o5 v
  5584. ;;; If we get this far, both ai_utils.lsp and acadapp.exp are2 S2 c* y$ K2 j
  5585. ;;; assumed to be available.9 J) ^( A9 g7 q/ w

  5586. , b4 l2 O* l, o" d* u+ z( u
  5587. ;;; Define and encapsulate all subroutines that are declared$ }3 `+ j: h0 W- m; q
  5588. ;;; locals of the (ddmodify) function.4 Z2 q% f+ Q( F6 j8 F( l" Q
  5589. . e4 C" v5 @% N
  5590. (defun ddmodify_init ()% g8 d7 S- ]2 B9 P
  5591.   ;;% Y6 N; y1 o4 N
  5592.   ;; These three functions modify the enitity list for common properties.  Since7 r: ^) `7 F1 B* z2 E
  5593.   ;; color, ltype, and thickness are absent from the object list when they are
    8 k) m0 J/ N3 p, q" \# D
  5594.   ;; set to their defaults (i.e. color = bylayer), a simple substitution using' w9 O+ T# O' e
  5595.   ;; SUBST is not possible.
    * }: K" R  v% j: l! u$ p
  5596.   ;;
    1 m5 c; y; s" A/ s) P; t
  5597.   (defun modify_properties ()
    8 `6 g9 J5 S) e2 J! t3 q) C) Q
  5598.     (emod ecolor 62)7 a% l# Q4 Q( I4 c
  5599.     (emod eltype 6)
    & X( n% [4 J; B7 U# q
  5600.     (emod ethickness 39)
    - j# Z! b! l( G) Q9 ]* f: q
  5601.     (emod eltscale 48)
    ( C( f0 v4 t, P" Y9 P8 H
  5602.     (tempmod elayer 8 nil)
    0 ?0 E) W/ e7 O4 y9 p- g* d- k
  5603.   )4 A6 {) ^- l, V' ^/ e
  5604.   ;;* [4 m( h0 i7 D! k1 T5 v) F
  5605.   ;; This function is used for modifying common properties of the ACIS
    * P. a$ g5 M7 E
  5606.   ;; based geometry objects. Thickness is not valid for these objects% N: i! g! S5 U; o. ^  E0 v0 m
  5607.   ;; so it is left out.
    ) w/ q1 {/ [8 I- ~: D' v2 T* T
  5608.   ;;5 m9 \+ c- r! u7 H+ e$ }/ b
  5609.   (defun modify_prop_geom ()( v5 y6 @/ S. V; C6 A
  5610.     (emod ecolor 62), J0 K7 N0 V2 @2 f
  5611.     (emod eltype 6)6 C/ I0 n" s# @+ ^. W
  5612.     (emod eltscale 48)8 a- C4 Y6 U6 s7 d9 T* p
  5613.     (tempmod elayer 8 nil)
    " V! H2 p8 C& r/ }! Z
  5614.   )
    ! A$ T$ ?9 o0 q
  5615. 2 L: D8 c' X4 l9 ?$ E
  5616.   (defun emod (value bit)5 R, \& p: N& z+ o% l' {. y  {
  5617.     (if (= bit 62)
    $ E: E% Y. V* p5 G* V6 h
  5618.       (progn; e, r6 `0 ^( @7 ^1 y$ _* l
  5619.         (if (or (= value "BYLAYER")
    % {) O: }7 J& V7 e) y
  5620.                 (= value "BYLAYER")) (setq value 256))
    " f1 e1 j' g4 d; t8 M* J6 B
  5621.         (if (or (= value "BYBLOCK")
    4 ~; v( o$ p" o9 i. n, r) [* {
  5622.                 (= value "BYBLOCK")) (setq value 0))/ _9 E! k8 K* G+ x) [/ P
  5623.       )" b1 x) P- w! {. l  I
  5624.     )
    % F/ `. g5 k# q
  5625.     (if (setq oldlist (cdr (assoc bit elist)))& _+ ?* l+ q% x0 @  d1 L' w" i
  5626.       (tempmod value bit nil). x) J& V# y# D' d; `* P
  5627.       (setq elist (append elist (list (cons bit value))))9 {; x8 ~  K! q5 R& o
  5628.     )
    : c. W! ^5 j6 J7 B# l) i
  5629.   )
    9 y. o' J: P2 H2 e) p  q  X
  5630.   ;;
    0 H( w8 i, v2 I, j9 c
  5631.   ;; Resets object list to original values.  Called when the dialogue or9 L6 w8 E' Y2 X) W4 t
  5632.   ;; function is cancelled.
    + ]* q5 x$ c  R% m+ Y3 ~
  5633.   ;;
    / @7 R# ~/ d+ V# o* z4 o
  5634.   (defun reset ()* \7 Q6 E- h5 I2 F; r# U* D
  5635.     (setq elist  old-elist
    % {( b, x/ R1 ^. G  z  T
  5636.           ecolor (cdr (assoc 62 old-elist))& V( E9 K1 @1 _2 D" }* K* d
  5637.           ethickness (cdr (assoc 39 old-elist))  Y( O6 }+ `7 R/ T' y1 T
  5638.           eltype (cdr (assoc 6 old-elist))
    - `7 a8 s7 A7 }  r8 t( i% o$ `
  5639.           elayer (cdr (assoc 8 old-elist))
    2 Y) k/ o' \- h! L0 g4 l
  5640.           eltscale (cdr (assoc 48 old-elist))
    , [& L3 b, ~, s3 {9 W4 |0 R
  5641.     )8 |8 d8 l3 P+ }- Y
  5642.     (if (not ecolor) (setq ecolor "BYLAYER"))
    ! t+ ~7 P  }' o) K
  5643.     (if (not eltype) (setq eltype "BYLAYER"))( Q' Z5 ?5 s- R% P$ v5 A% }
  5644.     (if (not ethickness) (setq ethickness 0))3 ~+ k1 p6 j$ V  M, t& G
  5645.     (if (not eltscale) (setq eltscale 1))
    2 a3 T* e0 k9 ]0 C: L
  5646.     (modify_properties)0 d& P# s0 G& K7 S4 y1 \
  5647.     (setq reset_flag t)( c# p3 K4 j* ~+ e9 f# L
  5648.     (entmod elist)
    - ?6 p5 o4 d9 M0 c1 s) a+ S
  5649.   )" ^: P, q+ @( F& e
  5650.   ;;
    8 Z, h$ h. P: [' t2 \1 |( j4 ?
  5651.   ;; Modify object when dialogue is temporarily dismissed to reflect latest
    9 u! }; ~4 A7 N( n% V. f
  5652.   ;; settings of dialogue.  It converts the point from current UCS coordinates to2 _4 W; S6 y" Q4 J9 f. Y
  5653.   ;; the proper object coordinates (world or object).
    ) n; E6 \' G! l/ i: L) s
  5654.   ;;. \# Y7 K+ o5 R4 _% F5 R# e8 W1 _
  5655.   ;; Arguments: value - in current UCS coordinates" W( i0 j3 @; `' E& I
  5656.   ;;            bit   - object code (i.e. 10 for start point): r7 j4 _- f/ V
  5657.   ;;            ptype - point type  0=world 1=planar/ h1 W( o, W6 }/ P& c
  5658.   ;;
    , h+ B8 f2 J) ~
  5659.   (defun tempmod (value bit ptype / newpoint)
    ! P4 @) W$ C5 P% Y! _& a
  5660.     (cond
    9 W  l( }3 @1 g. u1 q  c
  5661.       ((= ptype 1) (setq value (trans value 1 ename)))# N/ T, G7 K; T% ]% D. F
  5662.       ((= ptype 0) (setq value (trans value 1 0)))
    1 l; l+ ^2 T7 ~. v7 p
  5663.     )
    ; L$ c- h. A8 `: Q
  5664.     (setq elist (subst (cons bit value)1 a+ D! M# I. O2 u: o0 r; X  I' |- }
  5665.                        (assoc bit elist)+ o# ^& S0 y# H+ C& \  A! j/ H! l
  5666.                        elist) p4 t# Y) p3 M$ a5 F, y9 h+ n
  5667.                 )
    / d8 ?$ Y# i! Q2 B1 N2 G- U
  5668.     )
    7 o$ Q% V7 {. c6 q
  5669.   )
    ( @( S1 J# b8 |7 l/ i1 @
  5670.   ;;
      p! z3 w6 g6 F! O5 W
  5671.   ;; The following functions are called after a dialogue has been temporarily
    * t4 A* M% s+ K0 B
  5672.   ;; dismissed and the user is selecting a point.  If a point is selected the5 E0 ^( V' e) M) S. X9 H
  5673.   ;; object list is modified and new X,Y,Z values set.  If no point is selected
    2 R( a. _/ |2 U8 m
  5674.   ;; (null response), then the point is reset back to its previous values.
    ! i* L8 x( D8 r+ @: x
  5675.   ;;
    0 r, V( q) W& r  F: H' O" L
  5676.   (defun ver_pt1 (ptype)' m5 v* i" _0 I' P4 r+ t: G' h
  5677.     (if pt1; b+ P- }, u* ]7 [8 R# q$ C
  5678.       (progn: D2 |" l5 ^4 {0 ~
  5679.         (tempmod pt1 10 ptype)
    $ e5 K" m7 M* r8 C9 t
  5680.         (entmod elist)/ ?8 `+ c6 O% B2 C" t
  5681.       )) F/ R3 ~: s9 d5 a3 e% c
  5682.       (setq pt1 (list x1 y1 z1))
    1 b# K& x7 g% D9 r6 G8 A
  5683.     ): `" ^( |  o; A* l  i
  5684.   )
    3 @" T* E$ @3 C& h% C
  5685. 7 ^" z' H2 t' H# \
  5686.   ; (move_pt1 <ptype> )
    1 Z) {- N; L# p1 r1 n! {3 x0 }4 H" P
  5687.   ;
    ! y- \0 v0 V$ _. `) E- o& ~; e4 ]
  5688.   ; Called in liew of (ver_pt1) to translate block insertions which8 n) W" {9 `7 F: m5 e
  5689.   ; might have variable attributes attached to them.  If the distance
    1 k8 g# c' G6 E8 n3 w7 ?
  5690.   ; the block is to be moved is < 1e-6, the move is deferred.8 }  G! U3 S/ S* K) y  _# K

  5691. 0 S* q- T# k/ z
  5692.   (defun move_pt1 (ptype / basept hi)+ \, u4 N% [4 u3 g
  5693.     (setq basept (trans (cdr (assoc 10 (entget ename))) ename 1))
    8 _5 ?3 X+ M; T
  5694.     (cond
    1 f9 c2 ?+ F; y; X
  5695.        (  (not pt1)' W+ E! K0 S0 o9 H, G
  5696.           (setq pt1 (list x1 y1 z1)))7 a+ R1 T7 I- K' Y6 v2 W0 t
  5697. . l( y* |+ n" J$ z: c: C
  5698.        (  (> 1e-6 (distance pt1 basept)))* ?, L5 @4 C% k. _5 L
  5699. ' x7 s# Q8 z1 t4 C/ q$ q( ?
  5700.        (t (tempmod pt1 10 ptype)
    ; i2 I, o- Z! m' i: O0 g
  5701.           (setq hi (getvar "highlight"))3 R$ U9 V+ N0 W6 _- a2 G8 j' C
  5702.           (setvar "highlight" 0)( `8 E" Z2 M! R( W2 F; w
  5703.           (command "._move" ename "" basept pt1)! a1 G& }& i1 ]1 {7 e( K- y& H
  5704.           (setvar "highlight" hi)); ]5 a% ^- E  x9 b
  5705.     )
    5 `* K7 u' A5 z. d! p
  5706.   )
    1 [, T- p* K& o% M. H4 O
  5707. & p; m4 p) C$ r' e) q5 K
  5708.   (defun ver_pt2 (ptype)
    9 t# }5 Z" ~6 V! b% l; g- V
  5709.     (if pt2
    % |- s; M: O. t: M# \
  5710.       (progn" t2 @- z) Y/ r" U5 ]" R0 \
  5711.         (tempmod pt2 11 ptype)
    4 D. W" T5 Q, t' ~( x  V. X
  5712.         (entmod elist)
    / A- F/ @' p3 j1 W
  5713.       )7 ^  k, a- z" O9 B9 w8 `3 O
  5714.       (setq pt2 (list x2 y2 z2))2 f  _$ V  ^6 a2 L1 R3 o8 E
  5715.     )
    # @% Q6 C, k! |3 A& [0 Y3 ]
  5716.   )
    9 p! w3 y# S: m% i' I
  5717. # Q; [; v& q6 n+ G
  5718.   (defun ver_pt3 (ptype)
    1 q/ X0 j* G7 N3 P% y+ q; G
  5719.     (if pt3
    % |7 @* r4 z* W8 H! D
  5720.       (progn
    - Z4 c' @! h* w
  5721.         (tempmod pt3 12 ptype)
    ! H# L# T  I* X3 m" `* h
  5722.         (entmod elist)
    : }6 N; {0 Y: ]" O
  5723.       )* z( O) M0 J4 V5 h4 [4 ~
  5724.       (setq pt3 (list x3 y3 z3))
    0 {4 c8 T* y: M/ v+ X
  5725.     )  ]; T: p5 P3 I6 R: V
  5726.   ): A1 U# S% F$ t4 T9 ~6 Q5 U
  5727. " C9 _7 a2 h8 S% Y( b' {. e' q
  5728.   (defun ver_pt4 (ptype)
    8 ^. ]7 T% b" b9 L9 s9 Z( a4 M/ `
  5729.     (if pt46 l, C  c! l% i! B& W: V1 w: Z5 ^
  5730.       (progn! I' X+ [! C0 _
  5731.         (tempmod pt4 13 ptype)5 k2 k( h+ q! |$ g
  5732.         (entmod elist), i% l  I+ f1 j) H. r. F
  5733.       )  ?) [/ ?2 x  G' u
  5734.       (setq pt4 (list x4 y4 z4))
    / P9 `/ |, A. X, a
  5735.     )1 N5 S* ?3 Q% K- s7 a1 v+ o3 y/ g6 m0 u
  5736.   )
    : R7 K7 b! r! t( \" m
  5737.   ;; Xline/Ray
    ! s3 i& U) k+ X+ b' e8 b4 L
  5738.   (defun ver_xline_pt1()
    . c) _# k; D% b) r9 D3 `5 ?# z
  5739.     (if xline_pt1
    " G9 F. k& C# I9 K% a: N
  5740.       (progn% K, b. E9 z% }" w, A* P) H# O
  5741.         ;; convert to WCS.4 K7 ^0 |$ U/ o5 H  T) i' ^7 t
  5742.         (setq value (trans xline_pt1 1 0))
    ) q5 ?) {3 q# n5 d. J( n
  5743.         (setq elist (subst (cons 10 value)
    * p/ S2 m: D) @  Q! _
  5744.                           (assoc 10 elist)8 M6 `2 T7 Z. k2 n, T
  5745.                            elist6 ?# l% r0 h  Z
  5746.                     )2 d0 V9 r- K0 y0 s
  5747.         )
    1 ~" \) c7 s3 ~5 E) \" n7 w4 N
  5748.       )6 G: e( {; Q' W* J9 n
  5749.       (setq xline_pt1 (list xline_x1 xline_y1 xline_z1))
    * `# F* ^: [( C" }
  5750.     )) X  r) U: z( j5 u5 T+ d! V+ q
  5751.   )% D2 p2 @, [, P8 W: J. I
  5752. : S$ h& v% w0 Z
  5753.   (defun ver_xline_pt2()( Q# I& H& y+ T! I
  5754.     (if xline_pt2
    ' Z+ E7 @# x  f
  5755.       (progn2 c0 h8 {* i: f+ {. m
  5756.     ;;
    ( ?1 X7 J" v; d/ L0 a+ v" }
  5757.     ;; Calculate new Direction Vector WCS+ X% R+ e9 b; I1 W# }0 s& p! Y" s
  5758.     ;; x / (sqrt ( (x**2) + (y**2) + (z**2)     ))5 D" S6 X" A8 l
  5759.     (setq temp_dir (trans xline_pt2 1 0))2 R( c* ^2 Z, p
  5760.     (setq temp_dir_x (car temp_dir))6 X1 v9 o" C3 H) [
  5761.     (setq temp_dir_y (cadr temp_dir))
    : L6 X( o8 G4 e5 |6 y6 p
  5762.     (setq temp_dir_z (caddr temp_dir))
    $ P$ d, L% y# H+ \/ c& \! h& _
  5763. ' |. I9 _4 B+ {6 n
  5764.     (setq temp_xline_pt1 (trans xline_pt1 1 0))
    $ b: Z& m  ?  E: h$ g' G  ^# a3 Q
  5765.     (setq temp_xline_x1 (car temp_xline_pt1))% a. y2 r% o9 i- e: R0 P- S# o
  5766.     (setq temp_xline_y1 (cadr temp_xline_pt1))
    ! N8 B8 Q/ F" P
  5767.     (setq temp_xline_z1 (caddr temp_xline_pt1))9 C* l0 [* Y# F3 O  N9 r

  5768. 6 Q3 e8 Y( I" |! m
  5769.     (setq denom (sqrt (+ (expt (- temp_dir_x temp_xline_x1) 2)
    , F0 ~$ o% L% [5 g+ B) _+ k
  5770.                          (expt (- temp_dir_y temp_xline_y1) 2)6 @1 g% Z, \/ H, m5 H/ ?
  5771.                          (expt (- temp_dir_z temp_xline_z1) 2)
    # y, y) Y* e" T' `# D6 B! F
  5772.     )))2 q8 |4 p6 I, s' B
  5773.     (setq temp_dir_x (/ (- temp_dir_x temp_xline_x1) denom)); o  {+ ]4 b7 S: G) _+ F( s
  5774.     (setq temp_dir_y (/ (- temp_dir_y temp_xline_y1) denom))# c5 Z; K% t+ S8 b; ?# y
  5775.     (setq temp_dir_z (/ (- temp_dir_z temp_xline_z1) denom))
    ' U# A5 k- w% P4 M' e7 S8 x' k
  5776.     (setq elist (subst (cons 11 (list temp_dir_x temp_dir_y temp_dir_z))
    # `9 B$ r( J8 E6 u0 g" W; Q7 ?
  5777.                        (assoc 11 elist)' @$ Q8 E# M; y7 F. ^7 i
  5778.                        elist" s( C8 G% r1 P( \2 k
  5779.                 )/ ~3 O: X# F# Y6 d" X
  5780.     )# Y" H- P5 j0 x) |  C4 H
  5781.     (entmod elist)1 p! t" h3 _; L( w7 Y: a
  5782.         (setq xline_x2 (car xline_pt2))
    5 k5 Q5 `# L' M
  5783.         (setq xline_y2 (cadr xline_pt2))
    3 X, G/ ^- {8 k; ^
  5784.         (setq xline_z2 (caddr xline_pt2))
    ! i  t6 J0 @) r% d
  5785. 9 V  r2 a- W/ s0 K# Y' e

  5786. 9 p% K2 J8 z* k9 @: A# x6 I
  5787.       )7 H/ @5 y) R- Q7 `2 E0 @0 u1 W
  5788.       (setq xline_pt2 (list xline_x2 xline_y2 xline_z2))8 [; j" u5 K/ m1 P1 y( X7 {
  5789.     )
    * M* r# c4 d0 s, `# s
  5790.   )
    5 }. c! t0 G9 H5 x

  5791. " R1 {2 U* _9 L0 |, C! `
  5792.   ;;) Z& P: x4 i' k% @& f6 I
  5793.   ;; Common properties for all objects
    2 |& |" i6 C& f( k9 M
  5794.   ;;
    * {) u, c6 ?& q) q
  5795.   (defun set_tile_props ()8 H3 ]5 P/ w/ `# |0 X
  5796.     (set_tile "error" "")
      U& ^* W" `2 e
  5797.     (setcolor)$ P2 K+ [0 E: w9 @& s% _
  5798.     (cond7 i% f9 B* b+ A  D7 L/ C3 C: b
  5799.       ((= eltype "BYLAYER")9 [! [+ w+ v) s  r( `/ Y
  5800.          (set_tile "t_ltype" (bylayer_lt))): j: q  ]1 v+ ^, K
  5801.       ((= eltype "BYBLOCK")
    5 {/ I! t% Q! b  q
  5802.          (set_tile "t_ltype" "BYBLOCK"))* m5 T! p6 k; i5 Z+ t$ R* z2 g
  5803.       (T (set_tile "t_ltype" eltype))& E8 i% S5 l9 V0 ^
  5804.     )( \) r/ ]9 r% d- H8 i4 I
  5805.     (set_tile "t_layer" elayer)
    1 f9 \2 X& R& k; I) f/ V; }# L
  5806.     (set_tile "eb_thickness" (ai_rtos ethickness))
    , S0 R8 X7 m; c9 X
  5807.     (set_tile "eb_ltscale" (ai_rtos eltscale))
    2 C' s2 ~, d5 Z8 A6 q3 }4 N
  5808.     (setq which_tiles (ai_common_state etype))
    7 a# r, K8 K7 }$ v# f
  5809.     ;; Disable tiles if need be...' V$ T! Z( B$ R+ e
  5810. $ @0 s" R" O! A" i/ \. ?: p; K
  5811.     ;; Layer Button and Text Field
    ! z' X% |5 ^8 z
  5812.     (if (/= 1 (logand 1 which_tiles))
    4 w" I2 ^' h" a! I
  5813.       (progn
    ) K0 M5 [9 L8 D0 J/ ]6 [  v2 B
  5814.         (mode_tile "t_layer" 1)0 Z2 K3 |7 f0 e6 X$ g1 s. Y8 F
  5815.         (mode_tile "b_name" 1)
    , _: d5 a( ^8 V& n5 K
  5816.       )
    5 W( h  ^, h" a# m
  5817.     )$ `1 ^/ N% |9 [
  5818.     ;; Color Button and Text Field+ M/ i1 u6 q1 n6 N
  5819.     (if (/= 2 (logand 2 which_tiles))% O4 \2 p9 D/ Y; y  c* h
  5820.       (progn0 Y& b% G' Z( ^* C8 i* m4 o
  5821.         (mode_tile "t_color" 1)
    & A2 P; r. p( ]# N  p$ l" I6 k
  5822.         (mode_tile "b_color" 1)8 @; Z# P) z) k% b7 |
  5823.         (mode_tile "show_image" 1)5 }+ ~) _. G# N1 f7 G1 ^4 [& s8 i0 b8 d
  5824.       )
    2 \' B9 M$ }& A- N6 v
  5825.     )
    3 w3 J+ P  H8 c, R4 F
  5826.     ;; Linetype Button and Text Field
    ( i! X/ [3 G9 {! ^* g2 W3 N
  5827.     (if (/= 4 (logand 4 which_tiles))
    . i+ p0 A* J4 _% w& f
  5828.       (progn# L- q+ J8 O. S7 ^- B
  5829.         (mode_tile "t_ltype" 1)
      ~6 u) A/ n- q, j+ j0 {) m, k$ n
  5830.         (mode_tile "b_line" 1)
    . v  c! f( W2 {" k
  5831.       )2 {9 L2 ^9 d5 r, M6 ~
  5832.     )
    3 S# J, \8 z  Q& l; j' w
  5833.     ;; Linetype Scale Edit Field
    9 I; m8 O: W/ s
  5834.     (if (/= 8 (logand 8 which_tiles)). [) u! a" }) |
  5835.       (progn
    4 T$ v, u4 R$ w2 w3 w
  5836.         (mode_tile "eb_ltscale" 1); ^- j/ k( m: q+ {
  5837.       )
    ! i: j* S  J) E: r# v
  5838.     )
      L$ }* N2 G! k; Q4 j
  5839.     ;; Thickness Edit Field.
    8 @* x1 N& y0 B0 d* `
  5840.     (if (/= 16 (logand 16 which_tiles))
    5 [+ r3 \8 g! B4 }
  5841.       (progn
    & L4 c- ^. W# W1 D9 Q. K
  5842.         (mode_tile "eb_thickness" 1)
    " u. {) b* S3 R. w
  5843.       )
    " T2 t8 ?9 {! ^* W" h. t# p
  5844.     )! `* o4 X8 R2 x6 w
  5845.   )
    8 H# j. y1 Z4 r" u$ I& R
  5846.   ;;& d! k/ d- f6 X( p
  5847.   ;; XYZ Point values for all enitites. I* V# [9 ^6 n# V5 b& @8 D
  5848.   ;;& m3 Z& \2 ]/ p# a4 S' Z
  5849.   (defun set_tile_pt1 (ptype)8 C! l. u9 `+ L$ [* e9 Z
  5850.     (if (= ptype 0)
    ; u2 F$ w0 j# L
  5851.       (setq pt1 (trans (cdr (assoc 10 elist)) 0 1))
    & @" b' W1 p( j2 P" ^0 {* g, C
  5852.       (setq pt1 (trans (cdr (assoc 10 elist)) ename 1))
    9 ?$ u" M6 e( z$ E
  5853.     )
    ! A7 s1 p$ |. ~" G8 `
  5854.     (set_tile "x1_pt" (ai_rtos (setq x1 (car pt1))))& e, x2 L+ l' z
  5855.     (set_tile "y1_pt" (ai_rtos (setq y1 (cadr pt1))))
    2 w2 U2 N9 U+ h2 }+ K
  5856.     (set_tile "z1_pt" (ai_rtos (setq z1 (caddr pt1))))
    " ?. k* A- S/ L5 K
  5857.   )
    6 x' q  P6 \8 O- `; n: p) `* Y
  5858.   (defun set_tile_pt2 (ptype)
    $ t. m; M2 ^# u! Q' z
  5859.     (if (= ptype 0)
    9 Y0 v; \" d* O5 G- ?
  5860.       (setq pt2 (trans (cdr (assoc 11 elist)) 0 1))2 }+ X% N7 M# W5 y6 |( q! J
  5861.       (setq pt2 (trans (cdr (assoc 11 elist)) ename 1))4 R* _6 O% d3 G- L  R
  5862.     )
    / h) Y) V5 i) h% S5 R$ a' h
  5863.     (set_tile "x2_pt" (ai_rtos (setq x2 (car pt2))))
    ' t" s* R3 I& t2 X: o
  5864.     (set_tile "y2_pt" (ai_rtos (setq y2 (cadr pt2))))
    7 I, A7 j/ V3 m8 D1 [) L) K
  5865.     (set_tile "z2_pt" (ai_rtos (setq z2 (caddr pt2))))0 h  q. e6 M1 U  K- j
  5866.   )$ D+ Y$ v4 X" M
  5867.   (defun set_tile_pt3 (ptype)' F- q/ E& w5 \- V+ c3 B
  5868.     (if (= ptype 0)6 y! Y3 K( o+ w- d" Z
  5869.       (setq pt3 (trans (cdr (assoc 12 elist)) 0 1))8 o, ^- {/ `5 Y$ ?& ]
  5870.       (setq pt3 (trans (cdr (assoc 12 elist)) ename 1))3 `& ~7 ~* {* a% l% G: W2 T
  5871.     )
    5 X3 f, ^5 n. A( J+ U& c/ |
  5872.     (set_tile "x3_pt" (ai_rtos (setq x3 (car pt3))))
    , m2 J+ d1 v8 g" ~/ |* ?
  5873.     (set_tile "y3_pt" (ai_rtos (setq y3 (cadr pt3))))
    1 P# B- t  J# b+ H. k! X
  5874.     (set_tile "z3_pt" (ai_rtos (setq z3 (caddr pt3))))
    8 n& Z5 z1 S$ Z. A6 W+ j
  5875.   )" ^0 [) p' ?, G# ~
  5876.   (defun set_tile_pt4 (ptype)9 \. p. @; v7 F& Q; {% i/ d$ o
  5877.     (if (= ptype 0)
    3 K, e. N. r/ B9 w- c
  5878.       (setq pt4 (trans (cdr (assoc 13 elist)) 0 1))
    , d5 h- [" d* v; V" g% E
  5879.       (setq pt4 (trans (cdr (assoc 13 elist)) ename 1))! M$ r# z- D: |) R! Z
  5880.     )
    ' n" v% V# d  f7 G
  5881.     (set_tile "x4_pt" (ai_rtos (setq x4 (car pt4))))7 h+ A" m+ s2 Y# n3 N; |+ a
  5882.     (set_tile "y4_pt" (ai_rtos (setq y4 (cadr pt4))))
    3 D* p+ o0 j$ A9 p
  5883.     (set_tile "z4_pt" (ai_rtos (setq z4 (caddr pt4))))9 m- |2 ]& O5 p3 H0 ?
  5884.   )" y% K4 z& a/ r4 G! [) k
  5885.   ;;
    2 Q( ?3 u: ~) W& Q( r
  5886.   ;; Xline/Ray0 @0 `  q% @; j; i2 s4 t8 M
  5887.   ;;3 p6 h! F7 j+ j$ N8 p
  5888.   (defun set_tile_xline_pt1 (): J2 ]$ i" W) l4 ?8 l8 ]
  5889. & h) z8 P7 R+ V7 b, r. d' B/ w$ N
  5890.     (setq xline_pt1 (trans (cdr (assoc 10 elist)) 0 1))2 ?. i; ^; a3 l: I( `0 P) q" p
  5891. " Y% |; ~5 Y* f1 m0 s4 g( l" j
  5892.     (set_tile "xline_x1" (ai_rtos (setq xline_x1 (car xline_pt1))))
    4 q6 A1 q. w1 |/ C1 h
  5893.     (set_tile "xline_y1" (ai_rtos (setq xline_y1 (cadr xline_pt1))))$ w% L0 ]3 \! ]  u, w
  5894.     (set_tile "xline_z1" (ai_rtos (setq xline_z1 (caddr xline_pt1))))" A6 S$ Q6 f6 V8 `- j
  5895.   ), x0 w7 G+ l+ t9 @
  5896.   (defun set_tile_dirv ()  g5 |; i5 n+ O# {: {
  5897.         ;; Convert 11 group to local UCS (displacement). m3 V8 t% ~! T# \* o) O
  5898.     (setq dir_pt (trans (cdr (assoc 11 elist)) 0 1 1))) u) u6 Y" B9 k  ^0 \! f! I
  5899. / y" {+ r" F) k* b% L8 a
  5900.     (set_tile "dir_x" (rtos (setq dir_ptx (car dir_pt))))9 ?5 Z. Z1 ~* e, a5 p. d
  5901.     (set_tile "dir_y" (rtos (setq dir_pty (cadr dir_pt))))5 m. D& y0 t5 [! Z8 M$ r7 q8 |  _6 a
  5902.     (set_tile "dir_z" (rtos (setq dir_ptz (caddr dir_pt))))
    5 O9 E* T, N$ P- l/ P
  5903.   )+ V4 K3 w: k/ [9 I( T7 X
  5904.   (defun set_tile_xline_pt2 ()! l9 Z) ?) U% r/ o* _7 q
  5905.     (if (not xline_pt2)7 L; _1 _6 o4 q! j( u2 \7 D
  5906.       ;; Initial second point is Root Point + Direction Vector9 K! p, B4 s) P* K7 k. v  _+ c/ H) W
  5907.       (setq xline_pt2 (mapcar '+ xline_pt1 dir_pt))" q. E7 x3 w! }: F* a* `
  5908.     )
      ~% J+ k' G& }' N1 O
  5909.     (set_tile "xline_x2" (ai_rtos (setq xline_x2 (car xline_pt2))))7 N1 u0 \' B0 L5 e  L9 W9 V/ v2 t
  5910.     (set_tile "xline_y2" (ai_rtos (setq xline_y2 (cadr xline_pt2))))
    & S% E9 [6 A2 U- R' t$ n' O: Y1 Y! A
  5911.     (set_tile "xline_z2" (ai_rtos (setq xline_z2 (caddr xline_pt2))))
    ! _8 B) l# ?1 q9 d: X9 l; H9 p
  5912.   )
    5 B& a3 B9 A& I: x; }" k: t
  5913. + |+ m$ H! Q4 z% \& E8 @
  5914.   ;;
    ) ?+ e. @' K" v" Y8 I  |
  5915.   ;; Handle for all objects
    ; h4 O. l; ~4 V+ ?
  5916.   ;;
    8 g$ u% C3 g" i" y- Q
  5917.   (defun set_tile_handle ()
    . V! `7 F7 D( ~$ U  K: y% K
  5918.     (if (setq hand (cdr (assoc 5 elist)))4 v' S  p! _+ @
  5919.       (set_tile "Handle" hand)( j* p2 I' e  Y
  5920.       (set_tile "Handle" "None")9 C' e6 ?' ^6 n  G
  5921.     )3 A6 u; G" v+ m- ^( w, i
  5922.   )
    - \  }( f" r# }; g* {% N0 W8 [
  5923.   ;;" W5 ?) `, r; X* P' x+ x% I
  5924.   ;; Radius for ARC and CIRCLE
    & Y8 L1 X, c* }9 @- @
  5925.   ;;
    - V) A& ^* Q4 P" p2 H: ?! [9 @- R" k
  5926.   (defun set_tile_rad ()4 a/ r8 r0 L0 m
  5927.     (setq radius (cdr (assoc 40 elist)))
      Y; C0 ]& H5 ~( z3 g
  5928.     (set_tile "radius" (ai_rtos radius))
    3 s  q- G/ B: J; z/ U
  5929.   )4 k+ R  Z. }3 i) b, }! X3 N
  5930.   ;;" {. c( Y' p8 O$ p9 W  R
  5931.   ;; Start angle for ARC
    " i; s$ o- }1 R" E3 j/ Q# S
  5932.   ;;
    # |; r+ ^4 M' T$ A6 ]! I( X& z
  5933.   (defun set_tile_stang ()8 V' o$ g8 D; j& q- ]/ c# q
  5934.     (setq st_ang (cdr (assoc 50 elist)))
    # M8 @6 z8 z& z# J" k# c3 s6 ~
  5935.     (set_tile "st_ang" (ai_angtos st_ang))- r- |  k- I8 t* z: Z
  5936.   )
    * f( A0 w; j$ {6 I
  5937.   ;;: d& N1 b3 H& N/ x. l3 y
  5938.   ;; End angle for ARC' ^, V9 c1 r/ c3 L
  5939.   ;;$ G3 E+ {7 X3 k. I
  5940.   (defun set_tile_endang ()
    " D+ J/ T( z' M" o' j, x
  5941.     (setq end_ang (cdr (assoc 51 elist)))
    - @) o/ F- n9 }8 ^* A  v
  5942.     (set_tile "end_ang" (ai_angtos end_ang))
    ) {: f/ m1 \5 G6 ^
  5943.   ); o- x" x& h3 f( G" [: T
  5944.   ;;: i! j& C4 ?3 b  T/ R& g
  5945.   ;; Rotation Angle - Text, Attributes, Block insertions and Shapes
    - B. j; c) k; K
  5946.   ;;# m) Y! q  |. v+ H- Z" h
  5947.   (defun set_tile_rot ()- |: p  r' m. ?5 d( O$ ~
  5948.     (setq rot (cdr (assoc 50 elist)))
    4 l) P4 `5 p6 n* }& q2 a$ v
  5949.     (set_tile "rot" (ai_angtos rot))
    , u7 \; ?% g9 e9 k$ G
  5950.   )
    7 r. G  ~% ?% u7 b- ]  D
  5951.   ;;
    2 b8 t8 M0 Q6 B; Y. l# n
  5952.   ;; Height - Text, Attributes and Shapes9 M! w1 {6 N( p( A0 b  r( ~* f* z
  5953.   ;;# z7 o8 y& s; a: n
  5954.   (defun set_tile_hght ()2 f9 m$ ^% E/ U4 b' {: r( H
  5955.     (setq hght (cdr (assoc 40 elist)))
    ) V  T5 @1 S) v3 G6 @9 F) Y3 }: l
  5956.     (set_tile "hght" (ai_rtos hght))4 w; Y' C! t  L, r- \( C
  5957.   )
    5 @* Z* k2 |8 Y$ I" J# v
  5958.   ;;% \1 j# q* n$ E7 d, @
  5959.   ;; Width Factor - Text, Attributes and Shapes
    8 c7 i6 C6 U4 C" g1 z
  5960.   ;;9 X, q+ \; |4 d% v7 |$ N
  5961.   (defun set_tile_wid ()+ |6 {! R6 o4 U! p! z' ?. C
  5962.     (setq wid (cdr (assoc 41 elist)))
    4 D6 R  I3 T. }: c( S' B( I8 R4 w
  5963.     (set_tile "wid" (ai_rtos wid))
    ' x1 O' _4 }7 Y) @' Z6 R
  5964.   )0 I" z/ T: o' q; m" c" \
  5965.   ;;
    4 E3 X3 l: [% _" G' [
  5966.   ;; Obliquing Angle - Text, Attributes and Shapes3 {. ^) o) l" W
  5967.   ;;7 y+ K6 X4 F7 n' L
  5968.   (defun set_tile_obl (); T8 W, x# |5 {. @1 q5 l: ]3 b
  5969.     (setq obl (cdr (assoc 51 elist)))
    ) m$ @+ G# L. r$ J8 V
  5970.     (set_tile "obl" (ai_angtos obl))9 u0 N( i0 C9 E$ @5 p/ J
  5971.   )/ @2 C& E  ]& |/ J* h* ^
  5972.   ;;
    + {1 f* o4 ^& B5 N4 I( U
  5973.   ;; Text string
    9 y% s( ~) _: y$ g& f1 G
  5974.   ;;$ L# m! B4 t3 H3 \) \, S
  5975.   (defun set_tile_text ()
    ; X1 u7 s, ?8 s, o
  5976.     (setq text (cdr (assoc 1 elist)))
    ( w$ n# P4 q1 A* N0 e; ~
  5977.     (set_tile "t_string" text)/ X& I7 }. h2 [6 @
  5978.   )& u) Z2 D  b+ ?
  5979.   ;;
    + G2 P2 p& d5 q* g
  5980.   ;; Attribute Tag" Y' G# N7 y# w  e3 [/ a
  5981.   ;;
    8 n1 b. E5 W+ T4 f! R1 L, H
  5982.   (defun set_tile_tag ()/ H( a$ h+ A1 {( i4 V6 v
  5983.     (if (= etype "ATTDEF")9 @4 W6 k7 t! _$ h2 Q' S( A
  5984.       (progn* l, ^3 Z8 K! U/ x+ p6 d$ F
  5985.         (setq attag (cdr (assoc 2 elist)))
    , Y8 Z* x& @0 _8 o$ u/ S2 z
  5986.         (set_tile "tag" attag)$ f. m  b0 {% n- m' s# d
  5987.       ); ^5 _7 Z: T- M$ n6 U. B$ R5 a
  5988.     )
    ; p8 b% {- X$ n8 ^
  5989.   )0 b7 W' x' N; J+ Y+ p
  5990.   ;;  h* E( d2 P: n- H9 g
  5991.   ;; Attribute Definition
    3 A9 [7 r, g0 r* z% T
  5992.   ;;
    % N, ~8 S8 t) z. t, ^6 {
  5993.   (defun set_tile_prompt ()
    ! G. E" \2 e& o; |3 q5 L
  5994.     (if (= etype "ATTDEF")$ a* |4 v. x& w+ k
  5995.       (progn9 i8 v% S1 {4 o2 l
  5996.         (setq atprompt (cdr (assoc 3 elist)))6 G' Z6 S) j( {4 s1 w- k7 w5 y
  5997.         (set_tile "prompt" atprompt)
    . W7 _' o- D! B# t
  5998.       )
    : v1 c& {* E" `+ r# V) w! j" J
  5999.     )) y; H* q7 l' z" g' h
  6000.   )
    ( p. K+ y& l+ j/ }2 n
  6001.   ;;
    " x6 _/ f- B! G4 a- m
  6002.   ;; Justification setting for Attributes and Text.  Initializes
    & n: q. ?: _4 ]0 z" c
  6003.   ;; popup list box9 a( i. ?2 a: L1 c+ X$ e4 }0 f8 D
  6004.   ;;
    / a" n( _6 T' o- c
  6005.   (defun set_tile_just ()
    2 \) ]- o1 a- V3 F) ]8 j
  6006.     (setq ha (cdr (assoc 72 elist)))  ; horizontal alignment) }4 N" M3 v  ?4 z
  6007.     (setq va (cdr (assoc 73 elist)))  ; vertical alignment7 m5 y9 ]% v# Y8 h: q1 B: w
  6008.     (setq ha-prev ha)# n0 L2 n9 x3 a' ]/ v
  6009.     (if (= etype "ATTDEF")' A$ J/ R" t& f; X) U
  6010.         (setq va (cdr (assoc 74 elist)))  ; vertical alignment( {, `# u1 V/ G. |; B& b
  6011.     )
    $ \3 A5 C1 s& s9 Y  Z
  6012.     (setq jlist5 T2 t* z' o" e. p7 O6 ?
  6013.           (list "Left"        "Center"        "Right"
    , u% }; n  a' N: k) b" w! k
  6014.                 "Aligned"     "Middle"        "Fit"
    ; U  c" p- t8 b1 d4 j; \
  6015.                 "Top left"    "Top center"    "Top right"
    : _$ f3 }2 w4 T( q
  6016.                 "Middle left" "Middle center" "Middle right"
    ' ]% @& }$ F" h3 ~8 q! K  r4 L8 W7 d! c
  6017.                 "Bottom left" "Bottom center" "Bottom right"% ^, O: v: K3 R0 e. \5 n8 a2 i
  6018.           )
    ! m% x5 s+ r$ R5 z; n
  6019.     )
    ) u9 I$ v! r) v7 l
  6020.     (start_list "popup_just"): Q' B- A! e4 h
  6021.     (mapcar 'add_list jlist). u) @1 u# v% ?
  6022.     (end_list)
    * Y% N) p% k4 I( x/ b% R. g
  6023.     (set_just_idx)
    2 l9 y  [6 J$ z9 a
  6024.     (set_tile "popup_just" (jlist_act just-idx))
    % k8 D( R' Q8 ^8 \
  6025.   )! P4 m3 c1 K4 V
  6026.   ;;7 w6 O2 F1 z  T7 @6 j
  6027.   ;; Style setting for Attributes and Text.  Reads symbol table for popup list
    1 |$ R6 I, a$ k) y( @: C0 h' u8 |
  6028.   ;; box.7 z: [; h# E% l
  6029.   ;;; F% X; a: d: I
  6030.   (defun set_tile_style (/ sname style-idx tlist)# \4 s- H1 m7 N; i5 K
  6031.     (setq tlist (tblnext "STYLE" T)
    ' c8 _. ~6 `; P
  6032.           slist nil)! t* y$ k' d. r0 N& j6 A3 q
  6033.     (while tlist
    * F. Q7 w7 B( T4 v, _1 j6 r
  6034.       (setq sname (cdr (assoc 2 tlist)))! b$ I! z4 w* G' M) v  S+ ^2 B) g
  6035.       (if (and (/= sname "")
    % Q! L4 u/ M  J; X) ]
  6036.                (/= (logand 16 (cdr (assoc 70 tlist))) 16))
    . i& r7 Y: P1 A; s: U$ q
  6037.           (setq slist (cons sname slist)))# S  ?" [( I9 e+ g0 y
  6038.       (setq tlist (tblnext "STYLE"))), n4 n: \% s% |5 N
  6039.     (if (>= (getvar "maxsort") (length slist))2 E8 w1 l7 Y% j/ q$ ~% \
  6040.         (setq slist (acad_strlsort slist)) ; alphabetize style list
    : I# j. C+ G$ W! |# s* `) }
  6041.       (setq slist (reverse slist)))     ; or reverse it to put it in DB order
    5 R  H% E8 |( w+ e6 @! j. Q

  6042. 1 n4 q7 G7 i# @0 b3 w! l* l& }
  6043.     (start_list "style")
    8 b+ Z- d: X* U6 ?5 o8 V
  6044.     (mapcar 'add_list slist)
    7 S' ^2 N/ p. R( ]$ H, H
  6045.     (end_list)6 f: F' `* E1 _' F% P
  6046.     (setq tstyle (cdr (assoc 7 elist)))* g$ M( b) K+ I$ h/ X
  6047.     (setq style-idx (getindex tstyle slist))
    8 Q; i. a" A3 Q; w; i& }. L/ |' o
  6048.     (set_tile "style" (itoa style-idx))6 o5 v& L" z) H, K% i$ b
  6049.   )+ r8 R( E; F7 a! n9 {
  6050.   ;;; x9 r( @2 w: f6 ^( H* u
  6051.   ;; Text and Attribute setting - upside-down, backwards5 e" y( l& B0 ~' S
  6052.   ;;
    # r3 c. Z, P' C, s
  6053.   (defun set_tile_bk-up (); D3 W1 r  y4 g  o+ y# n
  6054.     (setq bk-up (cdr (assoc 71 elist)))
    * w& r" @4 c+ v7 q: \; h3 |2 |' c
  6055.     (if (= (logand bk-up 2) 2)
    + b& ?0 F. G+ Q, _7 u
  6056.       (set_tile "bkwd" (itoa (setq bkwd 1)))
    : C  V" T( ?7 S
  6057.       (set_tile "bkwd" (itoa (setq bkwd 0)))1 H9 _/ e: C4 S9 C3 J; R+ e: X
  6058.     )/ x) j8 F: N. y# t6 [
  6059.     (if (= (logand bk-up 4) 4)6 u/ \0 o4 j9 u7 h' t. m
  6060.       (set_tile "upsd" (itoa (setq upsd 1)))
    , z% J2 ~3 s7 x# W1 M3 H
  6061.       (set_tile "upsd" (itoa (setq upsd 0)))
    ' J5 _& Y  \, v5 v3 f0 g
  6062.     )" O! y7 u( n: N3 [1 W) j  L# N
  6063.   )0 K* ?: k: ]- ?" I6 O0 ~
  6064.   ;;
      a" N0 F/ T  [" Y: }/ `
  6065.   ;; Attribute setting - invisible, constant, verify, preset
    4 Y% S- W+ |- [" v) D  K9 `
  6066.   ;;
    : X9 L5 |/ M. L7 {  X7 {, E9 d, C
  6067.   (defun set_tile_icvp ()
    & F+ \, M& D( N5 A  q, v' d6 i
  6068.     (if (not (setq icvp (cdr (assoc 70 elist))))$ Q) i, J6 T, w: x/ h3 _, u
  6069.       (setq icvp 0)
    + s3 ?$ [  l, c6 x* D
  6070.     ): K3 c" U! J' ]& \
  6071.     (if (= (logand icvp 1) 1)
    6 J! V- D5 T+ v6 X5 f( k
  6072.       (set_tile "inv" (itoa (setq inv 1)))
    + U# d) W) M; J2 [: w% P& {$ Q+ v
  6073.       (set_tile "inv" (itoa (setq inv 0)))
    6 N! H8 J; c6 h+ E
  6074.     )
    3 G' }- q$ \7 v1 g
  6075.     (if (= (logand icvp 2) 2): }* ~' D) n' E3 `2 C
  6076.       (set_tile "con" (itoa (setq con 1)))
    3 ]: U6 i8 a' F0 {, @4 s5 y6 b$ V
  6077.       (set_tile "con" (itoa (setq con 0)))1 V7 q7 f, o, e% Q
  6078.     )
    ( f' V/ k1 K4 k% u  ]
  6079.     (if (= (logand icvp 4) 4)
    * U& Y6 W1 x. |- S& o, {5 O% q
  6080.       (set_tile "ver" (itoa (setq vfy 1)))
    3 h8 j3 z. s2 |8 D2 O+ j2 [
  6081.       (set_tile "ver" (itoa (setq vfy 0)))0 D; y/ x6 X  ~  Y) g+ R
  6082.     )7 ^% J  M2 e9 _6 U0 e. x7 v* U
  6083.     (if (= (logand icvp 8) 8)
    + r; u6 ]6 _4 p2 W1 [1 D4 D5 q# b
  6084.       (set_tile "pre" (itoa (setq pre 1)))
    ' q/ H, A$ U) l; N3 V
  6085.       (set_tile "pre" (itoa (setq pre 0)))( ?. k5 @* r6 R( P, O
  6086.     )6 b# F! X. ?0 f$ I
  6087.   )  H6 L8 S- E' z$ [) ]1 }& T# |
  6088.   ;;
    * M7 R4 o' v# A* U/ O" P: Y
  6089.   ;; Scale factors for block insertions5 Y$ V9 I# \" z0 y' t2 u
  6090.   ;;
    4 u4 H6 X; z# J% {# Q, x9 _
  6091.   (defun set_tile_scale (/ temp)
    : z; d  V3 A3 x0 u' N
  6092.     (setq temp (getvar "LUNITS"))
    ) k! s) u+ c4 ?, {& g
  6093.     (setvar "LUNITS" 2)
      I& m' o0 S2 e3 h* \3 l5 R# ~% u
  6094.     (setq xscale (cdr (assoc 41 elist)))4 A. K: b5 ~! r" ]  W; ?
  6095.     (set_tile "xscale" (ai_rtos xscale))
    ! ?  T4 m* f$ {1 D6 W' |
  6096.     (setq yscale (cdr (assoc 42 elist)))9 U* N3 e. f" u# V1 B9 q% m, ~
  6097.     (set_tile "yscale" (ai_rtos yscale)): V( T  A5 w, `% |$ u- Q9 i
  6098.     (setq zscale (cdr (assoc 43 elist)))+ ^) F- A1 H2 q, a# j& P
  6099.     (set_tile "zscale" (ai_rtos zscale))
    % G8 d% K) Z! k* B" ~* c# F: J
  6100.     (setvar "LUNITS" temp)3 d$ f4 c* j* |
  6101.   )
    1 Q+ c9 t0 o" P: h6 b; y- @
  6102.   ;;, G' w0 l$ q) ~0 a
  6103.   ;; Rows and columns for block insertions. x, c( k/ g6 z; F, u
  6104.   ;;) t" Q: l+ C: ]& H
  6105.   (defun set_tile_rc ()
    0 W2 X8 E4 \5 t' V
  6106.     (setq columns (cdr (assoc 70 elist)))
    4 K' ], `; ]& l, T* _' d
  6107.     (set_tile "columns" (itoa columns ))" g8 r8 P# K0 q( U8 W, `
  6108.     (setq rows (cdr (assoc 71 elist)))
    3 X. \  H8 t3 g
  6109.     (set_tile "rows" (itoa rows))
    , `1 n7 B- n8 e8 Z7 @% d! ^
  6110.     (setq col-sp (cdr (assoc 44 elist)))2 R4 u$ n+ Q7 B+ L9 j* v% d
  6111.     (set_tile "col_sp" (ai_rtos col-sp))
    , ~/ e1 f; A& n, a
  6112.     (setq row-sp (cdr (assoc 45 elist)))
    : ~1 D$ d! _* K+ X5 g6 A9 L
  6113.     (set_tile "row_sp" (ai_rtos row-sp)). G6 w( E$ \6 ~- w+ E
  6114.         (if (/= hasclip T)& Q: ]( o( K# |3 C# N& q  D& I
  6115.                 (mode_tile "xcliponoff" 1)& \9 W3 `* E8 ^# z9 t9 Y+ t5 O
  6116.                 (set_tile "xcliponoff" (itoa xcliponoff))8 q! D+ o0 o/ R: Q) t3 q
  6117.         )
    : g) N; B6 U: m- K5 O
  6118.   )+ F( |& c% L# r6 c; X9 @, k
  6119.   ;;
    ' K, I- ]3 }3 d, F* r, p1 }5 C5 w4 r
  6120.   ;; Invisible edges for 3DFACE
    7 r0 x4 ^  X& W/ o: h7 m6 D
  6121.   ;;
    ! R) P7 g: v* l  v# x) X4 I
  6122.   (defun set_tile_edges ()
    # o5 _+ J2 o: C! I9 l% {( T
  6123.     (setq f-vis (cdr (assoc 70 elist)))
    , _4 b  f  A5 z/ b
  6124.     (if (= (logand f-vis 1) 1)- d) L9 p- M! `3 t$ O5 [/ S
  6125.       (set_tile "edge_1" (setq edge1 "0"))3 i! d; ^+ Q; M. O( ^  v0 R3 a/ _
  6126.       (set_tile "edge_1" (setq edge1 "1"))
    2 V) q* J0 z, P7 \9 y; v
  6127.     )/ Q9 Q4 Q! t7 s' O: ]/ |- l/ U, `
  6128.     (if (= (logand f-vis 2) 2)8 a5 E- s9 c- V7 {. c& M
  6129.       (set_tile "edge_2" (setq edge2 "0"))2 Z4 u$ E: L3 h  t0 f4 I. t
  6130.       (set_tile "edge_2" (setq edge2 "1"))
    / S3 J2 _" r5 x: p
  6131.     )8 a: `; O1 V- O7 c- N
  6132.     (if (= (logand f-vis 4) 4)
    ) p3 |# c' j$ ?0 D6 G! a( K( w+ [
  6133.       (set_tile "edge_3" (setq edge3 "0"))
    1 _. b9 W! ~# {$ T1 x
  6134.       (set_tile "edge_3" (setq edge3 "1"))# m% A0 S# I% |. B' f) M
  6135.     )* J6 n3 M- W$ o( M- J7 T9 A
  6136.     (if (= (logand f-vis 8) 8)
    5 [* T% p0 d5 x: k% V
  6137.       (set_tile "edge_4" (setq edge4 "0"))
    / Z+ ]8 B* w* z8 k& E% H
  6138.       (set_tile "edge_4" (setq edge4 "1"))
    ! U4 T; a* a# y+ y
  6139.     )
    9 n' [6 W* o1 [) j0 {: x
  6140.   )* P5 y) \8 \. S! j; ?6 E
  6141.   ;;" F* j. Y; o7 [# Y# n2 Q
  6142.   ;; XYZ Point values for polyline vertex
      s" A/ `2 A* B# c$ c6 c  A
  6143.   ;;
    % k8 r$ S: B2 D" L3 F( w& S6 Y
  6144.   (defun set_tile_vpt (ptype)+ T: [4 h1 i5 b
  6145.     (if (= (cdr (assoc 0 vlist)) "LWPOLYLINE")" k" F5 o# Z$ C1 D6 v
  6146.         (progn
    1 d. L1 d* j, }4 X( x! Z
  6147.             ;; ctr is 1 based, vertices are zero based.
    ) \6 c2 R9 D2 S9 y2 B2 F, l
  6148.             (setq vpt (cdr (getLwVert (- ctr 1))))
    . ^& Q7 P0 R) H' \
  6149.             (set_tile "xtext" (rtos (setq x1 (car vpt))))4 m( O' a9 @( D5 m: V" u
  6150.             (set_tile "ytext" (rtos (setq y1 (cadr vpt))))
    - c: F: `% p) j* M9 z8 C
  6151.             (set_tile "ztext" (rtos (setq z1 (caddr vpt))))1 o+ r% r& [7 ~: g9 s2 T
  6152.         )  L1 e- @) E8 ]
  6153.         (progn0 x5 |: Y* G1 ~+ e/ r* g
  6154.             (if (= ptype 0); |# R" R! j& Q
  6155.                 (setq vpt (trans (cdr (assoc 10 vlist)) 0 1))6 k5 T3 z, T6 b7 t7 ], D
  6156.                 (setq vpt (trans (cdr (assoc 10 vlist)) ename 1))
    5 `3 u+ J: c, }
  6157.             )& \0 m& n0 X8 O4 r" j( {" m

  6158. ) |) y6 b* c' }6 N1 q
  6159.             (set_tile "xtext" (rtos (setq x1 (car vpt))))
    9 w4 U: ?+ A7 |" j& s+ p2 F0 ]9 M
  6160.             (set_tile "ytext" (rtos (setq y1 (cadr vpt))))
    5 E# q4 Y) {5 ]: X6 O) B
  6161.             (set_tile "ztext" (rtos (setq z1 (caddr vpt))))" L6 s9 `6 N0 o3 g
  6162.         )3 v2 [$ s2 n# u: D6 `0 D* p
  6163.     )
    ) K: q: X4 {0 K

  6164. 3 W# _5 d$ W. i; U- w' ?
  6165.   )9 j% ?. q- v5 y( J: Q8 G- F
  6166.   ;; This is the equivalent to doing an entnext on the heavy weight
    5 G9 K" J# U" P( \. \. X5 i- k. B9 q
  6167.   ;; polylines. The hard coded '4' below allow stepping over the3 ]. f+ u$ q0 @5 E- E- f. i
  6168.   ;; 40 41 and 42 group code information. The while loop finds the* Z/ I7 k1 v# i8 O
  6169.   ;; first vertex which will be used as the starting assoc in the& q+ ^) h/ X) A1 Y3 W' Q( U6 d7 w+ A
  6170.   ;; call to nth.
    2 t6 L7 p  R) Z3 m4 q
  6171.   ;;
    5 V: N; A8 |% Z
  6172.   (defun getLwVert (tmpctr / count tmp)
    1 P' D! c# v0 _6 |2 `7 [
  6173.     (setq count 0)" K" w7 D2 h( x
  6174.     (while (/= (car (nth count vlist)) 10)5 @' ^8 a8 {4 N# u
  6175.         (setq count (+ count 1))* e6 f+ {4 S+ ?, E* J
  6176.     )
    5 B; d1 v! E2 Y+ M3 D7 I, a
  6177.     ;; If the counter reaches the number of vertices,0 ^" P4 X$ [. O% y
  6178.     ;; reset ctr and tmpctr to zero again.$ G" |6 C. U& X. o" F7 Z3 y
  6179.     (if (= tmpctr (cdr (assoc 90 vlist)))
    0 J* l8 x6 D6 m3 E
  6180.         (progn# ^" ]! P: ?* V
  6181.         (setq ctr 0)
    ( W% ^7 `' N/ m5 k$ s! w0 K
  6182.         (setq tmpctr 0)
    , D% U) r7 g0 i8 a
  6183.         )
    % E7 J( t( Z; m$ Z/ R* B. V
  6184.     )
    4 E. I' b% ^5 @( |1 A0 x1 _- ?
  6185.     (setq tmp (nth (+ count (* tmpctr 4)) vlist)): d" U% x0 M% Y9 V2 r6 D
  6186.     (setq tmp (append tmp (list(cdr (assoc 38 vlist)))))
    / V6 ^$ `  G& ~+ P# S
  6187.     (setq pt1 (trans (cdr tmp) (cdr (assoc -1 vlist)) 1)); b# \. N- T: o5 }
  6188.     (setq tmp (cons 10 pt1))* R$ o5 j+ c6 S
  6189.     (setq tmp tmp)* W9 d9 N( _7 @+ S) k3 Z0 Q
  6190.   )
    6 k; F! O+ j- m# Q) o1 _( H1 _* F) O2 E
  6191.   ;;. Y' s% u, b  c( l" S- h
  6192.   ;; Set tiles for Spline properties. If the spline is rational then we3 |5 x2 V; j/ a! {
  6193.   ;; need to display the weight values of the control points, so set$ H% _8 K. a" Y+ J! \. P6 d0 R0 S6 p
  6194.   ;; flag to 1.0 P1 m8 U$ R* C. t% S1 [1 v+ N
  6195.   ;; 1 = rational spline2 W0 Q7 M- F7 u* w" y, q" a
  6196.   ;; 0 = non-rational spline
    3 O' |- v2 ?( s% {4 S( G2 l
  6197.   ;;& `  c) U9 p9 x) _
  6198.   (defun set_tile_spline_props ()0 m8 x! a, r" c7 k1 u, a
  6199.     (setq rational_spl_flag 0)      ;; initialize rational spline flag
    & q. E, `' X8 T4 s$ H, [
  6200.     (set_tile "Degree" (itoa (cdr (assoc 71 elist))))
    : p  H' Q. G$ R9 h
  6201.     (setq bit70 (cdr (assoc 70 elist)))1 ?6 z+ T0 l! X# {8 O8 l
  6202.     (if (= (logand bit70 1) 1)6 L6 ]4 T" H% ?8 \
  6203.         (set_tile "SpProp4" "Closed")* S/ v( A4 K% I- x
  6204.         (set_tile "SpProp4" "      ")# C, I3 q& s" b& u
  6205.     )* C4 H( q2 e5 w  b" c  a
  6206.     (if (= (logand bit70 2) 2)
    : H( Q, q- U3 F& h( w% A  ?
  6207.         (set_tile "SpProp3" "Periodic")
    : R' r; ~& N" ^; E% f( @
  6208.         (set_tile "SpProp3" "Non-Periodic")- S  ?/ I/ q% O( k
  6209.     )
    8 F# l% \0 ^1 y5 ^6 d
  6210.     (if (= (logand bit70 4) 4)" m- ?; M! L) o
  6211.       (progn
    8 J, O% k/ l2 X  m9 n) c, e
  6212.         (set_tile "SpProp2" "Rational")5 H1 U9 }1 X3 Q+ Z: j. i3 h
  6213.         (setq rational_spl_flag 1)      ;; this is a rational spline
    2 w* Y% o. v  v/ E* L
  6214.       )0 `  X7 e5 N$ A2 J
  6215.         (set_tile "SpProp2" "Non-Rational")
    0 F2 J& p( {0 g' ?* X# F
  6216.     )7 r% o0 F$ U* Y- @1 O
  6217.     (if (= (logand bit70 8) 8)
    ) U1 B& E/ @# g$ G, k
  6218.         (set_tile "SpProp1" "Planar")7 `& l* o. ?9 I7 I6 H; H0 W
  6219.         (set_tile "SpProp1" "Non-Planar")
    ! _9 u8 i7 p7 ]7 Z6 K  o
  6220.     )
    0 N; q/ d+ A& K: L# O
  6221.     (if (= (logand bit70 16) 16)
      N/ g" ^# y4 ^6 H% i6 ^& ]; Z4 O
  6222.         (set_tile "SpProp5" "Linear")
    3 U8 a: H/ q8 k! l" ]; Z: f
  6223.         (set_tile "SpProp5" "      ")+ x5 v$ j5 U! P9 V  k8 J. t. Y
  6224.     )9 I! c  l5 L0 U0 C: N; k
  6225.   )
      U0 y/ c) A+ Y1 m7 M' J
  6226.   ;;
    ( h. j1 a% G2 Z1 W6 a8 L
  6227.   ;; XYZ Point values for spline points
    ' c  W* }6 w# U3 p3 K1 U
  6228.   ;; Need to account for WCS/UCS
    3 T) M' m  S0 o7 M6 n: W
  6229.   ;;
    ) C8 {, {, f& g  e% `+ q! t7 {" D% ]
  6230.   (defun set_tile_cntl_pt ()4 G, k1 S$ S' V3 M+ E2 i+ \) U  x' _! \
  6231.     (setq cntl-pt (cdr (assoc 10  elist)))
    & E' A7 m( e  y$ s+ o
  6232.     (set_tile "xtext" (rtos (setq x1 (car cntl-pt))))
    2 t' G6 J3 Z, ?" L4 G
  6233.     (set_tile "ytext" (rtos (setq y1 (cadr cntl-pt))))
    6 g& R4 H( }; R. r9 d1 F* w
  6234.     (set_tile "ztext" (rtos (setq z1 (caddr cntl-pt))))
    - N7 {; @1 x( Q3 h% _8 x
  6235.     (if (= rational_spl_flag 1)      ;; if rational spline
    1 F. Y5 z4 q. {( l
  6236.       (progn                         ;; show weight
    6 v, @6 B3 D( V2 }
  6237.         (setq weight (cdr (assoc 41 elist)))) W5 V; Y8 P) x+ r) n4 `- G
  6238.         (set_tile "weight" (rtos weight))
    ; R) N# P9 H$ m- u  w
  6239.       )                              ;; else+ C! `" r9 E: p8 |# Z* Q1 c
  6240.         (mode_tile "weight_text" 1)  ;; disable weight field
    ' _: v: y+ E6 b5 V, A$ _* I6 F% t7 o
  6241.     )7 u( O9 F3 X. K5 z. k
  6242.   )+ I$ {/ a; A0 n0 v
  6243.   ;;0 G7 h; K" w9 X& }
  6244.   ;; XYZ Point values for spline points( r) ]( I4 N+ U% w2 H4 f
  6245.   ;; Need to account for WCS/UCS! j# o" \: E; s7 |& H& \, R
  6246.   ;;; s, i" e1 L4 |5 ^
  6247.   (defun set_tile_data_pt ()
    8 D8 L2 D9 _" Z! i5 A
  6248.     (if (not (assoc 11 elist))
    0 G" Y3 }# k0 r* c- u
  6249.       (mode_tile "data_pts" 1)
    & X( T9 j& H3 M: w3 k) R% p2 r8 s
  6250.       (progn
    : Z& r; t; z$ h5 g  f  g9 ]
  6251.          (setq data-pt (cdr (assoc 11  elist)))' G% E+ L' t& e5 |: j# x  p0 M
  6252.          ;; display points with current precision.! R$ ]7 w( U/ F( z
  6253.          (set_tile "dxtext" (rtos (setq x1 (car data-pt))))! f" D* i8 v$ }
  6254.          (set_tile "dytext" (rtos (setq y1 (cadr data-pt)))), X% b1 e: Q* M2 P3 D6 g, a2 }
  6255.          (set_tile "dztext" (rtos (setq z1 (caddr data-pt))))$ a# g  r: I) [. D+ ~
  6256.       ); O- R6 D' |, a6 ]) u, r$ D
  6257.     )
    4 H. Q3 A" n0 m$ J
  6258.   )
    % Q+ e" T  E& y* {- b4 O
  6259.   ;;
    % ^/ ~9 J- Z. m+ x2 w2 K3 o
  6260.   ;; Fit curve, fit spline, or smooth spline surface setting
    " V! A) N9 s& e$ N! D
  6261.   ;;
    8 t7 N" @7 X1 B4 M8 S1 d+ ~) x; p
  6262.   (defun set_tile_fitsmooth ()* y. j- q) l' q9 }! [$ G
  6263.     (cond+ f) f+ L+ z' I) Y2 l& D& R
  6264.       ((= (cdr (assoc 0 elist)) "LWPOLYLINE")
    # ^, s- I3 Z7 _" V* s
  6265.         (set_tile "none" "1")0 v% W6 Z0 C3 M
  6266.       )
      _6 @. D' J2 G) v; d  o2 O
  6267.       ((= (logand bit70 4) 4)) f2 P/ N: P9 p0 ^- X( Q$ R5 o
  6268.        (cond
    9 }' I7 `2 b' Y* ], ?# V
  6269.          ((= bit75 0)
    / f% q+ H- L1 Y; F" e
  6270.            (set_tile "none" "1"). F' q: C- Q+ E8 Q
  6271.            (setq spltype 0)
    , p! P( d$ }2 {9 L* U% q2 L
  6272.          )6 j8 q# Z" m8 N; c8 @7 M
  6273.          ((= bit75 5)- w$ p3 Q3 R3 |( x3 c; K
  6274.            (set_tile "quad" "1")7 ]; J2 G! v7 o8 ]
  6275.            (setq spltype 5)
    , }* `+ X6 ?, J/ \
  6276.          )+ z+ C" K0 s, c# H
  6277.          ((= bit75 6)
    ' [* q, F3 f3 w0 O1 [8 C& X
  6278.            (set_tile "cubic" "1")- l. t0 M* Z# t, Z- R2 `
  6279.            (setq spltype 6)7 d! U; h) w$ @5 J& ]" J& g( c
  6280.          )0 H% b% @* j7 U% U
  6281.          ((= bit75 8)* W' d: I" |0 y
  6282.            (set_tile "bezier" "1")
    ) p5 Y  X3 w3 P( E- }: q4 J
  6283.            (setq spltype 8)
    * H. v( o" a' D- V6 L/ w; R6 K0 I
  6284.          )
    , f5 B! B. V6 b8 t7 b' o! n  s
  6285.        )
    ! h0 |6 ?" A2 H
  6286.       )# _  P# f. B& p7 h! e; S8 `  s6 `
  6287.       ((= (logand bit70 2) 2)
    , H  w9 P: Z1 z; O# U  d! r) P
  6288.         (set_tile "fit" "1")
    4 a$ a9 @* c  ^+ ]# ?1 b- b/ G% h
  6289.         (setq spltype 1)
    ; N3 I  b. g2 V: S/ g9 B
  6290.       )9 }6 o" I! I7 X7 _" j
  6291.       (T (set_tile "none" "1"))% P' \/ M" F$ J* K6 j$ B
  6292.     ), w9 g3 K" O7 U( N- a5 A8 F- K- H
  6293.   )6 Q5 c/ v' T& B% k4 T1 u4 W3 U0 w- ?
  6294.   ;;* v) ^3 x9 _0 J5 z
  6295.   ;; Closed or Open mesh and polyline setting0 S& W6 e& |" _+ i1 G
  6296.   ;;* v' U& V  K9 W: P- N7 Y
  6297.   (defun set_tile_closed ()8 _. q" t8 ?% v, _! b
  6298.       (if (= pltype "3D mesh")" F' X) ?) L7 F' v) f( Z
  6299.         (progn& I( |! {! N, J3 \( B' k
  6300.           (if (= (logand bit70 32) 32)
    2 [. J! x) q7 L/ p
  6301.             (set_tile "closedn" (setq closedn "1"))  n  Z7 l: b$ ~
  6302.             (set_tile "closedn" (setq closedn "0"))7 j# M* S# z! X) c. d6 m
  6303.           )1 V+ P! ~1 e; V
  6304.           (if (= (logand bit70 1) 1)# c- i2 q! }7 k2 d6 ?# f
  6305.             (set_tile "closedm" (setq closed "1"))# l- o8 ?7 ^4 @3 i$ l  G
  6306.             (set_tile "closedm" (setq closed "0"))
    ; d! a" l6 U- Z' B  t* X$ }( m; z3 v
  6307.           )
    6 t( k  u$ |( C2 ]! d1 v# a
  6308.           (setq old-closedm closedm old-closedn closedn)) l- B! r! ^& W% w+ F4 h
  6309.         )
    2 _4 m1 Z/ [/ |( c; y
  6310.       )3 ~. J% Y; ]" ^2 ]/ r- Q
  6311.       (if (or (= pltype "2D polyline"). j9 [( C9 v; \
  6312.               (= pltype "3D polyline")
    / i4 X2 N5 v& W* T
  6313.           )
    7 h! h! }" y; n
  6314.         (progn+ P, c- [4 B& f+ k) P
  6315.           (if (= (logand bit70 1) 1)! N: T: ?0 l. J' h
  6316.             (set_tile "closed" (setq closed "1"))2 P& X0 b2 W; Q+ h
  6317.             (set_tile "closed" (setq closed "0"))" B# D, d' n: N6 k! o* M! q: i
  6318.           ); l' Q8 }& u- ]) R' w
  6319.           (setq old-closed closed)  r  Y$ x$ m2 [
  6320.         )5 ], H' X2 f) `6 q6 c
  6321.       )$ _0 z3 O- r% {5 J- i7 a) p
  6322.   )
    0 C( ]) @5 H4 i3 S
  6323.   ;; Set common action tiles" w* e4 k+ p! |7 v1 e  y
  6324.   ;;4 R# O' g, `2 E% Z) V9 h& l
  6325.   ;; Defines action to be taken when pressing various widgets.  It is called& J6 a8 u8 w1 z5 T
  6326.   ;; for every object dialogue.  Not all widgets exist for each object dialogue,& O8 v+ Q, j& Z+ \& V* u; E
  6327.   ;; but defining an action for a non-existent widget does no harm.
      H2 ?2 V% M1 I! W! Q" G
  6328.   (defun set_action_tiles ()4 r0 y: b) L6 A' e+ }
  6329.     (action_tile "cancel"       "(dismiss_dialog 0)")
    # s! v( G( q( T+ p& J
  6330.     (action_tile "accept"       "(dismiss_dialog 1)")0 L9 n6 ]! @. z
  6331.     (action_tile "help"         "(help \"\" help_entry)")+ J2 w/ M# q  i4 ~& A$ `
  6332.     (action_tile "b_color"      "(getcolor)")
    2 X& p2 p# t) n) ~. {
  6333.     (action_tile "show_image"   "(getcolor)")
    % a8 w7 `0 j0 ?3 ^
  6334.     (action_tile "b_name"       "(setq elayer (getlayer))")
    5 ~3 v% V- k4 ^$ y% n) S
  6335.     (action_tile "b_line"       "(setq eltype (getltype))")
    " \$ }0 V7 \- V. h1 t
  6336.     (action_tile "eb_thickness" "(getthickness $value)")
    5 y  E5 e# c6 v
  6337.     (action_tile "eb_ltscale"   "(getltscale $value)")
    * R& J0 |0 z: O: d

  6338. / ]* w" ~0 O/ j- X7 t6 ^
  6339.     (action_tile "pick_1"       "(dismiss_dialog 3)")
    # H; L1 v6 @4 w: S; s) g
  6340.     (action_tile "pick_2"       "(dismiss_dialog 4)")6 A: x* q. |+ y
  6341.     (action_tile "pick_3"       "(dismiss_dialog 5)")
      D# }: l7 @# Y) X+ j
  6342.     (action_tile "pick_4"       "(dismiss_dialog 6)")/ Y- T' U) @& N/ \$ i7 ^
  6343.     (action_tile "x1_pt"        "(ver_x1 $value)")' f: X2 ~# p: {. r$ ?" _& ~* y
  6344.     (action_tile "y1_pt"        "(ver_y1 $value)")# L/ F- s) c- Q; @, r8 Y
  6345.     (action_tile "z1_pt"        "(ver_z1 $value)")" Y! v4 p4 E3 x" T
  6346.     (action_tile "x2_pt"        "(ver_x2 $value)")
    5 g; A( X* m" L/ y4 t! G$ O/ O
  6347.     (action_tile "y2_pt"        "(ver_y2 $value)"). `3 |1 [  T" B
  6348.     (action_tile "z2_pt"        "(ver_z2 $value)")& Y/ c3 J6 U0 L. ]! K" Y/ i
  6349.     (action_tile "x3_pt"        "(ver_x3 $value)")
    / V3 Z9 Y. t; O) {$ V( w
  6350.     (action_tile "y3_pt"        "(ver_y3 $value)")
    * y1 q. f- i/ S5 E
  6351.     (action_tile "z3_pt"        "(ver_z3 $value)")
    4 W2 M6 F' l8 `9 G0 L- |
  6352.     (action_tile "x4_pt"        "(ver_x4 $value)")
    $ @8 M! }8 P9 V  }# b( M
  6353.     (action_tile "y4_pt"        "(ver_y4 $value)")1 G4 @1 ]) T0 Z( f: [
  6354.     (action_tile "z4_pt"        "(ver_4 $value)")
    / g. E5 O# t3 y( p5 d2 d+ c  u

  6355. $ F, p4 J. O8 ], |
  6356.     ;; Action tiles for Xline & Ray
    ! Z2 M; C& Y( N& D
  6357.     (action_tile "xline_x1" "(ver_xline_x1 $value)")
    1 w6 j5 |6 n; s: }: B
  6358.     (action_tile "xline_y1" "(ver_xline_y1 $value)")( l- J: O- U, T7 f" ~4 v  r
  6359.     (action_tile "xline_z1" "(ver_xline_z1 $value)")! L- ]8 h6 t& S! D# {( ]
  6360.     (action_tile "xline_x2" "(ver_xline_x2 $value)")& z. W" A$ D* f: S$ N/ ^2 j
  6361.     (action_tile "xline_y2" "(ver_xline_y2 $value)")
    $ |8 W+ m: x) O8 V
  6362.     (action_tile "xline_z2" "(ver_xline_z2 $value)")* z& C; v  N+ i) B8 f5 M

  6363. - j  o- y9 m) C1 K7 V
  6364.     (action_tile "edge_1"       "(setq edge1 $value)")
    5 t! h8 j: y$ q% ?
  6365.     (action_tile "edge_2"       "(setq edge2 $value)")4 j9 U& C/ h3 e1 u  N4 n% A
  6366.     (action_tile "edge_3"       "(setq edge3 $value)")
    " k& H- }: B: G6 n
  6367.     (action_tile "edge_4"       "(setq edge4 $value)")
    7 @% ~  a6 Y) _  w: Z0 s& u
  6368. / Q& g+ s& l- ~: K
  6369.     (action_tile "radius"       "(ver_rad $value)")
    : y' [4 v8 _6 b+ J* a2 d
  6370.     (action_tile "st_ang"       "(ver_ang1 $value)")" e/ @3 [3 ^/ p3 Y; p, O
  6371.     (action_tile "end_ang"      "(ver_ang2 $value)")
    + t, f6 @$ N7 w/ @4 |
  6372.     (action_tile "end_eang"     "(ver_eang $value)")5 f7 g6 \3 ?. [1 [( g% L( `
  6373.     (action_tile "minrad"       "(ver_minrad $value)")
    - G8 z, d0 Z" w9 [( F5 h1 q
  6374.     (action_tile "majrad"       "(ver_majrad $value)")  G9 K. G$ G: c+ k: N2 N' S

  6375. 0 O0 w& n6 e. @/ {( `1 U5 B% B
  6376.     (action_tile "xscale"       "(ver_xscl $value)")
    9 l* ], n) f4 p- K& l$ q( A
  6377.     (action_tile "yscale"       "(ver_yscl $value)"), P/ M, o+ D- b+ d( b# s8 L4 X
  6378.     (action_tile "zscale"       "(ver_zscl $value)")( \* |4 ]& [- L. k1 S, @  b
  6379.     (action_tile "rot"          "(ver_rot $value)")
    # s! U9 e8 H- X9 T
  6380.     (action_tile "columns"      "(ver_col $value)")  C# h$ v3 V! w; t! r8 A# M
  6381.     (action_tile "rows"         "(ver_row $value)")- T4 F$ \+ `, j# j  Z
  6382.     (action_tile "col_sp"       "(ver_colsp $value)")6 w8 ^0 V0 e3 A% ^! |
  6383.     (action_tile "row_sp"       "(ver_rowsp $value)")% G2 w0 v: {6 O8 G4 u2 @# S
  6384. 5 u4 C; @9 a0 ^# e* H  v
  6385.     (action_tile "hght"         "(ver_hght $value)")/ {/ ~# \# e$ E4 Q% r
  6386.     (action_tile "wid"          "(ver_wid $value)")) {. M5 n  `  A6 I8 v# n
  6387.     (action_tile "obl"          "(ver_obl $value)")  w4 o0 Z, E" R0 P/ l* H3 P
  6388.     (action_tile "style"        "(style_act $value)")
    4 k) S7 R: p6 W) Y4 M; F
  6389. * B  M4 l! x3 J; @- O! X
  6390.     (action_tile "t_string"     "(ddgettext)")0 r) z, h9 i; l6 P6 ?: S
  6391.     (action_tile "tag"          "(ver_tag)")
    7 g/ |& X; z' s. I2 i' e
  6392.     (action_tile "prompt"       "(ddgetprompt)")
    3 S1 y0 @" C5 h6 N, k# P* x; g
  6393.     (action_tile "bkwd"         "(setq bkwd (atoi $value))")0 I. M9 @1 q: m' N- [
  6394.     (action_tile "upsd"         "(setq upsd (atoi $value))")6 ^: {4 E  D1 @6 o9 y$ B7 g
  6395.     (action_tile "inv"          "(setq inv (atoi $value))")
    % l% G* G: x1 [1 k. J
  6396.     (action_tile "con"          "(setq con (atoi $value))")
    3 g* ]" L, D" `( `1 @
  6397.     (action_tile "ver"          "(setq vfy (atoi $value))")
    9 D) z2 z1 J% ~7 ?
  6398.     (action_tile "pre"          "(setq pre (atoi $value))")
    - r. \3 R& h4 E$ w, S& Q! L
  6399.     (action_tile "popup_just"   "(jlist_act $value)")9 `; \, N, z  R. U0 r8 u0 b/ e/ L% k. }

  6400. - Q% |5 S7 E7 l; P0 j# m
  6401.     (action_tile "closed"       "(setq closed $value)")
    ; g' J' h" y( Y4 G5 Z  n
  6402.     (action_tile "ltgen"        "(setq ltgen $value)")# n( V! o7 e+ l- u0 U6 l
  6403.     (action_tile "closedm"      "(setq closedm $value)")
    ! K, _, N5 L7 Y* l5 p4 p+ s! M$ @
  6404.     (action_tile "closedn"      "(setq closedn $value)")
    . D: Z/ n! ]6 F
  6405.     (action_tile "next_v"       "(next_vertex)")
    9 k9 K8 \- ?" X8 |3 [, X& N5 C8 X/ m
  6406.     (action_tile "xcliponoff"   "(setq xcliponoff $value)")' \. ~1 s! r8 z! t2 _
  6407. - F. ~4 C2 S0 H1 T! f
  6408.     (action_tile "next_cntlpt"  "(next_cntl_pt)")! F8 \# M; D- V9 E1 k
  6409.     (action_tile "next_datapt"  "(next_data_pt)")
    0 {( c* }2 D0 P: x
  6410. , m. j6 I3 x* }3 z6 n* ^# E
  6411.     (action_tile "none"         "(if (radio_gaga \"none\")(set_uv 0))")9 o: e. N3 L' a* i; S) T
  6412.     (action_tile "fit"          "(if (radio_gaga \"fit\")(set_uv 1))")8 y8 _; ~/ i  ~0 {
  6413.     (action_tile "quad"         "(if (radio_gaga \"quad\")(set_uv 5))")
    7 Q3 R5 }4 I# v; Y; N: z' Y! K/ k
  6414.     (action_tile "cubic"        "(if (radio_gaga \"cubic\")(set_uv 6))")$ M7 v  h/ E& f% W! i
  6415.     (action_tile "bezier"       "(if (radio_gaga \"bezier\")(set_uv 8))")
    8 a- V% z; |1 X6 M

  6416. ' }$ v8 b7 {) H# [" M+ S& c% P
  6417.     (action_tile "u"            "(ver_u $value)")
    0 s7 j. V9 S' x/ {9 y1 f- S8 I( E0 ~
  6418.     (action_tile "v"            "(ver_v $value)")  S2 U9 O0 K" c- M& r& @, r
  6419.   )
    3 [; u+ d8 Q% `# T6 x2 F- n

  6420. 7 L5 h' P9 g5 q+ G# R, c1 \
  6421.   (defun ddgettext()) b- g+ p6 }' m, |
  6422.     (setq text (get_tile "t_string"))) e8 N5 Y9 _" ?; ?
  6423.   ): Z7 X" _' f/ O( ?& p- _
  6424. 9 E: m, ?) _1 a
  6425.   (defun ddgetprompt()
    " D, |0 K+ F* @( ?3 B2 P
  6426.     (setq atprompt (get_tile "prompt"))" F. N( B$ @$ T) o2 J0 R
  6427.   )
    + @: X! ?$ F; \; v1 [
  6428. 6 r. n; l  ?/ r8 q- ?
  6429.   ;; As OW doesn't support disabling of individual radio buttons within( L" ~8 n# K. B! r
  6430.   ;; clusters, a check must be performed as to the legitimacy of the6 C- W7 P8 P# v: Q5 U
  6431.   ;; button pushed and reset if necessary.0 I4 J6 G7 m5 y7 W2 O$ J
  6432.   (defun radio_gaga (pushed)
    & Q) t& J! [2 [7 F) T+ O
  6433.     (cond  ]% l% B4 t! d* e, _! w# N
  6434.       ((and (= pltype "3D polyline")
    / g/ h! C( p( {4 b) K
  6435.             (or (= pushed "fit")
    2 r% W  a  ]$ ?; Y9 ?
  6436.                 (= pushed "bezier")
    ' Q6 h, h6 _( v
  6437.             )( [2 c) `1 x0 t, o* j3 b: ?
  6438.        )
    , h9 v  n* @7 H8 y
  6439.         (set_tile "none" "1")7 S8 T! i, o3 N( |3 A* c# ~
  6440.         nil- [9 e) R8 o: R7 [; d. J5 X
  6441.       )
    # d4 S( o! N& }" f! g1 b
  6442.       ((and (= pltype "3D mesh")+ ?' N+ G1 l: m+ k* s" S. i0 x
  6443.             (= "fit" pushed)
    $ A3 w6 w" u0 \* e
  6444.        )# @# P% o) {; W5 o* j" U
  6445.         (set_tile "none" "1")
    " w1 h! U* Q" w6 w) U5 H) a) ^
  6446.         nil
    & c+ d" q& s' J% |2 }. e: ?$ I
  6447.       )
    * y' `9 b' t5 ^" g- y+ p$ P
  6448.       ((= pltype "Polyface mesh")
    9 ^3 u7 ?4 M5 A) Y3 ^
  6449.         (set_tile "none" "1")  O( Z3 P& e# w( E& b$ I1 W( B
  6450.         nil
    6 H7 ^" w& U6 X+ L) z% O
  6451.       )
    / L+ O5 o$ Y1 X. D
  6452.       ((and (= pltype "2D polyline")
    & J$ R# M  g% ]
  6453.             (= "bezier" pushed)) t2 n& M' \* |  p% X: B- v% r
  6454.        ). v! r2 a, O8 V
  6455.         (set_tile "none" "1")  P6 h& E! A' e2 e( u
  6456.         nil% i' {4 x) {; M
  6457.       ); x% O5 C5 u( P' n% V/ K. K, ~
  6458.       (T)
    , J; ]7 i2 H# j7 }3 n
  6459.     )- D5 L' z$ j! [3 K
  6460.   )
    8 P1 H) u1 u3 \9 d# S3 t( H, i
  6461.   ;;) t# D$ ~$ _7 m. f
  6462.   (defun set_uv (type_n)
    % J7 e  `( O7 j) Z( r
  6463.     (setq spltype type_n)
    / I) K4 h' ]' k0 o2 O- A  W
  6464.     (if (= pltype "3D mesh")* O* U9 h3 ?5 K2 R2 x1 A- |
  6465.       (if (= spltype 0)
    & A+ U6 g, s2 @" D' l4 _
  6466.         (progn
    % O0 y; H1 M% U2 y
  6467.           (set_tile "u" (itoa (setq u 0)))$ n. _$ ^" H& C% }  d, m
  6468.           (set_tile "v" (itoa (setq v 0)))
    ! J$ g; e! b0 B7 V* K: H$ |& U
  6469.         )
    , E) W+ f# O4 x6 e
  6470.         (progn
    : Z. l! k% \3 {5 f  M
  6471.           (if (= u 0), u/ [5 Z3 e4 S4 x( o
  6472.             (set_tile "u" (itoa (setq u (getvar "surfu"))))
    7 \' T  S$ E, H; ~
  6473.           )
    # L& M/ u' j- y" w# Q, a
  6474.           (if (= v 0)
    ' V3 k. m, _% n6 v) U2 Y* G
  6475.             (set_tile "v" (itoa (setq v (getvar "surfv"))))
    ! v3 a+ O* i( b; i
  6476.           )0 _: i6 T3 C# ^
  6477.         )5 u) b9 z& c" l% A2 S1 S" c* f, k
  6478.       )" c7 J! x* |. d& x. N
  6479.     )
      ?$ o- l+ _' x1 G8 N/ c* G+ T
  6480.   )
    % K' Y/ ~  H! o" Y1 O/ ~7 o' K

  6481. : o! K& _- D7 L0 L* a  A- X1 y
  6482. $ f1 e$ o' T2 `# i
  6483.   ;;
    / q# R' M- Q( t  ^! M( {9 V
  6484.   ;; Verification functions
    " @* {0 x4 m. ^- q) n6 l. f
  6485.   ;;3 r( n/ n, g0 b+ f
  6486.   ;; Verify distance function.  This takes a new X, Y, or Z coordinate or5 j- q' u. ~+ h7 _
  6487.   ;; distance value, the tile name, and the previous value as arguments.. b  s* ~) R5 {; Q! g$ n
  6488.   ;; If the distance is valid, it returns the distance and resets the tile.9 b5 t% \) e  z" @8 L
  6489.   ;; Otherwise, it returns the previous value, sets the error tile and keeps. ^& r! m) H+ h; A
  6490.   ;; focus on the tile.  Shifting focus to the tile with invalid value can: U/ f# l9 M/ l2 r1 `! o5 ?( A
  6491.   ;; trigger a callback from another tile whose value is valid.  In order
    0 Y7 ]& X/ j6 C: v+ }
  6492.   ;; to keep the error message from being cleared by this secondary callback,' n5 q0 l) r0 b' \# h  I
  6493.   ;; the variable errchk is set and checked.  The last-tile variable is set
    # s$ m2 @1 f$ q8 S% {& X
  6494.   ;; and checked to ensure the error message is properly cleared when the5 a3 J( k: M9 d: }
  6495.   ;; user corrects the value and hits return.' `% \1 |& ?" j) k
  6496.   ;;. f! y5 M3 G# ?+ G
  6497.   (defun verify_d (tile value old-value / coord valid errmsg)
    - A% t9 P& \* ~7 ?; Z( `- @
  6498.     (setq valid nil errmsg "Invalid input value.")( H0 Y2 f! G# D9 C
  6499.     (if (setq coord (distof value))5 G- q& w' h3 [) ~
  6500.       (progn5 w5 o2 Q7 H( ]0 r5 T# G) x6 g4 f* a$ A
  6501.         (cond
    : @; _; T+ s- }; i) N
  6502.           ((or (= tile "radius")
    $ S' }- Q" w  u* J; x+ {9 J
  6503.                (= tile "hght")4 @. K# I% _3 `+ U( a
  6504.                (= tile "wid"); d% U  T7 ~: A0 u3 ~
  6505.                (= tile "majrad")
    2 q% ^3 b. ]6 b1 l
  6506.                (= tile "minrad")
    ' {' `0 k4 U- y$ Z$ x- e
  6507.                (= tile "eb_ltscale")! U( z4 B8 Q$ x- a
  6508.            )
    + N& C& a# W! k% |4 Y
  6509.            (if (> coord 0)
    ( d4 i3 A/ f) h1 Q
  6510.              (setq valid T)% K8 h/ B9 f; _# S
  6511.              (setq errmsg "Value must be positive and nonzero.")3 H8 ~( n2 I- r& Z" A
  6512.            )6 _; H  `4 Z$ t  _! z9 d8 l- j
  6513.           )
    ! T9 s" ~7 u1 L1 b8 U
  6514.           ((or (= tile "xscale")
    8 Z* R2 M" T0 S  g, R
  6515.                (= tile "yscale")2 i% w. B7 G4 e$ W/ f3 A
  6516.                (= tile "zscale")
    + |, f9 U$ B! u8 c- M
  6517.            )
    0 _1 F3 W3 O8 ^# k) H+ F
  6518.            (if (/= coord 0)( V) Q% l; M" c; e" @
  6519.              (setq valid T)0 U" Z8 G( S6 V1 y  \  L
  6520.              (setq errmsg "Value must be nonzero.")
    . `. ?  k( ]- g8 I! a- Z. o! t
  6521.            )- ~, Y6 P# [. H" z" \
  6522.           )
    & ~* ?% P* _5 z
  6523.           (T (setq valid T))2 \6 j( n) g/ t
  6524.         )
    1 z4 k7 S0 L; I
  6525.       )
    ) m! Q- F- ?1 B6 ]7 `2 C7 h* G  u
  6526.       (setq valid nil)
      Z# G' U; ?: K5 O% c
  6527.     )  F! i* d4 }) C
  6528.     (if valid
    ( Q+ t: K3 N" ]; q* N0 H! U
  6529.       (progn9 O: }! F6 O4 F: f, R  J
  6530.         (if (or (= errchk 0) (= tile last-tile))
    1 b5 c3 ], s3 p: x
  6531.           (set_tile "error" "")7 @9 @9 G3 [6 C3 L: \  X7 @
  6532.         )3 j# {2 u, `4 ?( U
  6533.         (set_tile tile (ai_rtos coord))& s$ \5 O% ^+ A
  6534.         (setq errchk 0)- ]/ C" ]4 v' U6 f/ c
  6535.         (setq last-tile tile): b; E) l0 l2 h: f5 u
  6536.         coord
    2 c) u+ K* P- v1 R* p
  6537.       )
    / q' n& B+ t! G% r
  6538.       (progn0 j7 O7 g' c+ f
  6539.         (mode_tile tile 2)            ; Move focus to offending field% a( [5 C% Q/ V( L
  6540.         (mode_tile tile 3)            ; Select offending text  ~* ]6 P& |& G- \5 ~/ M
  6541.         (set_tile "error" errmsg)
    % k3 n! U8 b4 S5 P2 f! o6 s# G
  6542.         (setq errchk 1)6 F3 _* F2 `) o7 L
  6543.         (setq last-tile tile)5 d* \, Z" x" _" X" [
  6544.         old-value5 l& K- K0 u, Y1 F
  6545.       )9 h( k8 X  a. f# V8 U  v
  6546.     )
    % J4 u7 k9 d* Q- A7 \
  6547.   )) N, p* }. y; p, W) h" `9 J  a
  6548.   ;; Function for Xline coord edit box checking.
    1 p: K1 s3 R) O9 {; V
  6549.   (defun verify_xline (tile value old-value / coord valid errmsg)
    # d6 A5 ^3 S6 D4 D0 r0 z: A
  6550.     (setq valid nil errmsg "Invalid input value.")
    / D/ t# c% z7 E1 N4 K) j6 b8 M
  6551.     (if (setq coord (distof value))
    % S0 b+ z& V0 Q5 K( v/ K- V% X. K+ d
  6552.       (setq valid T)
    8 V$ B) u1 t6 ]5 t# y6 r/ E
  6553.       (setq valid nil); y5 A6 k% x7 @: k! Q8 T
  6554.     )4 a; g( W1 _) l# x7 p8 U
  6555.     (if (and coord8 Z+ G' {3 c: r  c  C9 |5 p
  6556.           (and (= (atof (get_tile "xline_x1")) (atof (get_tile "xline_x2")) )
    . |0 }/ j  Z; c% M; j
  6557.                (= (atof (get_tile "xline_y1")) (atof (get_tile "xline_y2")) )- N8 n  W7 Y9 L2 b3 [- E$ M
  6558.                (= (atof (get_tile "xline_z1")) (atof (get_tile "xline_z2")) )9 B, O6 l# z  b& O+ g
  6559.           )
    ! M4 n- ?  s- Y8 o6 }) `) L7 c
  6560.         )5 D* T" S3 u3 N
  6561.        (progn
    9 a" N, A* }% h$ W6 J2 S
  6562.          (setq errmsg
    , ]. B4 K7 N$ e) R1 g, G! V
  6563.                   "The Root point and the Second point cannot be equal.")
    3 W! b/ ^& p& S" R
  6564.          (setq valid nil)1 F/ \$ g. V& s1 m: u/ R
  6565.        )
    $ k9 l1 ~% \3 Y, l# L% ~
  6566.     )
      Y. C: A+ z+ D2 `$ z& s! |. L0 d
  6567.     (if valid
    2 T- w! c% L- w+ \% C/ w$ }
  6568.       (progn
    5 w7 ?! J: [; i
  6569.         (if (or (= errchk 0) (= tile last-tile))
    ! j" ~1 {6 g7 k$ H# U* h$ v
  6570.           (set_tile "error" "")9 S- l$ ]: a6 Q6 o* E7 N( t; k6 v
  6571.         )
    ! S- u2 ^, i" M( k0 M, b8 U
  6572.         (set_tile tile (ai_rtos coord))
    " N0 ~* t$ k. @
  6573.         (setq errchk 0)- K, S' d, n$ l; O% O6 |
  6574.         (setq last-tile tile)
      K* {) w* e' q( A
  6575.         coord* z( [$ Q9 {, o# z3 n# m
  6576.       )$ Q8 p4 G; x& i' u7 ~+ o9 J0 o: I4 w
  6577.       (progn) _9 `8 n0 I/ v" n
  6578.         (mode_tile tile 2)            ; Move focus to offending field% `2 T& R+ k1 O" \1 T+ y2 J
  6579.         (mode_tile tile 3)            ; Select offending text; v) a1 `' d8 l' b/ |& X
  6580.         (set_tile "error" errmsg)
    ) v0 Y9 U+ R! A- ]1 s
  6581.         (setq errchk 1)# K6 {6 @! }" e7 p+ {' J1 K
  6582.         (setq last-tile tile)0 ^7 [3 S5 X1 x( Q
  6583.         old-value& J8 I: o( q. U4 D; r; y; ^8 e1 I# f
  6584.       ); q. _  ?5 i' U
  6585.     )
    6 Q: B% x& T+ X2 g
  6586.   )+ }* e" F2 ^. J9 V  g3 C) I

  6587. : H4 }1 a1 u4 D7 \# G
  6588.   ;;' T& l$ E' C2 |: Y/ \
  6589.   ;; Verify angle function.  This takes an angle and a tile name as arguments.
    - ?3 v3 {7 i1 @7 f! \
  6590.   ;; If the angle is valid, it returns the angle and resets the tile.
    + e+ ?, _0 ~, ~' ]) g% U
  6591.   ;; Otherwise, it sets the error tile and keeps focus on the tile.
    9 s9 r; {& W# c
  6592.   ;;
    / i5 s, g0 x' G* y/ Z2 p% j8 m
  6593.   (defun verify_a (tile value old-value / ang valid errmsg oblqmax)& a$ Y  H1 S7 U! b6 w2 U
  6594.     (setq valid  nil
    ; Z  `9 o+ H5 D3 ~/ G9 ]4 Y
  6595.           errmsg "Illegal input value.". m/ D3 Q- y) b  G3 a
  6596.     )* v+ O% n$ h0 D1 v
  6597.     (if (setq ang (angtof value))
    : N  {9 ?( W9 p3 c9 o: l
  6598.       (cond
    & s! b6 K- Q  o* R4 l0 i! V3 B
  6599.         ((= tile "obl")               ; Restrict obliquing angle
    0 l8 s# q- h% Z) p
  6600.          (setq oblqmax (+ (* (/ PI 2.0) (/ 85.0 90.0)) 0.000001))
    8 K7 U( ?1 X1 X$ G% c
  6601.          (if (or (<= ang oblqmax)1 ]: D4 a4 N9 S
  6602.                  (>= ang (- (* 2.0 PI) oblqmax))
    2 B8 U0 \7 ?; z( {, A
  6603.              )
    : k. {5 F4 J/ P) Y) K+ q1 i  D
  6604.            (setq valid T)& L1 d0 h% P: J  h2 x6 }' Y
  6605.            (setq errmsg
    ) Z* w* \! E& `* s
  6606.                  "Value must be between -85 and +85 degrees.")) A" p  ]0 \0 ^6 e3 d& {5 e( a9 Q
  6607.          )
    % d( e5 q# q' n2 `! D- ]0 f
  6608.         ), f- w0 u! Z4 ~  `
  6609.         (T (setq valid T))            ; Other angles not restricted
    + V3 b1 t- [! A9 w
  6610.       )
    7 v& k; A% n! s& H4 J  E
  6611.       (setq valid nil)                ; Invalid angle input/ |1 \' R, L: }) w9 q! v. c* N  \
  6612.     )
    1 U( @0 X9 N# d9 g7 D. ^" ]; P
  6613.     (if valid
    3 i% o' {) r* M) Z$ ~& {
  6614.       (progn
    " Z  N+ f1 t3 [; q# I( C# n- Z* B' \* B
  6615.         (if (or (= errchk 0) (= tile last-tile))
    % n1 W. G; w5 u  ~
  6616.           (set_tile "error" "")% r) G+ K0 {  a/ G3 r
  6617.         ); o* p  j, m1 p5 P; }) @7 ~
  6618.         (set_tile tile (ai_angtos ang))6 S9 r, t( l. C6 R$ Q! ?
  6619.         (setq errchk 0)
    / s: ^7 l9 j8 w$ g7 k. l2 A* n/ Z
  6620.         (setq last-tile tile)
    & U* m. G/ ?4 F. g
  6621.         ang! S: J* J9 P. q3 q* i5 o
  6622.       )% q" ~5 {  |5 Z1 r1 D; m
  6623.       (progn2 f( ?2 D) y6 J8 T
  6624.         (mode_tile tile 2)            ; Move focus to offending field/ b1 I1 I' }6 H. o9 P
  6625.         (mode_tile tile 3)            ; Select offending text
    # r3 b) Q! x/ F5 q2 N' u
  6626.         (setq last-tile tile)
    3 s$ r; J: [/ }" t$ D
  6627.         (setq errchk 1)$ g8 U4 D+ b/ F+ ?! B7 ~
  6628.         (set_tile "error" errmsg)
    + a) ]! ^( Z7 X8 A; r! ~; I
  6629.         old-value
    9 ~- |: X. s( o& d7 c* u5 B6 ~' r
  6630.       )
    3 s, i% [+ E+ S
  6631.     )( O8 Z# f$ }- Z) r6 j4 ?
  6632.   )
    0 q' H: C, ?: s
  6633.   ;;' @2 W) ?8 ]3 D% W9 I* P+ z/ ~' P
  6634.   ;; Verify angle function.  This takes an angle and a tile name as arguments.
    3 ^1 }$ X: {6 W: D4 Y2 }, u% |
  6635.   ;; If the angle is valid, it returns the angle and resets the tile.# {4 [1 N. O) z
  6636.   ;; Otherwise, it sets the error tile and keeps focus on the tile.
    $ S( @8 m* I  S2 a3 r
  6637.   ;; This function is specifically for the end angle of the ellipse object. If
    : f7 H3 q0 ~$ B# c2 k
  6638.   ;; the end angle resolves to zero then we want to display it as 360.
    # B$ o+ h8 C- m# [1 ?- X  c: E
  6639.   ;;
    4 H# {0 G* f% x: G; q0 F
  6640.   (defun verify_ae (tile value old-value / ang tempend)
    " U6 u8 h- F8 @) L1 ?. `8 [* H
  6641.     (if (setq ang (angtof value))
    0 B8 x, R- }8 I9 z  K
  6642.       (progn, q. z4 E$ z3 F' K; V: w# ]
  6643.         (if (or (= errchk 0) (= tile last-tile))5 m- ], ]5 V4 h: \
  6644.           (set_tile "error" "")- t# A& l! c7 `  W
  6645.         )7 H- O: V8 F% ^5 J+ b: P& i7 H
  6646.         (setq tempend (ai_angtos ang))! l" B- P! ~2 x4 g
  6647.         (if (= tempend "0")
    " {- x' p3 q" @) c
  6648.            (set_tile tile "360")" Q0 K5 H* _  a; P5 `  H
  6649.            (set_tile tile tempend)
    ) g& O+ C6 J" z; u) O
  6650.         )
    9 ^! y/ A. S2 e1 l+ E3 E5 Q4 h9 W
  6651.         (setq errchk 0)3 f" i9 r1 |) y8 Q. t8 Z  y/ F
  6652.         (setq last-tile tile)' b. ?, B' {. p9 \( s& O7 f
  6653.         ang
    6 P+ d$ P, n" d% k5 j# m7 b
  6654.       )( M6 B1 D- L2 |8 @9 @; S/ B
  6655.       (progn
    ) P" R6 i4 e" d/ n
  6656.         (mode_tile tile 2)            ; Move focus to offending field* m( Q3 g. O3 n2 D5 |" y' o
  6657.         (mode_tile tile 3)            ; Select offending text
    $ A' d4 \8 W- l, c7 v
  6658.         (setq last-tile tile)5 b5 E7 g- Z+ `1 C& @1 S
  6659.         (setq errchk 1)
    8 S' r" m) E+ v. D
  6660.         (set_tile "error" "Illegal input value.")
    : o/ K2 B4 `. C2 E$ @
  6661.         old-value9 r5 f4 C, O- V. C% j2 \
  6662.       )9 D0 L; f9 Q/ q
  6663.     )
    ! x2 x6 I9 K* ]1 }0 j# C9 t7 j, e$ Q
  6664.   )' F* u' |) f+ ]0 L; L
  6665.   ;;
    * U$ L8 c3 D3 G0 }1 C# f5 ]3 F1 W
  6666.   ;; Verify integer function.  This takes an integer and a tile name as
    : M7 m/ A1 i. j/ Z9 p% y. V+ a
  6667.   ;; arguments.  If the integer is valid, it returns the integer and resets the2 H/ r8 s" Y: l3 |. X3 @
  6668.   ;; tile.  Otherwise, it sets the error tile and keeps focus on the tile.
    ; F/ H& H: h; A$ S) y3 [
  6669.   ;;
    & l* V9 l# N$ P2 @& w6 V
  6670.   (defun verify_i (tile value old-value / int valid errmsg)
    ' H8 x  [! p2 v$ D+ d& |
  6671.     (setq valid nil)
    + k8 x' g0 u) ]& t$ K4 r
  6672.     (setq errmsg "Value must be an integer.")  ~  \% n9 e0 V9 W+ ?
  6673.     (setq int (atoi value))" C, [" G; @) X6 d9 H" ?! c
  6674.     (if (setq intchk (distof value))
      _( |* i0 {; O, M# x: p
  6675.       (cond
    ( Y  J2 G. g+ x( [& d8 L: R) @3 v5 h
  6676.         ((or (= tile "columns") (= tile "rows"))* l+ T; r, p7 S5 t  e) Q$ h
  6677.          (if (and (= int intchk)
    9 f7 s: p- J- \/ A+ Y
  6678.                   (>= int 0). Z, v: e5 p3 L9 |. Y
  6679.                   (<= int 32767)6 J2 g# R& k7 b& ?- Q- P! B5 R2 k  k
  6680.              )
    4 J8 K/ i) w8 s3 r) a# R3 D
  6681.            (setq valid T)! m5 g- g( G; b3 E
  6682.            (setq errmsg "Value must be an integer between 0 and 32767.")
    7 r, n) F$ m& X9 m* S. g/ Q! r. `3 Q
  6683.          )0 a8 j# }# A! b0 L8 {
  6684.         )9 r5 o1 r7 g% ?  j  o2 Z! s
  6685.         ((and (or (= tile "u") (= tile "v")))
    , C' ~& {4 a0 E# W
  6686.          (if (and (= int intchk)
    9 c& [% I0 g3 C8 L
  6687.                   (>= int 0)
    - U% r8 d* ^0 k- x/ @' @: |" o
  6688.                   (< int 201)
    , Q& J" p) ]/ o4 r
  6689.              )4 z' ], G: e0 S, ^
  6690.            (setq valid T)
    - G" i7 h9 {0 Q2 F& Y
  6691.            (setq errmsg "Value must be an integer between 0 and 200.")
    / Q( J+ p) C4 ]3 C9 K
  6692.          )
    : H1 Z0 W+ O6 T& q( z
  6693.         ). Q$ u, M9 G% }$ V2 z" y1 b
  6694.       )) G( s0 B6 M5 K8 X- U. S
  6695.     )" }, C4 [0 `7 N+ r: p) i0 C/ {+ {
  6696.     (if valid
    ' z4 M! H( {+ O9 X. A( T9 Q- q
  6697.       (progn
    & X6 J" Z6 V* X
  6698.         (if (or (= errchk 0) (= tile last-tile)); N: _! N: Q( J) w
  6699.             (set_tile "error" "")
    " o, O$ G: ~7 T( r) ?  o. C. ~
  6700.         )8 G; p. z3 x; P
  6701.         (set_tile tile (itoa int))
    ! S, z  t$ M- w' K! x: o
  6702.         (setq errchk 0)
    9 v9 T3 o* R+ F# W
  6703.         (setq last-tile tile)
    ( r- S+ `+ _" ^: S4 L1 \4 ^1 N
  6704.         int
    3 V0 B0 F* F' w( |
  6705.       )( C6 F) h* C, H
  6706.       (progn
    7 b) ~' y3 [( }! ]! @+ B
  6707.         (mode_tile tile 2)            ; Move focus to offending field& w0 q9 V2 U/ c1 n5 d* T
  6708.         (mode_tile tile 3)            ; Select offending text
    / @' i' D# P, }
  6709.         (set_tile "error" errmsg), a1 R% ^9 Z: N
  6710.         (setq errchk 1)
    ) E" e0 t! t$ l6 v
  6711.         (setq last-tile tile)
    % C! T, c  P! q  e
  6712.         old-value6 f+ J2 w8 i5 s1 i% i5 n/ {# z
  6713.       )
    ' d) T2 G9 H1 T' y: ?) U, O7 p! ~$ i
  6714.     )2 b! c& ]) v: S" {
  6715.   )$ V  r6 c$ N* t, U( \; L9 G
  6716.   ;;
    : l, Q, R. ~$ P5 L: g( q
  6717.   ;; Functions that verify tile values for integers
    : b/ I  q: y2 r( Y
  6718.   ;;
    & g" u3 ?7 i" O$ _5 G& q
  6719.   (defun ver_col (value)
    ) t9 a, Z# S! I
  6720.     (setq columns (verify_i "columns" value columns))4 F" k2 _8 v9 N# g/ s8 D( `8 y* k
  6721.   )# B0 H+ _, r) A9 _! F
  6722.   (defun ver_row (value)
    * K" A- e0 s! G! ^/ Y  Q
  6723.     (setq rows (verify_i "rows" value rows))/ s) ]1 U& t" {+ g  z& ]# k. Y
  6724.   )
    - N) |- b# m9 n. G
  6725.   (defun ver_u (value)
    3 L7 O# I* L' x2 w
  6726.     (setq u (verify_i "u" value u))
    ' n! ^7 ^$ Q7 x% g) }' s
  6727.   )
    1 t) M" Q/ N) a; q4 l
  6728.   (defun ver_v (value)
    % o- D; m. m/ F$ R- ]6 h
  6729.     (setq v (verify_i "v" value v))) S4 z; E, _- s' y2 l* S( n$ h' b1 W4 ~
  6730.   )% e4 V6 z. ], `# E. d1 K+ S4 @3 L
  6731.   ;;
    - U# I8 z1 E( T5 d. s4 ^; t: u' r
  6732.   ;; Functions that verify tile values for reals
    $ G% ^0 h* b+ K4 `( T
  6733.   ;;
    ( e9 H( h% P; x4 C0 H( D/ X
  6734.   (defun ver_x1 (value)
    + N- M+ F- Z9 G' U9 R
  6735.     (if (setq x1 (verify_d "x1_pt" value x1)) (calc))
    ) o$ R$ q8 {7 Q9 p) I" V1 `
  6736.   )
    % }( g+ I) a2 K7 J
  6737.   (defun ver_y1 (value); V5 l! g5 J6 t$ }3 J0 ~5 ^1 R
  6738.     (if (setq y1 (verify_d "y1_pt" value y1)) (calc))
    4 X- p/ @( ~8 w) L
  6739.   )6 d/ g/ Q2 |# H# U) b
  6740.   (defun ver_z1 (value)$ z# o' e4 D5 O! Y! v
  6741.     (if (setq z1 (verify_d "z1_pt" value z1)) (calc))
      A* g4 c- l2 g. @9 W
  6742.   )+ b8 A4 M6 J. b0 m3 F
  6743.   (defun ver_x2 (value)
    * ?3 b, @; E: }0 U; b& Q( R
  6744.     (if (setq x2 (verify_d "x2_pt" value x2)) (calc)): s* j5 t" G3 [, G) D. h
  6745.   )$ G' e$ A1 G! j# `; }- G0 M
  6746.   (defun ver_y2 (value)
      N. O& ]8 ~. I% P7 u/ B# b
  6747.     (if (setq y2 (verify_d "y2_pt" value y2)) (calc))& v' n9 B  V5 \# R8 e& p6 L* A
  6748.   )6 V" x6 n9 P+ H& m- n+ ]% u7 K: Q4 Y
  6749.   (defun ver_z2 (value)
    ( x, {# k2 q1 Q  h8 S2 G
  6750.     (if (setq z2 (verify_d "z2_pt" value z2)) (calc))
    7 i$ W" `3 X! J) b7 p; `
  6751.   )6 T, T, P& j! {, y
  6752.   (defun ver_x3 (value)8 ~; X5 a+ e6 ?! N& B
  6753.     (setq x3 (verify_d "x3_pt" value x3))3 W/ s! n% c, @$ q) k+ x
  6754.   )
    ' s" y8 |8 ]* N0 R1 ]
  6755.   (defun ver_y3 (value)6 \1 P3 g3 C5 r/ D. V( s0 w0 x4 p
  6756.     (setq y3 (verify_d "y3_pt" value y3))
    8 g7 p( c# b6 N: J" w. L# i. m
  6757.   )  [. T9 f# i6 F6 _
  6758.   (defun ver_z3 (value)5 [$ [) V& R3 ?3 B, |" F
  6759.     (setq z3 (verify_d "z3_pt" value z3)): D8 _; [' o" k" s" o8 H
  6760.   )
    " @5 }" G5 u& C9 [. Y/ I& t4 \6 ]
  6761.   (defun ver_x4 (value)
    ( d' ?  i" z% ?+ c
  6762.     (setq x4 (verify_d "x4_pt" value x4)): t) Q( V4 ~" s. R, q
  6763.   )
    & l/ X6 c' s% v) m3 a
  6764.   (defun ver_y4 (value)
    - f3 R6 |8 D# w6 D) n
  6765.     (setq y4 (verify_d "y4_pt" value y4)); r; X2 ]- v6 `7 }; e. {
  6766.   )
    ; _0 `2 g( ?# n8 u8 Y* k
  6767.   (defun ver_4 (value): D: O4 t, X& ]! H) m4 ?  x
  6768.     (setq z4 (verify_d "z4_pt" value z4))
    % }$ k1 }9 X) |# I9 z( ^- ]# C
  6769.   )6 p. S. p" R$ `
  6770.   (defun ver_xscl (value)9 J; @! \% R6 s" q: Q3 C
  6771.     (setq xscale (verify_d "xscale" value xscale))& f: q- e. [; z6 y7 X8 q4 B
  6772.   )" U7 N4 D$ N% G
  6773.   (defun ver_yscl (value)
    0 B  `7 T' D! f$ q+ J/ ^
  6774.     (setq yscale (verify_d "yscale" value yscale))
    " R4 n1 o7 l' O& x* M. y
  6775.   )9 h: M) F5 b1 P' d  K9 T
  6776.   (defun ver_zscl (value)
    : o; |& k2 v$ s1 x" K- n
  6777.     (setq zscale (verify_d "zscale" value zscale))! }' ~# X# I6 q# K: B
  6778.   )) d. U7 Y4 K! V% @
  6779.   (defun ver_colsp (value)
    7 D% p; ~9 C, @3 Q* V4 |% n
  6780.     (setq col-sp (verify_d "col_sp" value col-sp))
    - o% R  x7 B% q: b/ k' I' }
  6781.   )9 e, a) h- \! n- r. [* Q
  6782.   (defun ver_rowsp (value)
    ( r% ^' Z" r: M9 Y! y
  6783.     (setq row-sp (verify_d "row_sp" value row-sp))% e# m( t3 s% w1 n
  6784.   )2 I6 @% |- z3 W/ e" j# n/ t
  6785.   (defun xclip ()
    ) P$ p8 V  E7 M5 g: P
  6786.     (setq xclipmode t)" g* K1 Z1 B8 I5 L
  6787.     (if (= xcliponoff "1")1 _2 f# l% A6 B  o8 E
  6788.       (command "_.xclip" (cdr(assoc -1 elist)) "" "_on")' Y$ D  W8 ^) {$ f( q
  6789.       (command "_.xclip" (cdr(assoc -1 elist)) "" "_off")- \4 C: S2 i5 D2 `' o0 g1 y
  6790.     )
    . b7 e, Q- f% [5 n+ F( F$ S
  6791.   )
    ! B* U6 @& q7 k) Y' A, {
  6792.   (defun ver_rad (value)
    5 E: Y* C$ {# |& I9 m' N; b7 V
  6793.     (if (setq radius (verify_d "radius" value radius))
    ; d  ~7 C( t' I7 m8 L
  6794.       (calc)
    0 W/ l3 |$ D- Z8 Q% t
  6795.     )
    8 g# _6 U  B9 U" o: e
  6796.   )$ n& Q& ~7 k/ _2 K
  6797.   (defun ver_majrad (value)
    6 j0 ~1 n* ?# U9 g* p
  6798.     (if (setq majrad (verify_d "majrad" value majrad))! ~0 z& S" ]0 ^$ _
  6799.       (ell_calc_newval "majrad")2 W' f9 D8 a! v
  6800.     )
    6 N; F- }  c& Z" p4 r( R. a/ M1 |
  6801.   )
    ( U& j7 Y: f  ~# E1 |
  6802.   (defun ver_minrad (value)% B4 t4 J' j/ n8 v
  6803.     (if (setq minrad (verify_d "minrad" value minrad))* ^/ s* Q+ N# P( \
  6804.       (ell_calc_newval "minrad")
    3 q8 ^, U2 x- H1 d3 ^0 E
  6805.     )
    3 ]1 k# y0 j8 K7 H
  6806.   )
    5 \! z" w$ e, t
  6807.   (defun ver_hght (value)) f4 N6 T$ p( r, X4 e+ y
  6808.     (setq hght (verify_d "hght" value hght))8 R9 @9 w+ D  r. J
  6809.   )' L" u9 w$ a* I$ P; i
  6810.   (defun ver_wid (value)! g! {- p- c5 K, {* a
  6811.     (setq wid (verify_d "wid" value wid)): d2 R# ]; b% o' s6 L4 C9 }, Y4 I
  6812.   )
    4 |* ?& S  M# ^! p5 v; R9 `
  6813.   (defun ver_xline_x1 (value / temp)
    ( y% g* H7 P6 S: ~; W0 q
  6814.     (setq temp xline_x1)
    9 {6 l4 `5 S! Z  I7 r) @
  6815.     (setq xline_x1 (verify_xline "xline_x1" value xline_x1))
    ( Y( ~! R0 ~0 O" {& J. I4 i: _) D  F
  6816.     (if (/= temp xline_x1). D+ |: R% Z/ k8 W# f
  6817.       (progn (modify_xline 0) (set_tile_dirv) )0 |0 p& p* b- `; p+ G7 h2 i2 a
  6818.     )
    0 K: ~  h2 I# l
  6819.   ); \. {. O# x. B. l- i4 X9 I+ w
  6820.   (defun ver_xline_y1 (value / temp)
    + x3 L4 a% G/ p# S5 V0 ^
  6821.     (setq temp xline_y1)
    : z+ R; I9 Y$ m. H
  6822.     (setq xline_y1 (verify_xline "xline_y1" value xline_y1))
      c. y% z1 Z& _4 y
  6823.     (if (/= temp xline_y1)' s; r" i2 K, p+ O
  6824.       (progn (modify_xline 0) (set_tile_dirv) ). ^* ]" i7 a9 s7 |/ c
  6825.     )
    $ a% w, }2 x1 K7 }; q) C
  6826.   ). |, J0 P; O3 g  E; `: O
  6827.   (defun ver_xline_z1 (value / temp). ^6 i1 O( U( b% \! A  S
  6828.     (setq temp xline_z1)
    0 S6 G! x# n5 U: q* ?
  6829.     (setq xline_z1 (verify_xline "xline_z1" value xline_z1))2 f, ?8 R. y( t, c" X
  6830.     (if (/= temp xline_z1)2 S1 f& S; i! \: H
  6831.       (progn (modify_xline 0) (set_tile_dirv) )6 U9 s% k: {9 H$ s
  6832.     )
    % K- h5 R: v, p4 S! c
  6833.   )9 x2 Z4 @- u4 g) H/ T
  6834.   (defun ver_xline_x2 (value / temp)9 O  F: B) Z: ?# S; ?' B
  6835.     (setq temp xline_x2)3 w) d# I. r: ~7 G+ r; o
  6836.     (setq xline_x2 (verify_xline "xline_x2" value xline_x2)); a$ F9 V' e' p! V$ m$ q
  6837.     (if (/= temp xline_x2), u4 _0 K' T! z" M0 X
  6838.       (progn (modify_xline 0) (set_tile_dirv))5 f6 f! f9 j2 ~3 u
  6839.     )8 H+ D* s. z) y4 z. ~% G; Q; s
  6840.   )
    1 ?8 a! V+ Y9 F6 @, X9 l8 }% ]# a
  6841.   (defun ver_xline_y2 (value / temp)4 L* Z( z1 ?  p3 Y
  6842.     (setq temp xline_y2)6 n3 g% ^- M' Q8 p& }* v- n
  6843.     (setq xline_y2 (verify_xline "xline_y2" value xline_y2))
    4 X% G* m7 Q7 W: [; T- `
  6844.     (if (/= temp xline_y2)* [: V1 z5 v( C+ H0 u% Z
  6845.       (progn (modify_xline 0) (set_tile_dirv) )$ D/ N7 ]% g  x* o% M  L( l' M
  6846.     )
    : \  @! m: }; A1 M0 N5 _/ b! \; p
  6847.   )! E* L1 c) d& o7 H
  6848.   (defun ver_xline_z2 (value / temp)
    2 T7 Q: @% i' r/ V/ J; l" A
  6849.     (setq temp xline_z2)
    : U; R0 `1 v* @& l
  6850.     (setq xline_z2 (verify_xline "xline_z2" value xline_z2))
    . }( A! \3 }) f6 h3 @) W# e8 G
  6851.     (if (/= temp xline_z2)
    0 b9 ]  S8 F: F4 \4 t$ j7 _" K! R
  6852.       (progn (modify_xline 0) (set_tile_dirv) )& Q2 G* o- e" Z3 a; X
  6853.     )
    ! ]# E  K1 a8 _6 N0 u
  6854.   ): n! u* k7 R# w3 m" F& o/ P
  6855.   ;;
    , z# Q& O) F; h1 F: b
  6856.   ;; Functions that verify tile values for angles
    1 J: N& L" w  `7 _* v, `
  6857.   ;;
      G5 X/ [6 c! [" E! X/ i* k
  6858.   (defun ver_ang1 (value)
    8 n9 W+ \- G/ g% u. A: Q
  6859.     (if (setq st_ang (verify_a "st_ang" value st_ang)); }/ Q1 {: K# }. h
  6860.       (calc)* m8 D  ^9 Z. T. G0 F8 a
  6861.     )
    1 D5 `! R1 D$ L! A% }
  6862.   ); C* `7 _+ W) \' x9 N! H
  6863.   (defun ver_ang2 (value)
    % T# J; r0 |; X( N1 k: t: G( [
  6864.     (if (setq end_ang (verify_a "end_ang" value end_ang))
    ) E0 z7 w# l2 E( W5 F- C/ k
  6865.       (calc)
    / p: z/ U: J  V! ]
  6866.     )
    & q$ I: m5 ]) N5 Z$ F
  6867.   )
    6 {6 q8 b, [9 t( g
  6868.   ;;
    3 T. o9 n. t+ w% \+ W+ z
  6869.   ;; Verify tile value for ellipse end angle. Handled slightly7 y7 F$ F) D, E" M. B% z; z
  6870.   ;; differently than the other angles.
    # L" A; m: s# V6 _" |
  6871.   ;;
      Z, D* a% M+ r
  6872.   (defun ver_eang (value)
    . y1 z- n8 ~3 d! X( ^
  6873.     (setq end_eang (verify_ae "end_eang" value end_eang))
    # D- I9 H8 f% t/ c" J& e
  6874.   )) }4 V! B6 d8 Z, L( I$ S3 ^
  6875.   (defun ver_rot (value)2 D7 s) F! V0 v$ |: A) M3 t
  6876.     (setq rot (verify_a "rot" value rot))
    4 e% ^% W3 ?, F2 E) y
  6877.   ), F% l5 c5 s1 u& U' E5 S
  6878.   (defun ver_obl (value)
    6 g/ V  g' h& d6 q/ Y6 t
  6879.     (setq obl (verify_a "obl" value obl))3 z* P. c6 G3 y( `9 n& I; ?
  6880.   )6 \8 P& H& `: E) d; E/ U
  6881.   ;;
    % P% ?7 l6 K" n: e9 j( P7 s. X
  6882.   ;; Function that verifies attribute tag field for null string,
    6 Y% _5 ?( {/ `3 S, k" \, `
  6883.   ;; or a string that contains one or more spaces.  Tile value
    ) T+ y( J, n& W- H& s6 S
  6884.   ;; is also converted to upper-case as well.
    2 [7 L  `' B* T" x4 C" f( x! t
  6885.   ;;
    - k- }( n- u$ F" F$ }4 F
  6886.   ;;  h2 S! e3 r+ y# {$ ^
  6887.   (defun ver_tag ( / tval)6 Z" f) G: e; E* V
  6888.      (setq tagval (get_tile "tag"))
    0 S$ f: ^' K, o6 [& Y% B
  6889.      (set_tile "error" "")
    # U; Z5 Y# j/ h
  6890.      (cond
    ; A7 ^1 H5 o9 y2 ~; v$ s% n
  6891.         (  (or (eq "" (setq tval (strcase (ai_strtrim tagval))))
    . r7 y) ]% _7 L" t+ m) ^
  6892.                (wcmatch tval "* *"))
    # g9 Q+ F, p, D
  6893.            (set_tile "error" "Invalid attribute tag.")  H6 q5 ~; S8 q
  6894.            (mode_tile "tag" 2)
    ( A, t# |$ I, M0 e8 Y' z. l% G" ^: e
  6895.            (mode_tile "tag" 3))
    , ?4 f( g- z; l& u9 E5 R; r4 z
  6896.         (t (set_tile "error" "")
    3 B3 ~5 s1 ]* o% R
  6897.            (set_tile "tag" tval)1 H% R3 J1 L2 j% J
  6898.            (setq attag tval)))
    4 T$ X% E6 N) G2 c- Q' ?
  6899.   )7 P3 U6 T$ _8 _5 ^+ y7 M9 D4 I/ y
  6900.   ;;0 r' I* z5 N" j; o
  6901.   ;; Calculation functions
    5 ?  V! W, a9 K' n4 w$ l. ^
  6902.   ;;$ u* Z) ?1 J, y/ X: H% ~
  6903.   (defun calc ()( S1 d0 G! K; B, G
  6904.     (if (= etype "LINE") (line_calc)), ^; n" L' a7 ^6 ^/ P" q
  6905.     (if (= etype "ARC") (arc_calc))
    2 s* N! z7 S  H/ ~
  6906.     (if (= etype "CIRCLE") (cir_calc))
    % s  {% ]) _" M. n9 n* N" N8 |
  6907.   )
    9 h3 ^% b: n3 [* n
  6908.   ;;
    3 T/ v  g$ {( F3 G2 c
  6909.   ;; Calculation functions for lines, arcs, and circles
    $ t6 f* L6 X0 F4 ~) O
  6910.   ;;
    ; W' a2 b0 H. Y6 h6 d
  6911.   (defun line_calc ()0 T& P$ s& R7 |/ C
  6912.     (setq stpt  (list x1 y1 z1))
    / R9 C( {- G- _; ]$ m( G  c
  6913.     (setq endpt (list x2 y2 z2))1 z; X2 P) L6 ^6 q5 M. b# D
  6914.     (set_tile "delta_x" (rtos (- x2 x1)))! L4 ^8 R3 E8 q- h6 ~) q. b
  6915.     (set_tile "delta_y" (rtos (- y2 y1))): c  d; j% X; {* p
  6916.     (set_tile "delta_z" (rtos (- z2 z1)))
    - d+ s6 C4 U5 d3 V1 Z" V. }( Y
  6917.     (set_tile "l_length" (rtos (distance stpt endpt)))) S# Z) h4 {# C) ]: A
  6918.     (set_tile "l_angle" (angtos (angle stpt endpt)))4 O; @6 _0 r. U3 W. y) T
  6919.   )
    5 i  C5 D2 y& `* a' O
  6920. : K4 B% m, b7 ~0 j$ |( H
  6921.   (defun cir_calc ( / area units)
    1 x( I& J- d3 |
  6922.         (setq radtest radius)5 `+ u/ ~; [, x0 w
  6923.         (set_tile "Dia" (rtos (* 2 radius)))
    ) N7 d" p" x4 G2 l1 ?# A
  6924.         (set_tile "Circum" (rtos (* 2 pi radius)))" Q' F! s3 _( w+ }' K) |
  6925.         (setq area  (* pi (* radius radius)))
    0 M8 V( Y* a0 n; b
  6926.         (setq units (getvar "LUNITS"))$ a; Z* [0 `( A( {) `, e* a  ~* e2 T
  6927.         (if (or (= units 3) (= units 4))
    + R' x& z% m3 Q2 x$ E0 Y% _9 R
  6928.             (progn
    , O5 p6 }  d% l  u2 t
  6929.                (setq area (/ area 144.0))
    5 i: x9 L7 o" k: T6 d& @
  6930.                (set_tile "Area" (strcat (rtos area 2) " square ft"))
    , I6 e9 a* k0 D4 N/ _: M; u, J0 e
  6931.             )
    ! S1 k2 X, N/ c  u% H3 I
  6932.             (set_tile "Area" (rtos area))
    5 |# J  n  s9 O* U' ?" k6 ]
  6933.         )
    : C, k/ Y/ I- \  r- m* f. ^2 S
  6934.   )6 c. N- [) Q1 }4 [9 N5 I. s
  6935. . j/ ?; I1 T" ~
  6936.   (defun arc_calc ()3 z1 a$ Q. s, v2 P( ~& e9 i4 [9 N
  6937.     (setq totang (- end_ang st_ang))& x+ P# v* X# ~4 B. z$ ^! E" w+ C
  6938.     (while (< totang 0)
    , o0 ^  R- C# X. w9 ]
  6939.       (setq totang (+ totang (* 2 pi)))* ]8 P; k2 m9 r' q" [# W- B; E: {
  6940.     )
    * X: X* O+ {3 [+ o+ x! T- k* V% `
  6941.     (while (> totang (* 2 pi))
    0 s  Q, \6 [- _, m0 i
  6942.       (setq totang (- totang (* 2 pi)))
    5 B$ r1 X4 T2 |" y' w
  6943.     )5 ?: }6 I& v( l
  6944.     (set_tile "tot_angle" (angtos totang))! Z4 a0 o5 y# Y7 K
  6945.     (setq arclen (* (* 2 pi radius) (/ totang (* 2 pi))))% b5 ^5 a( @7 r/ ~: _2 X8 t
  6946.     (set_tile "arclen" (rtos arclen))+ ^! X9 H7 z/ u
  6947.   )- u; C- ?' O4 l5 w0 ]
  6948.   ;;- i/ o: E6 K6 l4 W: f
  6949.   ;; Calculate the major radius, minor radius, major axis direction.) @; N, w: c$ m. t7 [* {2 G6 t
  6950.   ;; Get radius ratio. Convert Start, end parameters to start and end' K7 F: F! F7 N! O) \
  6951.   ;; angles. Save Major Radius value in "old_majrad" in case the user
    ' f5 N( ?0 w1 u. |; F  y. U
  6952.   ;; chooses to input a new Major Radius value later. It's needed to
    2 o& L! |$ d6 q! F
  6953.   ;; calculate a new Major Axis Vector value., g+ \7 N: G8 V
  6954.   ;;  U. _0 \/ q! P; g, E
  6955.   (defun ell_calc ()
    % {& t8 W$ i6 x% ^% G- c. l
  6956.         ;; Get major radius from the major axis vector.
    , u2 c! Q+ ]# x) b, S8 L( y. d
  6957.         (setq majaxis (cdr (assoc 11 elist)))0 p" g6 a- ~3 {1 `
  6958.         (setq xx (car majaxis))
    4 a, b# h- c% z9 t4 u( |" Z
  6959.         (setq yy (cadr majaxis))% I/ _) U' Y) O6 h2 k9 h
  6960.         (setq zz (caddr majaxis))3 ]( P  A% T$ `
  6961.         (setq majrad (sqrt (+ (* xx xx) (* yy yy) (* zz zz) )))
    * ]5 q" ^5 j; J
  6962.         (set_tile "majrad" (ai_rtos majrad))! r- M) S$ `1 J4 g1 Y( P% W
  6963.         (setq old_majrad majrad)
    2 L5 e$ |& A; z" v
  6964.         ;; Get radius ratio
    - J1 K# n* I$ x
  6965.         (setq rrat (cdr (assoc 40 elist)))- P) b5 X- Z0 ~; a
  6966.         (set_tile "rratio" (rtos rrat))) d- e* a; z) p. b: X1 _9 b4 J
  6967.         ;; Calculate minor radius
    , e9 \. X, W3 ?6 ^. B, o
  6968.         (setq minrad (* majrad rrat))$ _* H% a$ G/ D8 ]; e3 {
  6969.         (set_tile "minrad" (ai_rtos minrad))/ x$ g( k. I4 K. m' L; o; j
  6970.         ;; display major axis vector
    0 s( D7 V# g9 ]
  6971.         (set_tile "Majraddirx" (rtos xx))
    2 R0 j' D" w6 F
  6972.         (set_tile "Majraddiry" (rtos yy))# I; U, [& Y% g  O  z9 t+ J# O
  6973.         (set_tile "Majraddirz" (rtos zz))" R8 |( @, }' E0 F: b

  6974. # c6 C1 E/ _8 y3 v4 D4 A. _' ~
  6975.         ;; Convert start parm to start angle
    . h+ _5 R' a6 Y6 J" `
  6976.         (setq stparm (cdr (assoc 41 elist)))
    . t( w: @# H, \' X$ T
  6977.         (setq vecx (cos stparm)); U2 z  [; j' [3 W, Y* T: ^3 R
  6978.         (setq vecy (sin stparm))
    ) W+ M/ o0 P8 X6 G6 o& y( s
  6979.         (setq st_ang (atan (* rrat vecy) vecx))2 L( _, U1 b: V  z8 U7 P5 E
  6980.         (setq tempst_ang (ai_angtos st_ang))
    % Z4 k1 C4 S& F/ a+ ~6 o. s. t
  6981.         (set_tile "st_ang" tempst_ang)
    4 P& [; B/ z6 F! X( @. K; w9 m' u
  6982.         ;; Convert end parm to end angle. If end angle evaluates to 0! `# t& G6 r8 R; c
  6983.         ;; degrees then display it as 360 degrees.3 G! H( a3 K8 \$ d. S9 @
  6984.         (setq endparm (cdr (assoc 42 elist)))
    2 `/ Z# m/ s6 C  ]
  6985.         (setq evecx (cos endparm))
    ( R4 ]8 N, X, S4 B, c3 s
  6986.         (setq evecy (sin endparm))6 k4 i' X7 m  O0 x9 b! e
  6987.         (setq end_eang (atan (* rrat evecy) evecx)), M, g# T# y/ P% w; h
  6988.         (setq tempend_eang (ai_angtos end_eang))
    & |1 ^+ `3 [: o# P7 B
  6989.         (if (= tempend_eang "0")# I2 _3 S# a" |" Z- }. a
  6990.             (set_tile "end_eang" "360")4 j3 e% ?6 H2 B0 E! Q1 J6 x
  6991.             (set_tile "end_eang" tempend_eang)6 k  \- A  w# G6 X: E2 J2 A
  6992.         )3 ?1 T7 ~6 Z, y( N' |$ q' Z
  6993.         ;; Get area of the ellipse.
      X4 d( I! [( N
  6994.         (ell_calc_area)2 B* }. O4 R* T( ~9 n
  6995.   )
    ! ~5 Q; a1 q& I" O) @% L" s) A& z
  6996.   ;; Calculate area of ellipse. If it is an arc then, Z. E$ Q0 ^/ L
  6997.   ;; grey out area display.) ~# O2 s% @1 @+ I4 B% K8 k
  6998.   ;;- |9 P/ ?( i4 k% B) Y) E
  6999.   (defun ell_calc_area ( / area units)
    9 f$ f: B5 M5 q$ u
  7000.      (if (and (= tempst_ang "0") (= tempend_eang "0"))
    , g! b3 E- B, [8 [( D
  7001.          (progn
    " c* `! m" _; k" x; ^: z
  7002.              (setq area  (* pi majrad minrad))
    # D  B0 B) ]+ @
  7003.              (setq units (getvar "LUNITS"))" v) l; H) Q" M% z
  7004.              (if (or (= units 3) (= units 4))
    6 b$ e7 Y9 w5 m3 R4 n
  7005.                  (progn$ m% _/ Z0 P& M0 m. r
  7006.                      (setq area (/ area 144.0))
    2 W# L- i0 x4 m% G
  7007.                      (set_tile "Area" (strcat (rtos area 2)" square ft"))! [+ b' t) f2 O' p/ K
  7008.                  )3 g; c, ]! A  V" D) h1 u
  7009.                  (set_tile "Area" (rtos area))5 c- N( H, F9 M  T" _
  7010.              )1 e9 @7 G7 w4 u- [& e3 F) n
  7011.          )  E. O- \- S. H! j3 m
  7012.         (mode_tile "Area_text" 1)/ P0 T' J, `9 e; j" `
  7013.      )/ J/ t5 e2 t  l4 G) T7 c( y( {6 S
  7014.   )
    0 S7 t! z! X. Q) P% P
  7015.   ;;3 U, ^  ]6 J8 u# s8 h- \
  7016.   ;; Calculate new values for ELLIPSE
    # N+ L( n8 U% U" h4 K; H4 Z9 q
  7017.   ;; Minor Radius, Area
    6 u" C0 w: _5 m( u
  7018.   ;;' B6 d6 f1 e' O
  7019.   (defun ell_calc_newval (ell_tile)1 R' A* T* Y: x
  7020.     (if (= ell_tile "majrad")! A" i- G% c" p8 M& P
  7021.       (progn3 t! F: k$ m  @9 u6 C) h
  7022.          (setq rrat (/ minrad majrad))
    8 ^# X- G. M* a  I9 P) J: p
  7023.          (set_tile "rratio" (rtos rrat))
    " o3 V% C: o/ X1 f$ C
  7024.          (ell_calc_area)
    - E0 {) c7 }! T5 T" D
  7025.       )/ o  b9 q" p: \' m' U& o% l1 _9 C( B
  7026.     )0 E) {  {, J, Q7 t, D( s1 V
  7027.     (if (= ell_tile "minrad")$ Y6 \" c+ t% B" Q0 d
  7028.       (progn
    ) d7 B' R$ W) u# w
  7029.          (setq rrat (/ minrad majrad))
    0 A- D% ?# S7 f8 `2 G
  7030.          (set_tile "rratio" (rtos rrat))! o! A0 x1 Q  S7 q7 V  D4 l
  7031.          (ell_calc_area)
      D! h2 @: M! ~/ k
  7032.       )# X1 x1 l) T/ R2 m. g0 _8 Z
  7033.     ). o+ F: \) e  l; n) @, a
  7034.   )  |0 u: Y( M! D1 D$ P& s
  7035. * b: I0 v* J* b+ ~( P/ |( Y8 b
  7036.   (defun set_dimen_props (/ loop a stl txstyname)
    7 i, s: T& Q3 E- a2 v
  7037. ; z5 v, z8 T  v4 d5 w8 r& w+ X6 Y0 _
  7038.     (setq stname (cdr (assoc 3 elist)) ; get style name3 s$ G) w# [( U5 w: Q. y+ n: Y- L
  7039.           stl (tblnext "DIMSTYLE" T). t5 ]7 s( V7 C# B$ k2 r
  7040.           stlist nil)
    ; j; E% s/ Y( c! k+ h
  7041.     ;; Get all style names and list them in alphabetical order
    . R. Y* `' j+ b: ?& Z; q3 E+ e
  7042.     (while stl
    2 a( G9 S$ C" v" G+ _/ f
  7043.       (setq sname (cdr (assoc 2 stl)))
    ) k) E' A5 o5 S
  7044.       (if (/= (logand 16 (cdr (assoc 70 stl))) 16)
    3 z  [3 S0 Z! W% ~& h5 V
  7045.            (setq stlist (cons sname stlist)))
    3 |) g+ y8 V( S3 W
  7046.       (setq stl (tblnext "DIMSTYLE")))) B) N1 z% l# T' f$ E) D5 F7 W
  7047. / I6 B, n) V2 K  n* k: q2 {" Y
  7048.     (setq len    (length stlist)0 d8 w/ b  P( r/ d/ ]; n
  7049.           loop   0
    / G9 [. |2 @& R: Z$ R5 C2 x
  7050.           dimsty stname
    % |& I3 G9 d! f1 d' |
  7051.     )
    7 y6 W8 Q' L9 m$ U8 w1 L' P4 J) {
  7052. : W6 t9 T# q: p
  7053.     ;; alphabetize style list, depending on maxsort
    ) B7 q( f8 F+ z. q/ q1 x
  7054.     (if (>= (getvar "maxsort") len)* D) P0 A: N% }7 I, E
  7055.         (setq stlist (acad_strlsort stlist))
    ) d2 w& `: Y2 h
  7056.       (setq stlist (reverse stlist))); s& P6 u' q1 _+ h7 U7 [8 a* ?& c
  7057. 1 _9 X; _/ R1 ~/ M2 n0 n
  7058.     ; *UNNAMED style (dimsty = nil at this point) is replaced with" \+ W# ?7 c9 \7 A, n; f. _/ y0 u& d
  7059.     ; the current style.  After R13, we require dimensiosn to have a. F, _. x8 e7 C" P
  7060.     ; dimstyle, so we plug any holes where we find them.2 w/ y1 F9 N  c+ q% {$ P) [4 {
  7061.     (if (null dimsty)
    3 p' h$ Q1 a7 |6 a7 D
  7062.       (setq dimsty (getvar "dimstyle")). S$ C) M  E) F. U0 m+ T% {
  7063.     )
    * Z6 t1 v3 Q& i9 w2 v9 |3 w
  7064.     ; Show the styles in combo box2 w, i2 E4 w; x, ?
  7065.     (start_list "mod_style" 2)% K# `  V" C: \
  7066.     (while (< loop len)
    ; m3 Y$ ?+ Q+ \9 R; j
  7067.       (add_list (nth loop stlist))
    3 Z% Z& z8 _5 P3 z- H' h, t/ \
  7068.       (setq loop (1+ loop))3 l0 _8 {$ Z. N* {6 J  Z
  7069.     )' C) r/ U6 Q  o9 J5 y
  7070. # {- W& N  b8 X; _* ?$ M
  7071.     (end_list)6 X9 {2 V6 B" {. Q

  7072. 5 a8 b& n1 o/ ?( I
  7073.     ; Hilight the style name of the selected entity
    1 G$ I2 k; ^' ?( e% \+ l( C8 A
  7074.     (while (and (< 0 loop) (/= dimsty (nth loop stlist)))
    * l6 O" b2 X  ?) Z
  7075.       (setq loop (1- loop))8 H; b9 U! q- X% }+ K. F" h9 U) D
  7076.     )
    8 J( _- P* g* e1 h
  7077.     (set_tile "mod_style" (itoa loop))1 E2 q$ `5 e. N8 Z8 Y

  7078. : e9 w) Q5 x9 J. G8 @
  7079.     ; The following is the list dimvars. It must be sorted in the same+ ~4 i8 X- S3 A/ q# B% p  [
  7080.     ; order as the resfub returned from DDIM (ADS module).
    & f% a6 E3 ~8 q0 o

  7081. ' M" ]( N# {1 A- x8 R2 k3 @" H7 u
  7082.     (setq dimtbl (list "DIMSTYLE"  "Style name"  "Standard flag values"2 h) e- t9 J4 V8 E% u
  7083.         "dimpost"   "dimapost"    "dimblk"    "dimblk1"    "dimblk2"
    1 C) S# l" d# G( h1 R! k, \
  7084.         "dimscale"  "dimasz"      "dimexo"    "dimdli"     "dimexe"
    $ |1 M: X. K5 _
  7085.         "dimrnd"    "dimdle"      "dimtp"     "dimtm"      "dimtxt"5 p3 @# |: F! }5 d+ H  {  M
  7086.         "dimcen"    "dimtsz"      "dimaltf"   "dimlfac"    "dimtvp"
      X0 H" X" N# ]% G8 }" I
  7087.         "dimtfac"   "dimgap"      "dimtol"    "dimlim"     "dimtih"
    , n/ X& G; R7 ~! o" _
  7088.         "dimtoh"    "dimse1"      "dimse2"    "dimtad"     "dimzin"
    ' t5 @2 r" d. @6 h$ J) Y
  7089.         "dimalt"    "dimaltd"     "dimtofl"   "dimsah"     "dimtix"5 ?/ v% b8 u8 p) y. ]% \
  7090.         "dimsoxd"   "dimclrd"     "dimclre"   "dimclrt"    "dimunit") R. X3 ~/ s2 \  J, Q8 t/ h, m
  7091.         "dimdec"    "dimtdec"     "dimaltu"   "dimalttd"
    - c! a0 |& \! M) S
  7092.         "dimaunit"  "dimjust"     "dimsd1"    "dimsd2"     "dimtolj"6 e* i' ^* x& l: G1 T$ ^
  7093.         "dimtzin"   "dimaltz"     "dimalttz"  "dimfit"     "dimupt"
    8 i! G! [0 U0 A0 N% k
  7094.         "dimtxsty"
    * n  S2 Z$ I: `7 K! H! m
  7095.     )): P( }# y. L. u( _  X; I
  7096.     (progn
    ; O- n) i/ ^+ o! t% T
  7097.         (setq sv_dvlist (ddimen_getostate dimsty). _$ z* @; E' X' l& Y: S
  7098.               txstyname (assoc 340 sv_dvlist)2 A8 k% S" l( L  r/ W+ a
  7099.               sv_dvlist (subst (cons 340 (tblobjname "STYLE" (cdr txstyname)))
    , O2 q* [. D5 @$ U
  7100.                                 txstyname sv_dvlist)- I/ `5 O" p; h. j  E
  7101.               dimlist sv_dvlist
    4 m7 s1 z3 B1 C5 X( s; m* J$ J% S
  7102.         )( ]7 c! y4 B* @  M$ j6 F* O
  7103.     )6 A  A5 u6 k7 l6 U! o
  7104.     (if (= dimtype "DDLEADER")  n$ P. I" I8 O% k+ |3 \
  7105.       (mode_tile "mod_format" 1)6 Q2 g. k* q& @* h' W3 k% _0 t4 n
  7106.     )
    / l2 S% q- u" Q" t0 l
  7107.     (action_tile "mod_style" "(setq dimsty (ddimen_style))")  K% a0 }6 \* i% n
  7108.     (action_tile "mod_text"  "(done_dialog 4)")+ a) }: a+ O5 k  s0 L/ O
  7109.     (action_tile "mod_geom" "(setq dimlist (ddimen_dlg dimtype 11 dimsty dimlist))")0 q! s# Z% m! m) E
  7110.     (action_tile "mod_format" "(setq dimlist (ddimen_dlg dimtype 12 dimsty dimlist))")
    , G2 y; p& ^+ A& _4 `# N3 y
  7111.     (action_tile "mod_annot" "(setq dimlist (ddimen_dlg dimtype 13 dimsty dimlist))")
    , t3 O. i7 e4 b4 \" }$ Q' ~1 Z
  7112.     (action_tile "accept" "(done_dialog 1)")
    $ b- B/ Z1 p( X
  7113.   )7 {7 M; V5 p* n
  7114.   ;;
    0 U, A7 |7 k# K2 k
  7115.   ;; Get dimvars that have been restored.
    - `0 i$ B) [" \1 S5 m2 g
  7116.   ;;
    * A- B5 b4 \8 k) A3 t& |
  7117.   (defun ddimen_getvars (/ elm dvlist dv i)
    / \5 y# e. J% ?
  7118.     (setq i 3
    2 `8 B; d  |! x- `* ^. X7 `5 V
  7119.           dvlist (list (cons 0 "DIMSTYLE")
    ) f7 w4 S( \7 R0 X
  7120.                   (cons 2 (getvar "dimstyle")) (cons 70 0))  y% Q7 b' g  `. s4 E
  7121.     )5 O1 J0 F! O# J' i" v* i1 I
  7122.     (while (setq dv (nth i dimtbl))
    9 ?- c" y, G- N8 F( u/ a% z
  7123.       (setq elm (getvar dv)
    ) j; C: D1 W" ]) W- u; f
  7124.             dvlist (append dvlist (list (cons dv elm)))
    7 V# a* V9 X! Y
  7125.             i (1+ i)( Z: C, E& O9 X* f' m3 S2 G
  7126.       )$ p: M' d$ x0 x% `+ K
  7127.     )
    3 S  i1 z6 e+ Q4 D/ {* t
  7128.     dvlist
    . b5 W5 \& [9 M" D' a
  7129.   )4 L4 T. Z* L9 x* ^) ]
  7130. * O5 [/ T0 L6 |- e
  7131.   ;;
    7 y4 Q! `/ P5 y9 n( a6 w! r# J- V
  7132.   ;; Get the original states of dimvars. This is for DIMENSION entities.4 {& C  I6 ?7 }6 z; N
  7133.   ;;. e' e; _- n4 T
  7134.   (defun ddimen_getostate (dimsty / dvlist elm i dvvars)5 K, F4 Q1 l; b/ p
  7135.     (setq dvlist (tblnext "dimstyle" T) ; Get a skelton list
    & v" O8 u+ ^% N* \6 P, v
  7136.           dvvars (ddimen_getvars)       ; Get dimvars for that entity
    6 K! G9 @; U3 q) Q3 Y8 }& L+ W
  7137.           i 1% ]% }* r4 j7 `$ \
  7138.     )4 m) t7 q5 e$ a1 x7 l1 S' ~

  7139. 1 Z/ X: ^6 S1 s/ E1 o; Z$ c
  7140.     ; Create a list that contains values of the selected entity.6 K# Z: V' U& Q: w# p

  7141. . U) F7 Y$ w, T" f. V4 _
  7142.     (while (setq elm (nth i dvlist))$ \: Y3 N; X1 e" }! W/ m
  7143.       (setq dvlist (subst (cons (car elm) (cdr (nth i dvvars))) elm dvlist)
    0 a, h" V* O  D/ {, s& D
  7144.             i (1+ i)
    8 R/ C0 {3 W" B- a" `
  7145.       )3 U/ z- `$ {/ l, G; I& v7 [5 X
  7146.     ), S' L; S" f, C9 T
  7147.     dvlist% U3 _* N9 S+ n2 c$ Z+ B6 a
  7148.   )
    ( f, A2 v( n4 Q- c
  7149. # O& \- q3 E6 T, ?' Z1 N1 H" Y
  7150.   ;;
    7 r" b8 k, E: \! `7 [% z
  7151.   ;; Restores dimvars of the selected enity.
    , e9 z6 C2 d7 {( {+ V" n
  7152.   ;;
    5 {0 D5 D2 @/ N9 z  U
  7153.   (defun ddimen_dimsty_restore(/ dimtbl dimsvcurset en)
    : q9 F. y/ }+ W5 P
  7154.     (setq dimtbl (list "DIMSTYLE"  "Style name"  "Standard flag values"
    3 N; l* @! H2 j. A+ _) [
  7155.         "dimpost"   "dimapost"    "dimblk"    "dimblk1"    "dimblk2"
    " |8 T& Y' M- T+ D" T7 e
  7156.         "dimscale"  "dimasz"      "dimexo"    "dimdli"     "dimexe"
    * A- E" C) ?( O
  7157.         "dimrnd"    "dimdle"      "dimtp"     "dimtm"      "dimtxt"
    3 B  N+ Y: L; }- ~* O  g! {' Q
  7158.         "dimcen"    "dimtsz"      "dimaltf"   "dimlfac"    "dimtvp"
    ! m4 N; m: _1 _! B% E9 y; D; c  z
  7159.         "dimtfac"   "dimgap"      "dimtol"    "dimlim"     "dimtih"/ Z2 ]. ?9 @# c% v% ^% F
  7160.         "dimtoh"    "dimse1"      "dimse2"    "dimtad"     "dimzin"
    % d$ f' ]. `9 v7 L: z" Z: K: P
  7161.         "dimalt"    "dimaltd"     "dimtofl"   "dimsah"     "dimtix"
    2 b2 P6 x, U* ?9 Z+ v" r6 M
  7162.         "dimsoxd"   "dimclrd"     "dimclre"   "dimclrt"    "dimunit"0 c* ?- y) ]. u% q/ o
  7163.         "dimdec"    "dimtdec"     "dimaltu"   "dimalttd". R7 K4 e; W! y; R% F2 u+ _+ V# g. s
  7164.         "dimaunit"  "dimjust"     "dimsd1"    "dimsd2"     "dimtolj"
    " F" A2 S# A2 |& D0 \7 _. {& s
  7165.         "dimtzin"   "dimaltz"     "dimalttz"  "dimfit"     "dimupt"
    + v! |: u# N9 C5 N* v
  7166.         "dimtxsty"
    9 H' G, f) b2 }5 v
  7167.     ))
    5 b6 F- O8 x8 G5 C. v
  7168.     (setq dimsvcurset (ddimen_getvars))  ; Save current variable settings- f" e/ x( A' o( V
  7169.     (progn
    . n% M) v* J, E: _% T- j+ @
  7170.         (setq en (cdr (assoc -1 elist)))
    1 y1 H& j# `4 M- r6 ^8 ~3 n- r0 O
  7171.         (command "_.dimstyle" "" "" en)
    * M# e' C- _& B, S0 X  l
  7172.     )
    - s" b& c# z2 O8 Z6 E
  7173.     dimsvcurset
    ; f& e  x) R7 S5 X2 }
  7174.   )
    1 ~% u" Z; J+ P+ y6 K
  7175.   ;;
    ( Z+ D- _% _$ k. e* o
  7176.   ;; Modify Leader
    % t" t/ a- K* F& Q
  7177.   ;;
      [% N9 ~  h4 s
  7178.   (defun ddleader (/ dtypebit blkname bename sublist a  stname n dimtbl
    * _  T$ }6 \: H  h/ {
  7179.                    dimsty dimlist dimtext svtext dimovr sv_dvlist stlist4 A7 K7 F/ }) F) e) G. _1 {
  7180.                    dimtype dimsvcurset). h! ]% o# I: l2 v0 [; j
  7181.     (setq dimtype "DDLEADER": x. X$ J5 V/ e$ L
  7182.           dimsvcurset (ddimen_dimsty_restore)5 J2 _. A/ |9 |6 {
  7183.     )
      s/ B4 G! w4 R" }0 Z0 M: M  P, q
  7184.     (if (not (new_dialog "ddleader" dcl_id)) (exit))
    ' M, j2 \6 H9 X9 G
  7185.     ;; Set initial tile values
    " d9 s4 p& L+ D+ `$ D
  7186.     (set_tile_props)
      ?. G' C' Y' ^. H  D4 X& D
  7187.     (set_dimen_props)
    # F$ b2 e* n' R  W1 Y& p
  7188.     (set_tile_handle)
    7 I8 ]* W9 M, j8 q! `( p4 N- v" L5 h
  7189.     ;; Define action for tiles
    , R* _+ `8 K/ }9 [: G3 @- f
  7190.     (set_action_tiles); A7 k; c/ j  t
  7191.     (mode_tile "mod_text" 1), I+ d& e: t% L9 U

  7192. - r$ h4 b  w3 `3 v
  7193.     (action_tile "mod_style" "(setq dimsty (ddimen_style))")% b0 S; N# N: v3 R) a9 l
  7194.     (action_tile "accept" "(setq leadtype (get_tile \"s-s\"))(setq arrow (get_tile \"arrow\"))(done_dialog 1)")
    * E3 A3 ]! W2 }% X+ o
  7195.     ;; Get ARROW and TYPE.
    & C" t9 P7 \' v) d+ F$ t
  7196.     (if (= 1 (logand (cdr (assoc '71 elist)))) (set_tile "arrow" "1"))' c- V! t' Q  g6 Z7 r0 D
  7197.     (if (= 1 (logand (cdr (assoc '72 elist))))
    , d7 m, N& [5 T7 Q/ P& s
  7198.       (set_tile "s-s" "spline")
    ; ^( \: ^( G) }) t+ y& @% P0 @
  7199.       (set_tile "s-s" "straight")
    , Z8 [: ]5 p) s
  7200.     )
    ( B0 a2 @1 Z5 y: Q: _
  7201.     ;; Start the dialogue.) T" j. K. r2 A# H
  7202.     (setq dialog-state (start_dialog))9 ]% {4 o- E- t- R; c
  7203.     (if (= dialog-state 1)# ?. _! |# q, ]5 I
  7204.       (progn
    ) o7 H+ _9 C% ^" j+ G
  7205.         ;; update the style4 ]' G4 r$ S" l% j% Y( {- D
  7206.         (if (/= dimsty stname)" z/ b4 H6 o' t, L$ |" _
  7207.           (progn. O- w. a$ D7 r! {( @0 s7 x& v
  7208.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    6 U; k; ]3 }* F% f
  7209.             ; doesn't have it.3 V5 m; `: a# q8 _5 b: X! E
  7210.             (if (null (assoc 3 elist))8 j# {7 X4 ?2 g
  7211.               (setq elist (append elist (list (cons 3 dimsty))))7 [) v+ o$ z+ E8 H# I, n
  7212.               ; else just replace it.
      G' a% y$ c8 F6 p' ~% F! v
  7213.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))
    / ^/ U* {( p# v& W+ q/ J
  7214.             )# p: D3 f, u+ J4 r! }0 t
  7215.             ; refresh sv_dvlist with new dimstyle.9 Y: J! ^! y# O! t5 d0 D0 A
  7216.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    & H# j0 Q; z1 j) J: c( d' d
  7217.           )
    ( d7 C* D, J' B' S2 C& S3 r  d
  7218.         )3 X, Z/ G$ O/ b3 m$ m' l8 _
  7219.         (if (not (null dimlist))   ; attempted to change dimvars
    , G2 b# ~( I" O, [) L8 s/ Z
  7220.           (ddimen_complist sv_dvlist dimlist dimtbl)+ h- u" y/ y9 {4 W9 g' N( x$ Y
  7221.         )
    & H% f, {, Y+ L  P- ^2 S# C' Z
  7222.         ;; update for ARROW.. J+ o0 \  N9 i( a
  7223.         (if (= "1" arrow), I, P1 D0 B. ^9 a/ F
  7224.           (setq elist (subst (cons 71 (logior 1 (cdr (assoc 71 elist)))) (assoc 71 elist) elist))5 ~# c$ y& I/ I- _& H& T
  7225.           (setq elist (subst (cons 71 (logand (~ 1) (cdr (assoc 71 elist)))) (assoc 71 elist) elist))
    / o- t% }' L: R
  7226.         )
    7 z3 f" M6 U! G, {  n! ]
  7227.         ;; update the TYPE.
    ' M/ E. m% o3 l! Z1 x
  7228.         (if (= "spline" leadtype)8 J# T3 U* Z' W' `0 N+ V. N
  7229.           (setq elist (subst (cons 72 (logior 1 (cdr (assoc 72 elist)))) (assoc 72 elist) elist))) L& S7 i8 v+ A) N, n4 L+ z
  7230.           (setq elist (subst (cons 72 (logand (~ 1) (cdr (assoc 72 elist)))) (assoc 72 elist) elist))( r; f, G. H8 A6 N& n  @, x
  7231.         ): i3 U9 G4 H. G3 [" K8 ?( B+ J
  7232.         (modify_prop_geom)
    9 {+ }5 n2 v. p- Q8 v' K4 r
  7233.         ;; update the Color
    $ }, g% v9 b% [+ O6 n9 I
  7234.         (setq elist (subst (cons 77 ecolor) (assoc 77 elist) elist))
    * t! D- F9 \( U! ?% F. |
  7235.         (entmod elist)
      \. ]4 r9 j- y2 l& V* X0 e
  7236.       )# f  @6 B+ E8 a( P4 x: C
  7237.     )
    4 L6 v; \# @" }7 R: I- Y
  7238.     (ddimen_setvars dimsvcurset)      ; Prepare to exit' j3 A& P8 S! h6 H. ]
  7239.   )
    8 i) [4 W4 A5 q' O4 S' X% `
  7240. 0 `* F5 c6 I7 ~) d
  7241.   ;;2 C3 y: K" n9 q, m# K
  7242.   ;; Get dimvars of a dimstyle with overrides.
    : t5 ]1 R3 T1 p# Q
  7243.   ;;) @0 z# a6 j. v( q( D5 R- ?

  7244. & i1 g2 E  E1 _# W- }  W
  7245.   (defun ddimen_getdimvars (dimsty / dimovr dvlist elm i), C$ \& ~$ R! u' p5 f8 @3 N
  7246. $ w% w$ w) B9 v: F* c- v
  7247.     ;; Get override information for the specified entity.% ]/ S# u8 D! P! V
  7248.     ;; Leader/Tolerance cannot be restored by DIMSTYLE command, so we
    0 j2 m" R* {; Q% {
  7249.     ;; must obtain override information through this tedious operation.
    + F. n& L/ @0 u% w. y) b% B6 `! B
  7250.     (setq dimovr (car (cdr (assoc -3 (entget (cdr (assoc -1 elist)) (list "*")))))* X- F0 {! m" B) d  F2 t' S8 R
  7251.           dvlist (tblsearch "dimstyle" dimsty)% `& B# W, d& l9 j, @
  7252.           i 2
    / Q9 T6 b" p& m* G- e
  7253.     )1 Q& W& z" e3 R$ z* i% f

  7254. 4 g3 K' e* Z8 z# T5 o7 J1 |
  7255.     ; Update the list with overrides if overrides exist.: U) h9 ~" M% }+ `( ^; A

  7256. 0 |6 f6 F6 a4 B8 D1 j* g4 I
  7257.     (if (and dimovr (= "DSTYLE" (cdr (nth 1 dimovr))))
    5 u, t( y! Z; M; `$ @) t
  7258.       (progn
    . `1 A; R* H2 a& n7 [
  7259.         (while (setq elm (cdr (nth i dimovr)))
    & a' `( k$ \8 v$ l. D# Y- b9 T% G
  7260.           (progn
    ( \. y) ]# D; U2 J( L
  7261.             (if (or (= elm "{") (= elm "}"))
    9 m. O+ ~! D6 n1 W/ P/ B- X$ Y
  7262.               (setq i (1+ i))% Q; F3 X- a( L4 ~6 i2 N+ v; g
  7263.               (progn8 c% J7 K* ?0 m$ `9 f8 w5 V! r
  7264.                 (if (or (and (< 180 elm)1 I! `4 x' Q  y8 J
  7265.                              (< elm 190)8 K  j: E6 R$ e7 p; x2 `
  7266.                         )
    # d" v  V1 E2 g
  7267.                         (and (< 80 elm)7 Y3 I- F9 Z* j" y9 Z
  7268.                              (< elm 90). G; z0 t3 o  t$ l" d) Z
  7269.                         )
    4 F# N1 k# @. j& m8 ~
  7270.                     )4 ?! u2 k* M% \( E: u# _9 K* `& m
  7271.                   (setq elm (- elm 10))
    6 ]$ `. `7 R4 y. F6 G$ [
  7272.                 )
    ! a3 `/ b4 d6 P, y6 B" L
  7273.                 (setq i (1+ i)0 P  f5 C- X! a0 D# T
  7274.                       elm (cons elm (cdr (nth i dimovr)))
    $ C$ h. L1 [& @; m/ J1 s. j
  7275.                       dvlist (subst elm (assoc (car elm) dvlist) dvlist)
    # `2 p3 r% f/ E/ N# ?
  7276.                       i (1+ i)% f: Z3 H! `" e% y. d
  7277.                 )
    ! ^7 B" m9 \' p, N
  7278.               )' N* A' o, K5 A  _  ?2 E6 Q
  7279.             )5 f' K% k8 W% k. D0 A5 u
  7280.           )
    , C" n1 q+ u- ~* |
  7281.         )
    * M9 c+ K; l$ V: c# R! q
  7282.       )
    " w* d+ N' j( [3 n
  7283.     ): S" @- ~; q5 L( l/ F# Q
  7284.     dvlist
    + L5 Z8 g; L; ^1 T/ \9 p& ^
  7285.   )+ `( O5 w' S/ ^" q6 A- X8 e% f

  7286. - ?4 L5 l: q8 D6 f* g2 m2 G: [
  7287.   ;;
    # _0 p+ S) Q+ i8 L, E; ]
  7288.   ;; Modify POINT
    : f+ K4 o' L4 \; f
  7289.   ;;
    1 z2 L# I' k8 l; P$ s. j
  7290.   (defun modify_point ()
    & E3 `$ \7 K" g6 j
  7291.     (modify_properties)
    & F  a2 g( i2 @+ |  ]
  7292.     (setq pt1 (list x1 y1 z1))
      Y) X6 i. Y; i9 t& ^
  7293.     (tempmod pt1 10 0)
    ! e2 U2 [# t' Z2 e8 m
  7294.     (entmod elist)
    $ b3 \( @' T3 w+ S! s3 Q
  7295.   )
    / d, @8 \% v: \# E% ~& h- c% p
  7296. 8 ?' T6 I+ U/ `/ ?: j
  7297.   (defun ddpoint ()( O" ^) k9 P/ K6 y) V: v  [8 S
  7298.     (if (not (new_dialog "ddpoint" dcl_id)) (exit)): R& C( V, L# g7 Y# d) a
  7299.     ;; Set initial tile values
    & t- C2 \3 i: n2 U( Y
  7300.     (set_tile_props)
    1 Q3 E- V: F% C3 L
  7301.     (set_tile_handle)# ^9 }$ v3 E6 ~$ z
  7302.     (set_tile_pt1 0)
    " x% C* t. C" j+ h7 v+ g7 E
  7303.     ;; Define action for tiles
    ! W5 D9 S; s% V$ g" d
  7304.     (set_action_tiles)
    ! S0 Z/ j) ?0 Y1 x
  7305.     (setq dialog-state (start_dialog))1 A2 M$ x# c, i" j
  7306.     (if (= dialog-state 0)! g0 s: {3 B, Y" G; r* X
  7307.       (reset)
    ) F! ?4 C" ~, W, E( e* B5 _/ w
  7308.     )
    ( t# b, x8 @: d0 H
  7309.     (if (= dialog-state 3)5 S: d  w5 ?' {6 J
  7310.       (progn
    ) D8 m/ r; J, u9 A; F$ c
  7311.         (modify_point)
    2 A- d; h4 F4 q, n
  7312.         (setq pt1 (getpoint (list x1 y1 z1)  "\nPoint: "))6 k. a) L8 T! h( D" G# o  B  l9 w
  7313.         (ver_pt1 0)7 f( Q* p# B% k* B% _" ~
  7314.         (ddpoint)7 p  O3 e% q% \, c+ Q* L6 m$ z
  7315.       )
    . m3 l8 |3 V1 S
  7316.     )
    5 a, z; B9 }, ^% n; c/ d) w% @/ _
  7317.     (if (= dialog-state 1)
      e8 ~4 U5 A0 \- S! K
  7318.       (modify_point)% ^2 c! Q; b/ U. F6 s5 S, i
  7319.     )
    , l, X- X5 z- D- R5 w
  7320.   )
    & j# v' [, P* `  \
  7321.   ;;
    $ t& |; z- E& P% w! L, i
  7322.   ;; Modify LINE0 Y* ^' A' Q; n6 ~, R% |
  7323.   ;;
    . ^1 m6 g7 }- j* u& p3 L  G6 e
  7324.   (defun modify_line ()8 N5 Y$ L" ~* `; ~
  7325.     (modify_properties)
    1 m) C* C' S8 f% g2 t8 ?
  7326.     (setq pt1 (list x1 y1 z1))  I( Z, c8 ~/ Z% b8 ~
  7327.     (setq pt2 (list x2 y2 z2))
      E& M6 K6 O" \+ s: [
  7328.     (tempmod pt1 10 0)
    ; y/ t  p9 y! h+ [" @: K
  7329.     (tempmod pt2 11 0)
    6 ~# j5 n" d! d5 E) n
  7330.     (entmod elist)
    0 S0 [. W( Q; I2 p) X( @
  7331.   )7 e  d% w' l8 s2 {4 m7 G
  7332.   (defun ddline ()
      s. d- C1 Q& d8 T& V
  7333.     (if (not (new_dialog "ddline" dcl_id)) (exit))
    * w4 u1 N' f( [0 t/ H2 |
  7334.     ;; Set initial tile values
    3 W' P$ c8 r- B$ G" @. l) d9 T
  7335.     (set_tile_props)
    4 ^3 j, k$ B# i0 h& u
  7336.     (set_tile_handle)
    + h9 j% Q& H3 M" S. v( v3 F" L7 \
  7337.     (set_tile_pt1 0)+ f- Q; B: D( O0 ?8 H
  7338.     (set_tile_pt2 0). ^' s' V: j, I4 E# q  p
  7339.     (line_calc)' s; _& y9 e) F. G
  7340.     ;; Define action for tiles
    ) n0 F" R+ L! }2 x* P
  7341.     (set_action_tiles)1 a9 }6 ?! @* |& X
  7342.     (setq dialog-state (start_dialog))
    * B& |+ X$ A3 P  s% D, u6 f: V$ x
  7343.     (if (= dialog-state 0)
    4 X5 q4 O# j7 e
  7344.       (reset)
    . @8 j% ]7 H  D( q' p+ `" L- D7 }2 ^
  7345.     )( _0 A* \& S5 m1 u2 d! g
  7346.     (if (= dialog-state 3), m: v! M' q2 W' i- H. c
  7347.       (progn
    8 @% u) L8 F! u9 M9 u3 R
  7348.         (modify_line)
    0 h. [9 L$ m$ Q+ k$ H( k
  7349.         (setq pt1 (getpoint (list x2 y2 z2)  "\nFrom point: "))2 ^3 ]/ V7 Q- I$ @. Z2 q
  7350.         (ver_pt1 0)
      _( O; r/ I. F4 B3 W' w* o% x( c2 V
  7351.         (ddline)
    3 A/ e7 L6 @& t
  7352.       )( z* p2 g- k4 `/ y8 j
  7353.     )
    2 N, ?4 l8 C2 K0 i* j
  7354.     (if (= dialog-state 4)1 w, z5 R- c' l9 Y( M
  7355.       (progn
    , e) g2 D0 {1 W% _. f
  7356.         (modify_line)$ {: \- I8 c& W( p7 g; O$ U
  7357.         (setq pt2 (getpoint (list x1 y1 z1) "\nTo point: "))
    9 |% H# D* E6 Q
  7358.         (ver_pt2 0)1 q% B: s' P% v% A# H- I& Q
  7359.         (ddline)# J- \2 y/ v6 k& D
  7360.       )
    # @( h# p, ^; O5 R
  7361.     ): j9 p7 Y+ z' g9 d3 ^% |. R. j8 z
  7362.     (if (= dialog-state 1)3 C+ T$ D7 }2 e: g! |" m; \
  7363.       (modify_line)
    4 W4 N3 b3 P6 b9 g; t
  7364.     )
    $ c0 l, j- A0 |, g
  7365.   )
      e2 _4 x9 A+ G: G  T
  7366.   ;;$ Q- ?; {. ^8 q8 D4 h4 }
  7367.   ;; Modify MLine$ C4 D  J2 r; x4 f5 K
  7368.   ;;
    ( X! Q1 D' G! [6 Z& \8 Y
  7369.   (defun modify_mline ()
    5 W+ M2 N  k/ k# {1 u1 i
  7370.     (modify_properties)# u9 d! t  o8 U
  7371.     (entmod elist)( q4 L  n7 d) p& i! F
  7372.   )" j: R- U* Y1 Q: g, X" N
  7373.   (defun ddmline ()# |6 R4 a4 ^8 ]8 _+ [: v- P5 \/ B
  7374.     (if (not (new_dialog "ddmline" dcl_id)) (exit))
    3 c1 N% J% R- W
  7375.     ;; Set initial tile values
    3 r4 Q7 J: B& y
  7376.     (set_tile_props)0 l( ?" I' o0 W& C( V
  7377.     (set_tile_handle)
    9 n" ]9 ~; K$ X9 |5 _8 X
  7378.     ;; Set mline style text field.
    % k  i) J* @% F4 O1 C% a- L8 X7 g
  7379.     (set_tile "ml_style" (cdr (assoc '2 elist)))9 y& D  y! e( Y2 W. z! |) {) q' D

  7380. ( O% a5 v0 L1 K/ C5 \) w$ \1 U# q
  7381.     ;; Define action for tiles, @: c- S# \$ d( n1 M
  7382.     (set_action_tiles)
    - u  ^) ^% |" m" @7 P. C+ z$ ^: F
  7383.     (action_tile "ml_edit" "(done_dialog 3)")9 K# }7 o& s5 |* d- f; A
  7384.     (setq dialog-state (start_dialog))
    5 |8 j$ x% a& s- G5 s7 o. I
  7385.     ;; Dialog cancelled, reset to original values.# z, z7 w2 e# H' d
  7386.     (if (= dialog-state 0)( Q8 z% G$ M1 l* g1 o0 M
  7387.       (reset)
    ! `% l% ~5 p; K" K& G0 x  n( q* w
  7388.     )
    0 K7 o7 Y6 \: ~% f8 j
  7389.     ;; Dialog OKed, update the mline.7 V+ M9 ~1 L) u% Q5 Y4 E0 P
  7390.     (if (= dialog-state 1)
    9 D2 Q+ p7 \1 a6 g
  7391.       (modify_mline)' |' N) [! X2 u
  7392.     )9 y# w7 s, k/ r# M
  7393.     ;; Edit Mline, call MLEDIT.
    , ?) x. I0 E: N( E* T' c& |
  7394.     (if (= dialog-state 3)
    9 W, z3 [! u: R! ]2 J8 q
  7395.       (progn
    3 I- R" J8 v# {( q0 C  F1 \1 r
  7396.         (modify_mline)- [$ R1 F  j" L7 |$ R
  7397.         (command "_mledit")% p$ {9 ~$ |, u9 J" P$ ]
  7398.         (ddmline)
    5 l( k" F# R2 ?2 d) J, I* i) ?9 U- n
  7399.       )5 L& t4 A% h* z( b
  7400.     )
    , F, @- U' k  l4 A, M/ R" j
  7401.   )
    " j  o. m& ?8 b) E' c/ u& }1 i
  7402.   ;;5 F) H7 R7 L! f$ p4 O% P6 C6 _
  7403.   ;; Modify Xline( r9 z# B* \3 N8 l. L/ s0 O2 E
  7404.   ;;; b* i  z" o- A! B% m
  7405.   (defun modify_xline (flag)/ u/ P& I2 S% m: N  L
  7406.     (modify_prop_geom)
    ( D9 e) Y7 W- _, F' n4 D# Q$ \" {
  7407.     (setq xline_pt1 (list xline_x1 xline_y1 xline_z1))* Z3 k8 N* |7 a5 {- Z
  7408.     (setq xline_pt2 (list xline_x2 xline_y2 xline_z2))
    3 r7 i  e9 r, j5 a
  7409.     ;; Update the Root point.1 {6 U6 j7 [3 V7 X! p
  7410.     (setq elist (subst (cons 10 (trans xline_pt1 1 0))
    . E7 z. Z- }( b- v  Z
  7411.                        (assoc 10 elist)
    $ l7 |( c- x! W5 O& m! Y2 r
  7412.                        elist
    ! l" ~8 n6 y0 o( {4 Z
  7413.                 )- N8 p  I) W( n/ @% ^: B
  7414.     )
    / h3 Q3 b5 k6 P9 o+ M+ L' D
  7415.     ;;
    7 X# y% X% M% n" D0 _8 f( D3 Y
  7416.     ;; Calculate new Direction Vector WCS
    & f: N( G9 e+ Z4 ]( H
  7417.     ;; x / (sqrt ( (x**2) + (y**2) + (z**2)     ))
    . j5 G( {; c3 O
  7418. 4 i" m1 \+ V7 L
  7419.     (setq temp_dir (trans xline_pt2 1 0))
    & n# w, T: z$ R, F
  7420.     (setq temp_dir_x (car temp_dir))7 b; |* Q: d; a, T% D1 {+ P0 }0 L
  7421.     (setq temp_dir_y (cadr temp_dir))6 K0 A' b/ k( S6 {& w: T5 U
  7422.     (setq temp_dir_z (caddr temp_dir))
    ) {, S  Y& F( X2 g4 p

  7423. : t2 F6 Z( x3 Z& ]0 c; G% v6 b
  7424.     (setq temp_xline_pt1 (trans xline_pt1 1 0))
    3 g' F3 A% d% W4 ^
  7425.     (setq temp_xline_x1 (car temp_xline_pt1))
    . I" I; ^7 C! q4 p( v. v0 @
  7426.     (setq temp_xline_y1 (cadr temp_xline_pt1))
    ; D, X9 f- [& X! q9 d7 C* R
  7427.     (setq temp_xline_z1 (caddr temp_xline_pt1))
    - U( p- o' ]" k) D8 V( ?9 _
  7428. ' ~" }# u, H& l2 J0 I( L1 [# O8 B
  7429.     (setq denom (sqrt (+ (expt (- temp_dir_x temp_xline_x1) 2)
    * p' V% p1 [) U
  7430.                          (expt (- temp_dir_y temp_xline_y1) 2)
    / s3 a5 Z6 G; Q1 y! y: F- \- z" X
  7431.                          (expt (- temp_dir_z temp_xline_z1) 2)
    # E4 n  I* P; W3 _" O* i' R; ~! E7 M
  7432.     )))9 }& d% Q$ Z' Q0 x# {
  7433.     (setq temp_dir_x (/ (- temp_dir_x temp_xline_x1) denom))1 b/ s4 |7 X+ x& u
  7434.     (setq temp_dir_y (/ (- temp_dir_y temp_xline_y1) denom))0 A" p2 V2 B6 h# ~/ ?- e
  7435.     (setq temp_dir_z (/ (- temp_dir_z temp_xline_z1) denom))
    . p( N/ z& m6 }* t& _  R
  7436.     (setq elist (subst (cons 11 (list temp_dir_x temp_dir_y temp_dir_z))
    1 C: _  e2 {8 x; c( d4 O4 @
  7437.                        (assoc 11 elist)" y% }9 l6 \9 _/ K. v
  7438.                        elist
    1 U9 L0 ~* S& \" ^
  7439.                 )* ^9 v' B0 A4 Y( D
  7440.     )" V8 J0 r4 ~' I+ Y
  7441.     (if (= 1 flag)+ N; z; n8 ]/ i% B5 m2 r% e/ F
  7442.       (entmod elist)) G5 i. f9 |0 R& v- J( u
  7443.     )/ e) o) z/ b, @8 X, y
  7444.   )
    : L8 v: L4 R: e- o" G; _

  7445. . |' g8 N3 f: e; [. b
  7446.   (defun ddxline ()5 ?4 |. h% Q' a! A# x! ?/ s
  7447.     (if (= etype "XLINE")
    1 Y- b% i& i+ V: M" J
  7448.       (if (not (new_dialog "ddxline" dcl_id)) (exit))
      D" O4 f4 m0 O/ _* b; L& d
  7449.       (if (not (new_dialog "ddray" dcl_id)) (exit))
    # M' J7 J6 B- V  ^2 P; x
  7450.     )
    " j2 |' K5 {- P: s+ ~
  7451.     ;; Set initial tile values
    % I6 ^1 k9 |" J8 l8 {8 X
  7452.     (set_tile_props)
    + J' r$ w8 q. `! I
  7453.     (set_tile_handle)
    $ E( E7 I' w, e% p
  7454.     (set_tile_xline_pt1)
    # M7 O5 V5 L) r; O9 d# a4 L
  7455.     ;; Convert to UCS and post Direction vector.* n+ @8 r* b0 z, v4 {
  7456.     (set_tile_dirv)9 f. G* q4 }$ e, o8 T
  7457.     ;; Calculate second point by adding Root Point + Direction Vector.
    7 w6 z) K9 P/ Z) b. A* o" c8 Z
  7458.     (set_tile_xline_pt2)4 c# s) a0 ]9 I
  7459.     ;; Define action for tiles9 j4 E1 u  Y9 b) |( P8 y
  7460.     (set_action_tiles)+ Y& H% N0 ~- U  \; l4 Z# J. U7 G
  7461.     (setq dialog-state (start_dialog))
      ~6 v7 A( W- c3 f$ g" e1 ?
  7462.     (if (= dialog-state 0)+ E& r( [' `# n$ @  J+ K0 `
  7463.       (reset)4 T& w  K3 s# ]" Y$ v
  7464.     )
    6 n1 U2 N' X7 a$ i. r
  7465.     (if (= dialog-state 3)
    3 Q/ `5 t! R, w; @" o
  7466.       (progn
    & G, W5 R, C1 ~2 K" B- u1 U
  7467.         (modify_xline 1)
    % G$ B9 c3 Q, N) f6 {$ v7 S% [* @
  7468.         (while (equal xline_pt2  n4 D+ C' c$ E" m  @
  7469.           (setq xline_pt1 (getpoint xline_pt2 "\nRoot point: ")) 0.000001)
      b1 F8 J9 d$ m; N' g
  7470.           (princ "The Root point cannot equal the Second point.")% a9 E' e) ?6 P* N
  7471.         )
    6 n  n. }& H( n
  7472.         (ver_xline_pt1)
    & y; w0 [4 \) z5 K8 ]
  7473.         (ver_xline_pt2)2 B( K$ T% K# e  p, q
  7474. (princ)# F: `5 S, J# f
  7475.         (ddxline)5 n  i: t4 V7 x. F% \
  7476.       ), ?7 O9 ~/ X; U% G1 _5 K( f
  7477.     )) w. V6 \4 P$ M
  7478.     (if (= dialog-state 4)
    ! v* q* f" z- C1 t1 u3 b/ B
  7479.       (progn6 V# W2 Z$ m2 h5 s+ S  x
  7480.         (modify_xline 1)
    7 W; J4 q, P' {: u2 \4 L+ }
  7481.         (while (equal xline_pt1
      G% i1 j; L9 C  s. d
  7482.           (setq xline_pt2 (getpoint xline_pt1 "\nSecond point: ")) 0.000001)
    ) O4 t6 v; G  e, ?6 u6 [) G2 T  x
  7483.           (princ "The Second point cannot equal the Root point.")
    & Q  G0 Z8 F5 ~. f. t* o
  7484.         )
    7 i9 x; R+ {6 r* z9 [
  7485.         (ver_xline_pt2)
    $ W. Y# \* n1 [+ t  @7 ?
  7486. (princ)1 Q7 e% K/ }2 `% H% Y
  7487.         (ddxline)2 T& _  B% n4 z
  7488.       )
    + }; U4 H) E' N+ x& p2 r' @& v. L* r
  7489.     )' B; ]; _8 Y5 K, u6 V3 _
  7490.     (if (= dialog-state 1)& [" C: t% T  s  G( u, J( v- Q
  7491.       (modify_xline 1)2 _+ t8 R: D9 }* S8 {
  7492.     )8 D9 V  `! Y% \, {# g
  7493.   )
    ; N! F" ]: S3 ?* |) F1 o3 t  E$ N
  7494.   ;;( n2 _7 |( z7 q3 ]
  7495.   ;; Modify ELLIPSE
    / `5 N! K! u( l: z; k9 @
  7496.   ;;
    9 P4 a5 m3 n1 e$ ?% R
  7497.   (defun modify_ellipse ()1 x) P/ m' O3 V% z- v8 S* _
  7498.     (modify_prop_geom)
    6 v0 H/ D" b, e3 Q8 t( A
  7499.     ;; Update Ellipse Center Point value.! e2 e, d) d" o( M6 ]; K0 @
  7500.     (setq pt1 (list x1 y1 z1))8 u; @4 H% T# d( w% [: w
  7501.     (tempmod pt1 10 1)4 |: n/ a# U# v% O
  7502.     ;; Update Start Parameter value.
    7 ]9 g8 I8 Z4 d2 L# a7 w
  7503.     (setq y_val (sin st_ang))
    6 Y) L6 y+ H, S& J; y4 L8 t4 s0 Z
  7504.     (setq x_val (* rrat (cos st_ang)))
    9 o( S0 _; I- s9 R' ?" _0 ]4 f
  7505.     (setq stparm (atan y_val x_val))4 a) e1 E8 _8 q) M1 ]
  7506.     (setq elist (subst (cons 41 stparm) (assoc 41 elist) elist ))5 V" ~5 A$ H% J6 D" q
  7507.     ;; Update End Parameter value. Normalize it, if it's less than* z: z" N9 {; z1 P
  7508.     ;; the start parameter.
    4 n* o! b, i7 a' N+ i
  7509.     (setq y_eval (sin end_eang))1 P( k+ _1 O! \
  7510.     (setq x_eval (* rrat (cos end_eang)))
    2 Z9 s6 @9 L5 R/ T+ V
  7511.     (setq endparm (atan y_eval x_eval))5 R' c8 G+ W- ~8 n0 \1 S/ B) U
  7512.     (setq diffparm (- endparm stparm))5 f2 C5 E  p* ^, P
  7513.     ;; Epsilon of 1.0e-6 radians for checking a zero length arc.
    : Y# w" F( c# S' [5 u& D3 g
  7514.     ;; Since zero length arcs are not allowed - construct the full$ v6 G5 K! c  c" {* D, C3 L
  7515.     ;; ellipse in this case.
    $ m9 [! Z! T+ n5 p% H& @8 R0 o) ?
  7516.     (if (<= (* diffparm diffparm) 1.0e-12)
    ; N& _) F5 ?) l/ m6 Q
  7517.         (setq endparm (+ stparm (* 2 pi)))  z5 }. U) t4 U" s8 R
  7518.     )
    / `* p& A9 J9 A% V
  7519.     (if (<= endparm stparm)( |9 [$ P1 `) S( x0 \: W' l# w. F
  7520.         (setq endparm (+ endparm (* 2 pi)))
    ) Q2 c3 r- N3 t2 |' ^
  7521.     )
    8 l* i+ g% U8 G! M  h3 e6 Q
  7522.     (setq elist (subst (cons 42 endparm) (assoc 42 elist) elist ))
    - F6 P5 p8 a8 C( e8 o
  7523.     ;; Calculate the Major Axis Vector by first calculating) x! i. z9 b3 Q3 Q; o8 v% j
  7524.     ;; a unit vector using the old Major Radius value. Then0 N& |* W, Y2 Q0 ]1 K0 U7 f: N
  7525.     ;; Multiplying that by the (possibly) new Major Radius
    ! A$ p- p5 T/ {8 @4 e, [
  7526.     ;; value to get the new Major Axis Vector value.
    1 ?6 r4 P5 A: y7 ~1 G
  7527.     (setq unitxx (/ xx old_majrad))
    4 G) i" `3 g- @+ F
  7528.     (setq unityy (/ yy old_majrad))& c2 t7 ]1 q6 d! ]8 `+ b" M
  7529.     (setq unitzz (/ zz old_majrad))8 e- q$ \  n" r% S- h6 C1 Z, v: X
  7530.     (setq newvecxx (* unitxx majrad))
    2 j5 @4 o' m. j7 }3 G
  7531.     (setq newvecyy (* unityy majrad))
    4 O# x. n' ?# @7 ~1 ~
  7532.     (setq newveczz (* unitzz majrad))
    7 [  }2 ~" D" T  N
  7533.     (setq newmajaxis (list newvecxx newvecyy newveczz))
    7 W# a4 i% B4 }
  7534.     ;; Update Major Axis Vector value
    " P( v# v8 L+ b$ k; q" E
  7535.     (setq elist (subst (cons 11 newmajaxis) (assoc 11 elist) elist )). l1 p% \# D* ?; q
  7536.     ;; Update Radius Ratio value
    ; b8 v! d- r! c6 A
  7537.     (setq elist (subst (cons 40 rrat) (assoc 40 elist) elist ))
    : F# Y8 x9 e3 {- \; k) A3 X
  7538.     (entmod elist)
    6 }; G! v- g% Q) S
  7539.   )8 s' ~3 o1 |5 B7 Y2 `: r6 g

  7540. & ]' C" i& ^' |/ T% o
  7541.   (defun ddellipse ()! A& ], j+ m4 T! f; s
  7542.     (if (not (new_dialog "ddellipse" dcl_id)) (exit))( v* b* i$ d  |
  7543.     ;; Set initial tile values" Z3 Z7 J" f# B/ ]( y  ?- c3 s
  7544.     (set_tile_props)9 G1 A3 `* f2 Q0 \7 g+ s
  7545.     (set_tile_handle)
    : y# ~/ M2 O! ]' j! c
  7546.     (set_tile_pt1 1)
    6 M' f$ A$ Z8 c* A
  7547.     (ell_calc)& X9 m5 g/ l+ z& B
  7548.     ;; Define action for tiles/ Z( F: l( ?, G
  7549.     (set_action_tiles)
    7 v4 J% T0 c( Y0 H7 D& y
  7550.     (setq dialog-state (start_dialog))! x/ ~) N' I9 u# P- \( [. O
  7551.     (if (= dialog-state 0)
    ) B  F5 ?9 c/ L0 B3 _
  7552.       (reset)8 O- j$ W: j7 a& [$ p( S( [3 b  h% U
  7553.     )
    , z* ?' B- z- ?. l4 Q
  7554.     (if (= dialog-state 1)
    3 i  O- T: s+ w- {& y
  7555.       (modify_ellipse)/ t6 j% v4 t; S& R# Z" B0 T
  7556.     )
    0 M# d2 ?+ o$ C+ C* N7 F, H3 ]5 V
  7557.     (if (= dialog-state 3). v8 C  u0 b! {
  7558.       (progn5 k2 s$ d0 P  K! q5 P5 q: i: B
  7559.         (modify_ellipse)% ~) \. G7 p# \+ I4 n# \2 G' P( U
  7560.         (setq pt1 (getpoint (list x1 y1 z1)  "\nCenter point: "))9 t1 o% I9 P$ e% E5 X
  7561.         (ver_pt1 1)
    2 L" V$ G' ?; Y/ U# s, I
  7562.         (ddellipse)" ]2 _0 j$ i- I3 [
  7563.       )
    / R: A4 t% G4 O
  7564.     )5 J1 d8 L9 @; w6 c
  7565.   )
    / v# P, U' D( L/ D/ u* [! t: q6 @
  7566.   ;;# Y. q1 a; Y, k5 d3 k
  7567.   ;; Modify REGION
    6 w& B: T4 V( f1 J6 o
  7568.   ;;( E0 m0 ~1 D7 p3 W  Y
  7569.   (defun modify_region ()5 c/ n+ t7 D' C2 s
  7570.     (modify_prop_geom)7 S5 {2 f& g& b" P# ^' T9 D. e
  7571.     (entmod elist)- s1 b+ F8 O2 T
  7572.   )
    - p' {8 w+ G8 W" _3 H" W

  7573. . R5 @- r# j& z/ B6 o/ B
  7574.   (defun ddregion ()$ U7 x- x/ i) f" e! x! W% F
  7575.     (if (not (new_dialog "ddregion" dcl_id)) (exit))
    6 g1 [" _1 i# C. [
  7576.     ;; Set initial tile values: P8 K1 S/ g' v/ w" Q
  7577.     (set_tile_props)5 q4 Q+ J  k5 `" L
  7578.     (set_tile_handle)5 B1 W) B& C+ n% H8 c# U4 h
  7579.     ;; Define action for tiles& K) i, }% u% \: a$ K, @
  7580.     (set_action_tiles)1 d. Y. ?. N7 S1 W
  7581.     (setq dialog-state (start_dialog))
    8 u' J  g+ u/ \1 I+ {
  7582.     (if (= dialog-state 0)
    / a1 y9 X; p4 Z) m9 h
  7583.       (reset)% l8 h. ?$ m$ X8 A
  7584.     )
    + k  o7 A. x8 ~
  7585.     (if (= dialog-state 1)
    0 H* N1 J" n9 {9 Y* q! q/ I
  7586.       (modify_region)
    # Y6 w, i  N" ?8 |$ t* m4 r) K
  7587.     )5 ]# z3 m/ A6 f+ ]( K
  7588.   ); @. T( w" `. I  X) Y7 ?
  7589.   ;;
    . y$ }3 U! j' E) H0 C% k0 ]5 ?
  7590.   ;; Modify 3DSOLID
    8 ~- a" a6 c6 W9 y" l' F
  7591.   ;;
      W0 k$ x+ P. M0 G# k& i
  7592.   (defun modify_3dsolid ()
    , ~3 [1 t1 |* w! `: S. _
  7593.     (modify_prop_geom)3 b7 T% v2 Q2 q2 x# O; ]
  7594.     (entmod elist)
      u& `3 i. p! a) [# ?
  7595.   )3 m1 S' d) S2 [9 |0 ^' M) _

  7596. * q9 F$ U5 u* ^$ a: ?) C/ M
  7597.   (defun dd3dsolid ()0 E/ N* ^+ {/ u* B! `5 O$ x
  7598.     (if (not (new_dialog "dd3dsolid" dcl_id)) (exit))
    ' y- g) w+ o9 {) q
  7599.     ;; Set initial tile values5 e4 G3 W7 e* o' k+ N
  7600.     (set_tile_props)/ Q9 ~  J, i; L' q5 v
  7601.     (set_tile_handle)
    ) `: }# \, Y" ]% }9 J  Q
  7602.     ;; Define action for tiles! l2 |/ x3 j9 F! u+ x4 Z
  7603.     (set_action_tiles)
    : T& l( }3 m/ J, W0 f2 q5 z. A$ y
  7604.     (setq dialog-state (start_dialog)): O3 @5 ^5 ?7 `8 C  ~
  7605.     (if (= dialog-state 0)" x  p: z. `# @7 |9 e9 }
  7606.       (reset)) e! M& y. h8 L& m, a
  7607.     )
    9 a! h* H0 {. s* E; L: C! T
  7608.     (if (= dialog-state 1)! i, C/ b, B2 ?4 a& l
  7609.       (modify_3dsolid)
    2 Y( e- K# d9 p- O# g
  7610.     )6 Q% P! W# [( y% s3 C# u
  7611.   )
    , u2 B3 i" G+ u9 Q
  7612.   ;;
    6 v4 T+ h2 q/ y
  7613.   ;; Modify AcDbHatch7 @4 Q; r; U: W3 R4 i: K( e, @, I
  7614.   ;;
    3 t3 z+ h. L/ L+ ]9 V
  7615.   (defun modify_hatch ()
    0 ]& d- ?$ t( L( V2 L1 T- F* P' T
  7616.     (modify_prop_geom)* p$ @" N* G3 A3 P
  7617.     (entmod elist)
    4 _8 }! a. o" E$ ]( `
  7618.   )
    + x, m6 g$ j1 }7 o1 m" J8 x' p
  7619. + N: a% i; z* P( E& A  @
  7620.   (defun ddnewhatch ()
    8 ^; e! [9 a# u. C) |5 G2 Z
  7621.     (if (equal hatch-elist nil)7 p, O1 c* a8 u" n1 F
  7622.          (setq hatch-elist old-elist)
    3 e7 w. `9 y" M
  7623.     )
    $ J5 M  i1 u$ H; _

  7624. ; }7 F2 D/ X7 d, j1 m7 ^, w
  7625.     (if (not (new_dialog "ddnewhatch" dcl_id)) (exit))
    ' u. P6 e  t) c$ X

  7626. 7 `: F* V& D; e8 k
  7627.     ;; disable the thickness tile
    % `$ U5 m: b. u/ ^5 c$ U
  7628.     (mode_tile "eb_thickness" 1)
    6 _& U& E# X6 w! C7 t
  7629.     (mode_tile "e_thickness" 1)( f' V" |6 D3 R" a8 Q! \" w4 b- P- v
  7630. 4 s: m' y- s: q: q- D
  7631.     (setq help_entry "modify_associative_hatch_dialog")
    ) _1 K/ E1 v! V' F
  7632.     (set_tile_props): w5 N1 i6 |; s( A1 r4 s; v+ P
  7633.     (set_tile_handle)
    & A& t9 U4 P+ p% P4 w

  7634. : h. O. y; G9 S) \, U9 b
  7635.     ;; Define action for tiles4 G. ~1 \1 j* P% g: v
  7636.     (set_action_tiles)# p1 _% c% w8 P- e* E
  7637.     (action_tile "b_hatch" "(done_dialog 2)")
    9 M) r& O6 N8 a. m( H, o
  7638.     (setq dialog-state (start_dialog))$ [- q6 k5 U* G
  7639.     (cond
    & T+ m- E1 R$ p
  7640.        (  (eq dialog-state 0)
    9 j# m& f/ |- q9 Y0 Q
  7641.           (setq old-elist hatch-elist)
    ( q' ]0 o/ r3 L3 Y9 J' c
  7642.           (setq hatch-elist nil)
    " \; ^4 y3 U: d6 B5 \7 y6 j" n+ E& J
  7643.           (if (= (checkforlockedlayer ename) nil)
    ; B% @8 O0 X3 w- `
  7644.              (reset)
    " G& x/ d3 G! b, N- C
  7645.              (progn         ;;; special handling for locked layer reset: y9 t: E3 O: \- k3 |+ h6 @
  7646.                 ;; unlock the layer: Q9 m2 O! a9 Q% |
  7647.                 (setq layername (cdr (assoc 8 (cdr (entget ename)))))( T- i& R" j, s3 U) @" Y% v- L
  7648.                 (command "_.-LAYER" "_Unlock" layername "")
    ) g# x' \' \+ d, K' z# {& g
  7649.                 ;; reset modifiction
    ) d' ?* N8 w% A( [/ t; R- z
  7650.                 (reset): x; [$ K" Q8 J# O- I( u( o
  7651.                 ;; lock the layer again( T/ Z) e6 Z; q
  7652.                 (command "_.-LAYER" "_Lock" layername "")+ g- q3 ^5 m0 A* F$ Y; e: \0 {
  7653.             ): e& U. [4 D) I& }$ b5 g& A: B
  7654.           )
    8 h0 r% U# S& M, ?
  7655.           nil       ;;; makes (ddnewhatch) return nil for Cancel8 g) o9 @6 X* y/ c# {
  7656.        )2 R" b, s1 u% M. f
  7657.        (  (eq dialog-state 1)
    ( o! p" v" e: Z6 `
  7658.           (setq hatch-elist nil)
    8 I5 o1 h) P1 z# K; ]
  7659.           (modify_hatch)
    9 Y, F6 V$ }/ O% C4 m0 ~! V
  7660.           T         ;;; makes (ddnewhatch) return T for Ok
    : t; f7 o/ J2 C6 H6 E0 T) Y
  7661.        )
    # b  m( l$ J. D) Y( g+ v, a5 z" K/ L! m
  7662.        (  (eq dialog-state 2), e" T0 N2 x( j

  7663. ( M+ h+ }+ f- f7 `  S
  7664.           (if (= (cdr (assoc 70 (tblsearch "LAYER" elayer)))* J. e5 a( t( Q7 `$ w: l& x) y3 E& o% a
  7665.                  4# }& Z" j2 N: Z4 p/ j
  7666.               )            
    8 M$ }& K' G4 E  U7 G7 G' n3 I
  7667.               ;;; new selected layer is on a locked layer
    - L6 f5 N6 r4 Y3 F' v. l, ]
  7668.               ;;; we can simply modify the hatch properties
    8 H# b- C5 n' b
  7669.               (modify_hatch)
    * Q, ~$ P% {) R# D$ f% O( v9 y
  7670.               (progn9 T& i/ @2 [8 G( ^8 H* C
  7671.                     (if (= (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 (cdr elist))))))+ V0 J$ M, o' S" M/ A% {
  7672.                             4" L2 f2 _0 c# m. m
  7673.                         )           
    + h; D, N9 I3 m1 z: h* m# i& `
  7674.                         ;;; We changed the layer previously and now the hatch lies on a locked layer.& |2 [; X3 I+ l0 e2 j( Y& [6 g2 |
  7675.                         ;;; We have to unlock the layer forethat we can update the hatch properties.
    0 s6 W/ L9 t8 ]
  7676.                         ;;; If we don't do that (entmod) fails to update to the new layer.
    ; R' Y  T7 y* P
  7677.                         (progn7 C# c: Y- ]' v+ p
  7678.                             (setq layername (cdr (assoc 8 (cdr elist))))) {  }1 I& o7 q) v5 O+ S
  7679.                             (command "_.-LAYER" "_Unlock" layername "")     ;;; unlock the layer
    7 X9 j1 b( G: v! G  c  ]
  7680.                             (modify_hatch)                                  ;;; update the properties
    + ^* K$ [) M) J4 e( M! k
  7681.                             (command "_.-LAYER" "_Lock" layername "")       ;;; lock the layer again5 U( X* R5 H/ a6 f" C2 u
  7682.                         )
    + e( c$ n6 C8 @. F' s1 r
  7683.                         ;;;  All other cases we simply update the properties6 @% P; I1 Y2 ^& u& |9 L: ~; f
  7684.                         (modify_hatch)
    ) q% U5 o2 E& \) t1 D0 H" z% V) U
  7685.                     )
    ; X$ f5 |) C7 F; {8 [+ T9 H
  7686.               )
    ' v% e( B7 K3 l1 @3 `: L% q
  7687.           ) 9 W- B9 i: e! n% |' P
  7688.           (if (= (checkforlockedlayer ename) nil)4 h" @0 F2 `4 `3 ]4 f
  7689.               (command "_hatchedit" ename)* k4 Z  \7 d- r. u9 Z) ]0 q8 s
  7690.               (alert ;|MSG111|;"The hatch object is on a locked layer.")  t' s8 c& Q0 B+ O
  7691.           )
    " s! v0 G! m) V" j8 p. h
  7692.           (ddmodify ename)
    ( p# |* u. h- t4 X( b8 ~
  7693.        )4 Y7 m8 K! `5 z' @% J
  7694.     )9 D4 Z0 l4 B4 V/ }" a; Q3 ^" V
  7695.   )
    . O( |( Y3 n$ J% p9 Y3 C7 A* b
  7696.   ;;
    * _4 }9 L+ [! x6 ~
  7697.   ;; Modify BODY
    1 j4 T, M: i+ V+ D) ~! [- R" n
  7698.   ;;
    + s( {0 R! z# o, m- k
  7699.   (defun modify_body ()
    / P% R; i# ?9 r. ]" \: h3 C* `  M
  7700.     (modify_prop_geom)2 y: p% r% t* g0 `. x8 O8 K
  7701.     (entmod elist)
    3 X* _) T1 Q& _8 t* B% B& Q
  7702.   )
    + V- L% j* \; J5 j- [- y; |

  7703. 9 F/ V/ x/ I* W  C+ E$ @$ S
  7704.   (defun ddbody ()2 i. }6 |  s* R6 Y: Q- X
  7705.     (if (not (new_dialog "ddbody" dcl_id)) (exit))
    . W* m$ c" u- L$ }; N3 g. y3 \
  7706.     ;; Set initial tile values
    - ~' q. \( h# ^
  7707.     (set_tile_props)
    * E6 T! M7 S+ Z! Q2 z
  7708.     (set_tile_handle)
    8 v8 s& d3 h2 ]
  7709.     ;; Define action for tiles
    8 Y. j0 Z! H3 E' x# m
  7710.     (set_action_tiles)
    # y, @' V; ]' d1 v; [
  7711.     (setq dialog-state (start_dialog))
    & t* b+ k' r; S5 o' ^/ H  j
  7712.     (if (= dialog-state 0): K1 W! ^0 l& G1 v$ {5 J6 }3 ~
  7713.       (reset)
    ! n' z& x- i; T: b" G; G( ]$ P3 n
  7714.     )- x1 n3 I: [( M' A
  7715.     (if (= dialog-state 1)* ~. x/ i4 U- h2 c" n
  7716.       (modify_body)/ G; l; Z" R6 v+ P
  7717.     )
    " Y% T' {2 |+ i; }: X
  7718.   )% ]; m2 A% o* f1 v9 Q" m
  7719.   ;;
    5 x" z5 v5 J& \) j. }
  7720.   ;; Modify CIRCLE
    - W0 _; y8 {  e
  7721.   ;;
    ! ]8 d  n# w: G; O6 g
  7722.   (defun modify_circle ()6 B# ~+ B% Y: F9 }
  7723.     (modify_properties)
    ! P' `; B) s3 ]$ m
  7724.     (setq pt1 (list x1 y1 z1))
    ! h% y0 ?; W& g! n0 a
  7725.     (tempmod pt1 10 1)$ H+ m$ {7 M$ q" F
  7726.     (tempmod radius 40 nil)
    0 w1 u( @  Y/ {. ^! l7 R
  7727.     (entmod elist)3 D. d, D+ g4 w: ]$ C
  7728.   )
    : u9 L8 u/ r: Y4 S

  7729. & L1 T/ ]; u( u4 f" ~% ]& |
  7730.   (defun ddcircle ()
    2 g- E/ p7 {/ n/ s* m  K
  7731.     (if (not (new_dialog "ddcircle" dcl_id)) (exit))! l5 g* V  h' l! L
  7732.     ;; Set initial tile values9 y( U1 M" M, B0 C
  7733.     (set_tile_props), ]& U: u! Y0 g+ [
  7734.     (set_tile_handle)
    $ E. q6 z1 G( y
  7735.     (set_tile_pt1 1)
    . v9 c) p1 r4 @* W/ A3 ]/ x" m1 I
  7736.     (set_tile_rad). Q$ u) p& ?1 b. y# t0 Z1 a# ?
  7737.     (cir_calc)' c& l6 k; p* l% X" x
  7738.     ;; Define action for tiles
    + d; d7 H6 G; g' I/ }4 A
  7739.     (set_action_tiles)% @$ p8 A# U( J4 y6 z
  7740.     (set_tile_pt1 1)4 Z3 L/ ~8 X3 S: Z* d
  7741.     (setq dialog-state (start_dialog))
    ( \2 X5 d( d- L7 [
  7742.     (if (= dialog-state 0)$ }) B3 V: e* V/ ~: h9 X9 f
  7743.       (reset)3 Y7 o3 I8 K4 _9 g7 t4 E
  7744.     )
    - a% t* J0 {' m6 @; i
  7745.     (if (= dialog-state 1)- v9 h2 T' }; t! [
  7746.       (modify_circle)
      C5 |0 p( a% @7 m1 h% P
  7747.     )1 {! W1 [) S9 B4 B# C
  7748.     (if (= dialog-state 3)2 w# o4 O( i( f. o9 C: c/ W$ I# T
  7749.       (progn7 d8 o& R9 d: l/ a0 ~6 \4 ?! y
  7750.         (modify_circle)
    , k% e9 s6 E7 ~! K; b5 \
  7751.         (setq pt1 (getpoint (list x1 y1 z1)  "\nCenter point: "))
    1 s& D$ O* G- {  q8 D0 e6 R( p3 O
  7752.         (ver_pt1 1)
    ) k# G1 L) @6 c0 e; A$ j6 h+ f: c
  7753.         (ddcircle), c. v; L# p$ m" M5 @
  7754.       )
    9 z5 C3 ^! [7 y
  7755.     )
    . n7 o: `- T; V) s6 c8 p
  7756.   )
    & Y% d: S" Y0 }" G$ R$ e( X
  7757.   ;;3 u1 x; a; |- \3 Y+ J5 _
  7758.   ;; Modify ARC. X& r0 N- T3 g) p
  7759.   ;;4 W4 K; `  T2 e1 h
  7760.   (defun modify_arc ()" i% H# y1 r  c7 j( i& {9 H
  7761.     (modify_properties)
    ' `( H$ U0 ^9 ~
  7762.     (setq pt1 (list x1 y1 z1))
    # J$ G$ b6 L9 R
  7763.     (tempmod pt1 10 1), M% F' u$ A& D$ R2 ]# n
  7764.     (tempmod radius 40 nil)
      w' O& i( T$ z8 [4 ^
  7765.     (tempmod st_ang 50 nil)
    1 O- x* J3 t5 B; K- k0 L' L
  7766.     (tempmod end_ang 51 nil)" H( S5 @. `& R4 ?
  7767.     (entmod elist)) \* a& M6 k# |) }, V) {
  7768.   )9 J# _1 A+ s! ]1 E
  7769.   (defun ddarc ()5 F  O' I. Q2 G
  7770.     (if (not (new_dialog "ddarc" dcl_id)) (exit)), u. @; g; p# A  [
  7771.     ;; Set initial tile values
    0 q2 k% a( h$ R3 h- ]' `
  7772.     (set_tile_props)
    & m' x3 G" s7 T1 n" c* t
  7773.     (set_tile_handle)
    ) U( G6 U/ l& r+ a2 w- f, a
  7774.     (set_tile_pt1 1)
    / C, H$ I- B. e6 k4 g1 v; V
  7775.     (set_tile_rad)5 _1 f: r6 G, ]0 V/ L# i( m
  7776.     (set_tile_stang): e+ z5 U' ]5 I
  7777.     (set_tile_endang)
    8 N7 q) A1 y+ P' ]) C
  7778.     (arc_calc)* B8 s: N# X  d( q, g" T
  7779.     ;; Define action for tiles. E7 c0 j2 o6 _) @0 Z. U% i
  7780.     (set_action_tiles)
    6 k5 d! D& x, t
  7781.     (setq dialog-state (start_dialog))9 g6 T. ?6 V1 Q+ e. c
  7782.     (if (= dialog-state 0)
    * W) O& b8 a" `4 p. r7 h* x: r" E: ]
  7783.       (reset)2 U5 _$ q  B/ t* S0 E
  7784.     )
    $ e1 e& q( F1 r/ N
  7785.     (if (= dialog-state 1)1 L; A6 ?0 R; m* O5 F, S
  7786.       (modify_arc)
    4 X7 Y7 ?; w  x  ]4 h
  7787.     )* N0 d; L% g$ f# d: l& I: C
  7788.     (if (= dialog-state 3)$ |! O4 m" ^! W4 s9 b, b7 f5 J# \" x
  7789.       (progn5 W- h5 _0 o" Y9 S$ S$ z- U$ n
  7790.         (modify_arc)
    6 ?7 v2 G0 z# H1 n# `3 X
  7791.         (setq pt1 (getpoint (list x1 y1 z1) "\nCenter point: "))
    " N; c% Z7 ]6 n) C
  7792.         (ver_pt1 1)
      Z. ]/ O) [! R! i1 X+ j
  7793.         (ddarc)
    9 e' H! L' N% m5 ~
  7794.       )
    / C% Q) r# e. |5 @. S) u" f) t
  7795.     )
    # r/ M- t7 n3 i4 f' ?% ]6 G
  7796.   )9 I: f( D+ L% }/ E
  7797.   ;;7 f* m% O% V  W* C# z5 r# b$ `" t$ T
  7798.   ;; Modify SOLID or TRACE
    5 C: ^6 T* Q  G: m
  7799.   ;; Note the Z value of the object is determined by the Z value of the fourth' @# p0 X6 I$ c$ `' ^& A1 l6 {
  7800.   ;; point - code 13.  Changing the point values of a solid or trace from a UCS
    / [" P* D9 F' y  i" }3 B
  7801.   ;; that is nonplanar to the UCS the object was created may confuse the user.
    * ^  K) _/ l( L1 T3 H
  7802.   (defun modify_solid ()! k+ m6 w! ^, t) y
  7803.     (modify_properties)
    , ~8 l& Y% b( m6 g$ X, |  Z- |4 d
  7804.     (setq pt1 (list x1 y1 z4))
      t1 `7 W" Y2 q$ @0 m/ `
  7805.     (setq pt2 (list x2 y2 z4))' e- k# }. n+ w$ ^9 A1 V/ r
  7806.     (setq pt3 (list x3 y3 z4))
    $ o' O: \8 |( k4 b4 u- Q
  7807.     (setq pt4 (list x4 y4 z4))
    6 H& }& v6 @; ?2 _& x6 P# f
  7808.     (tempmod pt1 10 1)9 J% i  y4 @9 }; q7 ]6 ?4 \
  7809.     (tempmod pt2 11 1)4 |( n/ q7 `- ?8 S
  7810.     (tempmod pt3 12 1)# Q$ T( \/ w* s9 O$ I
  7811.     (tempmod pt4 13 1)
    * T1 s: {- ?3 q  v, o" b9 }& I
  7812.     (entmod elist)
    1 R0 y/ Y$ v4 F8 t, }+ s
  7813.   )
    - Q/ |3 l8 E5 W$ p1 }( U
  7814. * \% O$ c$ e# F9 b
  7815.   (defun ddsolid (); u, @- r. B% A
  7816.     (if (= etype "SOLID")
    % B$ T6 x; R9 i% P! F
  7817.         (if (not (new_dialog "ddsolid" dcl_id)) (exit))8 U$ m/ ?0 i! G9 ]1 S) V
  7818.         (if (not (new_dialog "ddtrace" dcl_id)) (exit))
    : E2 G+ }9 L3 @- D
  7819.     )
    $ ^4 j4 ?9 D- o
  7820.     ;; Set initial tile values
    8 x) N6 O' ^$ o' G8 I2 ]! Y. V+ D
  7821.     (set_tile_props)$ k7 M8 D. g# I5 l9 p, a" O. n
  7822.     (set_tile_handle)1 H5 h1 T* D9 ^$ {7 _  ^: t
  7823.     (set_tile_pt1 1)7 X( ?- |& H: B
  7824.     (set_tile_pt2 1)" V0 ^  g9 r" ]
  7825.     (set_tile_pt3 1)5 U' \$ v& m9 a1 ~: d( B
  7826.     (set_tile_pt4 1)# |$ A( Y" v$ a+ E) K* t1 N
  7827.     ;; Define action for tiles# J% ]' S- M0 B7 J: S) F
  7828.     (set_action_tiles)7 k0 k. N1 Q8 _
  7829.     (setq dialog-state (start_dialog))! m  w! b0 w/ Z' K, }  L$ m5 j
  7830.     (if (= dialog-state 0)
    8 h8 V  x% f) c& g9 r! Q6 ?" ?. Q/ q
  7831.       (reset)7 p! ?$ U8 B" F$ K) V
  7832.     )& U2 F- _( t2 v' x
  7833.     (if (= dialog-state 1)
    4 x. @0 c' ^% N6 g
  7834.       (modify_solid)
    8 \9 Z9 x/ L7 Z! T" S. m
  7835.     ), u( I4 C+ V. l, f( g0 `( `- [2 n
  7836.     (if (= dialog-state 3)
    $ f" G, [, R6 n$ m3 O
  7837.       (progn
    % m# C+ g3 E; I; f+ Y; o3 |* U
  7838.         (modify_solid)& k$ L9 H; ^* D9 U# U; s
  7839.         (setq pt1 (getpoint (list x1 y1 z1) "\nFirst point: "))8 @- F% V% U% f) W: h% t' }; B. y2 `& O
  7840.         (ver_pt1 1)) u, l$ ?; @+ Q% M
  7841.         (ddsolid)
    5 b4 G8 b  N2 M+ y
  7842.       )
    % V1 N) {6 u/ M6 p2 x% {! F1 k+ ~
  7843.     )! ^; L4 L. k& s. s& s9 T
  7844.     (if (= dialog-state 4)
    6 |7 A, L! _4 I; g! n3 ^3 m+ o5 }
  7845.       (progn  L. x% d$ z! p9 g; a& G  a# Y) U
  7846.         (modify_solid)$ G# |/ V5 Z" l. c
  7847.         (entmod elist)
    3 t* X* f7 K9 \0 t6 j
  7848.         (setq pt2 (getpoint (list x2 y2 z2) "\nSecond point: "))
    ) [0 K" \* O" m& e! t) @( I; Q
  7849.         (ver_pt2 1)
    ; L7 w" I$ ~( Q  [" X1 m
  7850.         (ddsolid)
      e4 m! ?9 j0 U1 `' x
  7851.       )
    ! s. W3 W2 q7 L! P$ K0 J
  7852.     )# U/ }: O; ~5 Y: a, r
  7853.     (if (= dialog-state 5)
    ( X  O* w5 F1 W6 T. K; Z/ Y
  7854.       (progn/ r5 Z, Q) R, i& c0 @* n; L
  7855.         (modify_solid)
    " u6 y' V  r) N1 i/ M0 |
  7856.         (setq pt3 (getpoint (list x3 y3 z3) "\nThird point: "))* e$ T$ m9 S: B( j& p$ \
  7857.         (ver_pt3 1)- L5 X. U: g% ~0 h' R  b2 [
  7858.         (ddsolid)
    & ~' Y& g$ p1 i- `0 C( q% j
  7859.       )
    2 j+ ]* M7 P: ?
  7860.     )
    % k  R+ l# g0 s5 D7 i. A& Y
  7861.     (if (= dialog-state 6)
    8 r7 d; c. j/ n, h4 I
  7862.       (progn% ~% f7 I8 k% B, E/ F9 W
  7863.         (modify_solid)! b3 h. T: F: |$ U! i' w
  7864.         (setq pt4 (getpoint (list x4 y4 z4) "\nFourth point: "))
    & B, K+ p" W" y& q: o1 r
  7865.         (ver_pt4 1)
    / F! `! Q) s. ^5 Y/ o6 ~2 k
  7866.         (ddsolid)/ V  b, l7 P- b/ b" j% k
  7867.       ). c: j- `( W/ q  {. W, I+ f/ ~
  7868.     )
    ! D" v. a& S, \5 W7 N. L
  7869.   ): Q1 Q6 M  q6 K. L
  7870.   ;;) _- y1 P, @& q3 O& q- z
  7871.   ;; Modify 3DFACE
      v, [2 V8 O% N
  7872.   ;;* y: G1 x; {' v1 m+ S
  7873.   ;; Check visibility of edges3 T1 }' C! N. R& ^. ]; P# F; u4 g& V
  7874.   ;;
    * y# L! T& }9 i8 w5 P/ }& o
  7875.   (defun edgetest (/ bit1 bit2 bit3 bit4)
    8 ^7 m, J/ Y$ D# ]% U- A2 Z
  7876.     (if (= edge1 "1") (setq bit1 0) (setq bit1 1))
    / i3 {% o; ?% K! ^2 p2 N* k: h
  7877.     (if (= edge2 "1") (setq bit2 0) (setq bit2 2))
      S' ^$ R$ P0 z  \& p* }. n! K
  7878.     (if (= edge3 "1") (setq bit3 0) (setq bit3 4))
    2 n7 g9 U5 ~+ [% C
  7879.     (if (= edge4 "1") (setq bit4 0) (setq bit4 8))
    1 i4 W+ J/ _0 p5 K/ k0 |
  7880.     (+ bit1 bit2 bit3 bit4)
    ( g1 k: [; I$ h" ~
  7881.   )
    ' m0 P; M5 y8 [& C( U

  7882. & J# x6 v( ^' m  Y* ]2 h4 [) O
  7883.   (defun modify_3dface ()+ q7 s1 G$ Q* e
  7884.     (modify_properties)1 ?* O+ I7 ?7 j) H: r4 D
  7885.     (setq pt1 (list x1 y1 z1)). ^6 A& O- T& z! e3 N& B
  7886.     (setq pt2 (list x2 y2 z2))
    5 S1 [0 n+ X8 u' x
  7887.     (setq pt3 (list x3 y3 z3))
    7 e1 q; T( v: p/ I1 f
  7888.     (setq pt4 (list x4 y4 z4))
    2 I! W0 T- K$ O
  7889.     (tempmod pt1 10 0)
    , T1 x- q$ C1 \! k+ F3 g
  7890.     (tempmod pt2 11 0)) E/ |) o% t. ~7 y
  7891.     (tempmod pt3 12 0)
    % I* J) Q% \+ f0 ?: b
  7892.     (tempmod pt4 13 0)- O9 C$ B+ `+ w0 `; S# r
  7893.     (tempmod (edgetest) 70 nil)
    . ?3 Q& X) q' S+ _4 s  d
  7894.     (entmod elist)5 c( w3 s0 A* e( L* r" _; h
  7895.   ), O2 Z) |6 G( P5 d0 I2 q! \

  7896. $ l+ |; Y4 l7 d! a# q% ~! E
  7897.   (defun dd3dface ()2 b7 R6 |5 K# T8 A4 W1 X
  7898.     (if (not (new_dialog "dd3dface" dcl_id)) (exit))
    9 L) x  l* v5 t
  7899.     (set_tile_props)2 V2 q. N2 q, T: ~/ H2 N
  7900.     (set_tile_handle)
    + ^+ E$ c7 G3 m; M/ u! }
  7901.     (set_tile_pt1 0)! h0 P( C1 w0 Y
  7902.     (set_tile_pt2 0)! H# M( g9 i. D) X* W9 n
  7903.     (set_tile_pt3 0)
    ( G0 w- }. m& _% q# g8 u: {% C/ z3 \
  7904.     (set_tile_pt4 0)
    ; r0 G2 y- X% ^
  7905.     (set_tile_edges)9 p/ c: W% i( _/ G# G
  7906.     ;; Define action for tiles. Q$ {3 Q, i% o- ^$ L
  7907.     (set_action_tiles)
      Z- T  n6 S# H! Z
  7908.     (setq dialog-state (start_dialog))
    & ~7 c# J3 Z6 {7 d. ?$ Q. V2 a
  7909.     (if (= dialog-state 0)' s, h. I9 ], M' ]
  7910.       (reset)
    - [2 K# y$ y) `: `! M* x
  7911.     )
    0 C. d" Z7 f. B2 T3 e
  7912.     (if (= dialog-state 1)
    , i% X- i: {0 \9 B3 n  ~7 c
  7913.       (modify_3dface)
    , H0 E. h8 F4 [) d; G
  7914.     )2 P- }6 C3 J- Y! T6 {
  7915.     (if (= dialog-state 3)" M/ @, W. o  O9 x  M8 ?7 ^8 C6 @) o
  7916.       (progn1 s4 n  A2 N& m8 |: A: p. y
  7917.         (modify_3dface)9 D8 {+ _- D/ D# r9 j; x% w7 J
  7918.         (setq pt1 (getpoint (list x1 y1 z1) "\nFirst pt: "))
    ) X* {8 c1 d* K0 r6 j( e
  7919.         (ver_pt1 0)% N( j1 |# k2 m0 q3 E! R
  7920.         (dd3dface)
    * @9 n! W! I# n( U3 Q
  7921.       ), ]* Z  F) V4 G0 h8 v* c
  7922.     )
    ( N& j/ `3 s( `3 i3 z
  7923.     (if (= dialog-state 4)" V3 c7 s7 S5 t
  7924.       (progn% V( {' n# V0 N. _& R5 n% O) o6 o+ t
  7925.         (modify_3dface)  s2 D! y- Q/ Y7 L2 J4 E( c( t
  7926.         (setq pt2 (getpoint (list x2 y2 z2) "\nSecond point: "))
    ( ^, s/ {: g; r7 e1 Z) O
  7927.         (ver_pt2 0)4 C! ?0 h8 [' o3 [7 \- o
  7928.         (dd3dface)6 |3 o; @' G/ X: K
  7929.       )
    2 n/ I0 n+ M) e5 I* I9 n
  7930.     )" K: p( C' H* a) T8 @) L* J
  7931.     (if (= dialog-state 5)
    4 j) w5 P8 o: \5 |& M
  7932.       (progn4 Q7 S) @) S5 K- ]  z
  7933.         (modify_3dface)
      n- w; O* @! u2 o3 g# S
  7934.         (setq pt3 (getpoint (list x3 y3 z3) "\nThird point: "))
    $ P- @1 o0 u- W5 ?( n
  7935.         (ver_pt3 0)/ K4 I( r4 o* B5 W  O1 I' {
  7936.         (dd3dface)
      h; M- ]1 F% A, I+ B
  7937.       )* ~. d8 ]% b' _" H3 @
  7938.     )' A! O7 }0 b# E0 D* F
  7939.     (if (= dialog-state 6)
    4 `  F& G8 s6 S8 }. l
  7940.       (progn) x( l4 [$ R  r: B9 @
  7941.         (modify_3dface)
    ; i  ^$ h1 U4 o1 }$ F
  7942.         (setq pt4 (getpoint (list x4 y4 z4) "\nFourth point: "))
    0 o( q$ k8 Y4 J+ Z% x* s1 l+ L8 `
  7943.         (ver_pt4 0); |  A+ g/ ^1 R$ G' T
  7944.         (dd3dface)7 ]3 `' Y4 w0 U) j' s/ z' N
  7945.       )6 f% M, T( `/ L1 [
  7946.     )0 j- @5 L1 a3 ~* ]$ c8 i3 V! G
  7947.   )
    7 C  f6 v' u# ~* h. Z* c" p
  7948. . W% ~3 V8 J0 m- k7 b/ w/ t' R0 O
  7949.   ;;
    * R7 w, [, G( e, @' [! @
  7950.   ;; Image functions$ U% }, J& n, b' y" _
  7951.   ;;2 i2 I! {" P& M% C1 f, S
  7952.   (defun image_scale (/ upixel en n userscale temp)
    ! g  ?8 {8 a/ D" \1 \& J& e# V' L
  7953.     ;; Calculate the size of an image pixel in AutoCAD units% V5 k) W9 m# d4 O7 z: E
  7954.     (setq upixel (distance '(0 0 0) (cdr (assoc 11 elist))))7 x. T- S. J) v& I; l2 u7 v7 a

  7955.   s1 c4 {8 F0 }9 A
  7956.     ;; Retrieve the user scale7 P4 V. @9 X( a* L9 ~
  7957.     (setq en (dictsearch (namedobjdict) "ACAD_IMAGE_VARS"))
    & P4 a9 N9 \/ H6 G. s, R1 o

  7958. " W4 C% T. T5 A2 M2 U2 H
  7959.     ;; Next, extract the image units and pixel resolution
    * y+ d5 w/ m) B5 q
  7960.     (if (or (= 0 (cdr (assoc 281 image:olist))) (= 0 (cdr (assoc 72 en))))
    " V  y. p/ U  K
  7961.       (setq image:scale (* (cadr (assoc 13 elist)) upixel))
    5 L7 L, p& k0 m3 z2 W8 e1 b% j
  7962.       (progn
    & B" [9 n  f0 ?5 I+ e* ?& ]9 k
  7963.         ;; Convert the user scale to the proper word8 |6 N2 G" g9 B3 g: y) S2 q
  7964.         (setq n (cdr (assoc 72 en)))
    . `! I; S) U1 h0 ~2 e2 W6 m
  7965.         (setq temp (getvar "LUNITS"))  m' U' i6 F5 }1 h, B- j- Q
  7966.         (if (and (/= n 0) (or (= temp 3) (= temp 4))) (setq n 5))
    # t, S( m. |( T( f
  7967.         (if (= n 1) (setq userscale "Millimeter"))
    3 m; R$ S4 B, h! v+ s
  7968.         (if (= n 2) (setq userscale "Centimeter")), l3 e. ?8 N+ {' r: Z( W, N
  7969.         (if (= n 3) (setq userscale "Meter"))
    $ X- a% B' e9 }4 s( V
  7970.         (if (= n 4) (setq userscale "Kilometer"))
    / k: O) {1 V) G+ u# S# B' Z7 Y/ ^/ Q
  7971.         (if (= n 5) (setq userscale "Inch")); P6 o5 T$ U- L/ B( {7 I
  7972.         (if (= n 6) (setq userscale "Foot"))( U7 M  f: r' H! B4 D
  7973.         (if (= n 7) (setq userscale "Yard"))
    # Q3 Q4 k+ m0 F4 o9 z* i) O
  7974.         (if (= n 8) (setq userscale "Mile"))
    ) e6 W) a, r& m% @4 _+ q
  7975.         (setq image:scale (/ upixel (cvunit 1 "Millimeter" userscale) (cadr (assoc 11 image:olist))))+ @/ s2 ^% m& o7 B8 V9 O9 m0 q
  7976.       ): G- B4 B! }) T0 R9 H2 y
  7977.     )
    $ t! @2 @' t$ E. F8 ^- Z
  7978.   )  x* z- ^+ D& K2 `- \& b, g9 c

  7979. : z* i7 O8 a* M! a- z0 B
  7980.   ;;7 {6 R5 u: D; q1 ]! S
  7981.   ;; Scale factors for block insertions
    + v0 L) X% N9 ]4 E7 H; i
  7982.   ;;
    - q- R8 c  w3 s: P
  7983.   (defun image_set_tile_scale (/ temp)
    ( \) @# Y1 H  `
  7984.     (setq temp (getvar "LUNITS"))
    4 p! f2 _: U2 E7 q' e( y3 u  J
  7985.     (setvar "LUNITS" 2)
    & x5 T5 T2 H) a5 X5 r
  7986.     (set_tile "xscale" (ai_rtos (* image:scale image:mult)))
    : c) E) U! ?# u: f( c; R( g  m( w
  7987.     (set_tile "wid" (ai_rtos (* image:width image:mult)))
    3 H3 P& N) \6 z8 ]1 t( q# l
  7988.     (set_tile "hght" (ai_rtos (* image:height image:mult)))# u. X3 i$ [1 C  O: J' e" Q
  7989.     (setvar "LUNITS" temp)/ U- k1 P0 V9 {9 A+ K8 _6 s# n
  7990.   )
    & g$ I$ b8 z0 f( {2 K9 N

  7991. . E! q0 u. f# H# a# Z4 e7 y
  7992.   ;;
    3 I' j3 u/ Z0 t/ h, g+ w1 f! [' A
  7993.   ;; Set the scale, width and height values appropriately.) A; v3 g0 w5 C2 |1 l* y
  7994.   ;;
    4 i+ K7 T, ]5 |# J4 y
  7995.   (defun image_update (field value / orig_value new_value mult)+ c$ a( m5 @( y& p5 K- Q
  7996.     (if (= field "xscale")
    0 h5 \% P% @6 }  k  k# T* @; ?
  7997.         (setq orig_value image:scale)
    ! G) J' v( s1 c
  7998.     )
    ; f; d: F7 K$ s. s
  7999.     (if (= field "wid")
    " @1 \) Y0 z' P# U2 F0 Z. p1 ~
  8000.         (setq orig_value image:width)
    5 D# I# s9 n+ ^/ b3 J& Q3 z
  8001.     )( z/ b$ r/ L0 p: I' Y1 y  {/ g
  8002.     (if (= field "hght")  c  m+ a5 I9 V3 @1 N; `0 r
  8003.         (setq orig_value image:height)
    1 o5 m" E' o! _
  8004.     )
    % j% ?: Q# Y4 f5 {% [# @
  8005.     (setq new_value (verify_d field value (* image:mult orig_value)))
    + E% H5 L$ D$ s. t! Z/ Z: b9 U$ G3 @
  8006.     (if (/= new_value old_value)( ~" D7 w4 F* l& T$ n
  8007.       ;; Make sure the user has entered a sufficiently large value' V9 I$ V5 ]; ~" ^2 O$ |
  8008.       (if new_value# E0 E1 u" d2 c" F2 U
  8009.         (progn
    + b) ?/ p4 V* `
  8010.           (if (< new_value 1e-8)
    2 Z# j9 j/ Y4 v0 F! i- d+ Q
  8011.             (setq mult image:mult)8 p1 N) Q8 @+ c2 M- e5 x  ?5 A' m: j
  8012.             (setq mult (/ new_value orig_value))
      w4 i* k5 c7 p, _1 @" w: Z
  8013.           )
    7 b8 U7 x8 H1 q( @. s3 s
  8014.           (setq image:mult mult)% D. a9 R1 b; ~! N# {* Q1 M6 u
  8015.           (image_set_tile_scale)
    5 q# P2 {; ]4 {$ z
  8016.         )7 r' E  Q: X! H
  8017.       )2 k( @+ C  Z: w9 h
  8018.     ), u! Y% ?/ X! `6 A  s- s
  8019.   )0 p. t+ k3 ~, P/ @. w
  8020. / J. t( {: \6 H3 m, C
  8021.   (defun image_disp_opt (bit)8 }; d2 m+ D2 y, h4 H8 }
  8022.     (setq image:options (Boole 6 image:options bit))
    % p" G% M5 l" U/ ~
  8023.   )
    0 Z3 B) b/ n+ g" M1 U4 i
  8024. ( u6 }' T2 Y' {( b/ f
  8025.   (defun image_modify ()! K; K3 f' M5 ]6 ~  P4 Y# y
  8026.     (modify_properties)
    4 ]* y; u1 _% g3 r5 |
  8027.     (setq pt1 (list x1 y1 z1))
    # v. m! @+ B0 R: O
  8028.     (tempmod pt1 10 0)
    ) h* r* a* W3 f' O- {8 _" P
  8029.     (entmod elist)
    * Y  P& p2 N; d: Z: H, j: Z
  8030.   )
    1 K9 q( @! W1 R$ k% I
  8031. $ k  v: h% M$ ?
  8032.   (defun image_clean_variables ()  B! l( K6 S4 o0 X
  8033.     ;; Clean up global variables used here/ `5 _: c7 r' w
  8034.     (setq image:scale nil)) t6 K& T5 ^/ r9 w" n
  8035.     (setq image:angle nil)9 q, t% e+ O( w  S5 O' O
  8036.     (setq image:width nil)6 N0 u( A1 [3 v2 T
  8037.     (setq image:height nil)
    6 v: t. W) @( _
  8038.     (setq image:options nil)  o" [6 D. X) W" n( I
  8039.     (setq image:oname nil)
    . I5 ?$ J+ k6 x  J
  8040.     (setq image:olist nil)
    4 `/ d- |0 }! D9 Y" f+ w" F
  8041.     (setq image:mult nil)
    9 [' @0 }, `& j5 ?
  8042.     (setq st_ang nil)3 R4 f# e# j! l) R
  8043.   )
    3 N+ P5 j4 j9 y- t- g& d: e

  8044. ) {# w. @/ y7 T1 j1 }+ z
  8045.   (defun image_scale_vector (v1 value)
    1 |( B0 K7 j! Y! i
  8046.     (list (* (car v1) value) (* (cadr v1) value) (* (last v1) value))) S' ]7 \- b/ F+ U  b! e
  8047.   )
    / }/ X) X1 ^0 }. a; c; Z

  8048. ; F/ d1 d2 j6 G
  8049.   (defun image_cross_product (v1 v2 / vx vy vz)
    ) n/ o9 F: r( j5 ]; g* t- L
  8050.     (setq vx (- (* (cadr v1) (last v2)) (* (cadr v2) (last v1))))0 @  M3 L+ t" h! V$ g0 O  G
  8051.     (setq vy (- (* (car v2) (last v1)) (* (car v1) (last v2))))
    ( U, Z3 ]5 y: Z8 t1 Z% P  T
  8052.     (setq vz (- (* (car v1) (cadr v2)) (* (car v2) (cadr v1))))% g4 k1 j# _% A
  8053.     (list vx vy vz)8 M: Z. o% }8 E. W* R
  8054.   )# v) l. |  H% u3 I3 t4 m
  8055. + |" \% h: W) E1 K& A" b& A+ D
  8056.   (defun image_dot_product (v1 v2)! p! }- U8 r' g2 D, D& A
  8057.     (+ (* (car v1) (car v2)) (* (cadr v1) (cadr v2)) (* (last v1) (last v2)))9 y5 Z# j: I' Y3 ]* H' i1 R
  8058.   )
    + m! Y2 ^: a9 H5 {, ^) a$ Y: u
  8059. 8 o8 |# [3 `  l, d
  8060.   (defun image_add_vector (v1 v2)
    2 ]6 X. N+ i& w
  8061.     (list (+ (car v1) (car v2)) (+ (cadr v1) (cadr v2)) (+ (last v1) (last v2)))+ L5 f% M! m0 F9 ]$ f0 x5 X, D, @6 {
  8062.   )
    - K9 s" v  O, F" |
  8063. 8 ^& j! N. c# u6 w
  8064.   (defun image_subtract_vector (v1 v2)8 ]) C4 t& |8 p6 `* C9 R
  8065.     (list (- (car v1) (car v2)) (- (cadr v1) (cadr v2)) (- (last v1) (last v2)))  g- {7 K8 H* R6 z
  8066.   )
    4 B* H+ [9 q/ _" k

  8067. # t# C) l* k( \8 v$ e" [9 I
  8068.   (defun image_normalize_vector (v1)
    0 f, t6 z. p) A; z( L
  8069.     (image_scale_vector v1 (/ 1. (sqrt (image_dot_product v1 v1))))' N5 N( A6 r+ m  B
  8070.   )/ O4 O0 N0 W/ G( c6 w% r
  8071. / K# r' r' I/ ^1 g' T
  8072.   (defun image_rotate_vector (vector angle axis / along_axis axis_x_in_rot_plane axis_y_in_rot_plane in_rot_plane)3 u4 ~! N: \0 S- n
  8073.     ;; Normalize the axis8 q* ^: m! P" u9 s: Q
  8074.     (setq axis (image_normalize_vector axis))
    + {' i4 L& [+ v2 Y2 x5 H( s7 V  W
  8075.     (setq along_axis (image_scale_vector axis (image_dot_product vector axis)))
    ; S% D3 _: Z& J; G: z
  8076.     (setq axis_x_in_rot_plane (image_subtract_vector vector along_axis))
    . O3 m, a. g3 Y0 y/ y1 J8 i, t
  8077.     (setq axis_y_in_rot_plane (image_cross_product axis axis_x_in_rot_plane))
      i+ T# e2 ^6 w5 J4 z
  8078.     (setq in_rot_plane( w' j. t1 ?6 D  ]
  8079.       (image_add_vector, w8 A% n0 v$ s
  8080.         (image_scale_vector axis_x_in_rot_plane (cos angle)); l' k, k8 F8 S# F5 _
  8081.         (image_scale_vector axis_y_in_rot_plane (sin angle))
    : i" w: p2 i& {/ ]
  8082.       )
    & r; @1 z6 [* C5 ?( d3 `
  8083.     )
    , R9 [  d+ c% n9 X& M; L
  8084.     (image_add_vector along_axis in_rot_plane)- g. o3 g7 R1 y6 q8 n3 ^: E
  8085.   )  D5 V  K6 s2 Z# f

  8086. : p6 _! V' s( V8 l
  8087.   ;;3 m4 K3 C  N/ y) N( J( ?9 a! T
  8088.   ;; Calculate current rotation angle if appropriate.
    3 A, r/ G- |0 ?2 k: [
  8089.   ;; If not, grey out the rotation field.
    * x2 ^4 W& J9 l) I/ C8 m
  8090.   ;;  X# Z5 v/ e' I. w" k* `
  8091.   (defun image_rotation (/ normal rlength zlength sqrt_tolerance)
    ; G6 B. l5 Z- f* o/ ^& [
  8092.     ;; Determine if image normal is codirectional with7 E' W, P8 W: D3 f4 v  s3 C; e/ N
  8093.     ;; the current UCS Z-vector.
    9 c  I) \- D! O8 e& N9 A9 S
  8094.     ;;
    : w# @" j: q9 J  B* h1 H
  8095.     (setq normal (trans (image_normalize_vector (image_cross_product (cdr (assoc 11 elist)) (cdr (assoc 12 elist)))) 0 1 1)), M! I% W% k# J% P% V8 U
  8096.     (setq rlength (+ (* (car normal) (car normal)) (* (cadr normal) (cadr normal))))# i5 q1 [3 K4 z3 ?% Q$ O( ]
  8097.     (setq zlength (* (last normal) (last normal)))# M; ^3 t7 c6 n
  8098.     ;; Note that the value .0001 in the radians is approximately 0.0057 degrees.
    6 L4 Q+ S" t; k! u; V, e$ c. B
  8099.     ;;
    2 T2 \% f5 Z+ i( r9 \3 Z
  8100.     ;;                cos(.0001)^2
    9 j" j9 G. H: J( H+ ]' [
  8101.     ;;   Tolerance = --------------1 n+ ~" x8 j7 i0 Y. g9 Y7 g
  8102.     ;;                sin(.0001)^2
    . V* J; t, |" G. p1 j2 T# L% Q4 m
  8103.     ;;
    6 y7 x) }+ a/ U% J% P4 F7 z
  8104.     (setq sqrt_tolerance (/ (cos 0.0001) (sin 0.0001)))/ \0 ~/ f& c/ S! c* U" Q; E. `8 Q
  8105.     (if (and (< (* rlength sqrt_tolerance sqrt_tolerance) zlength) (> (last normal) 0))# g4 l3 _. S4 t( w% S
  8106.       (setq image:angle (angle '(0 0 0) (trans (cdr (assoc 11 elist)) 0 1 1)))
    9 N4 X3 d, {+ b+ _
  8107.       (progn% I( _; m- `  }1 P
  8108.         (mode_tile "st_ang" 1)" f) D" `3 |9 U. s4 l
  8109.         (setq image:angle 0)! e: u7 C3 g$ h+ d, n5 K; _' n1 D
  8110.       ), R! B* `- N# _, V0 J+ B9 L
  8111.     )
    . Q# m5 W: H- q3 G+ y# n2 ~0 w
  8112.   ): ?8 H: D8 }. P+ k# K

  8113. 4 u1 W7 J$ ]' p8 b0 b( e
  8114.   ;;
    + b8 K1 R- c) a3 c% U
  8115.   ;; Modify Image
    7 _/ N$ S/ P/ Z7 ^& l0 C; k( S9 s! N
  8116.   ;;
    $ F# ?) B6 [) e, y/ J' s
  8117.   (defun modify_image (/ u_vector v_vector z_vector)
    0 T$ \, x# |9 f. v) t0 X
  8118.     (modify_properties)
    8 p( p& v6 t5 p: Z/ K# g/ ~
  8119.     (setq pt1 (list x1 y1 z1))
    ; @- `( \) ^2 ]# O
  8120.     (tempmod pt1 10 0)
    + V- @7 J( f3 V7 A( y9 P- [
  8121.     ;; Make display option changes to image
    . ?/ Q& `' N2 B" @% h
  8122.     (emod image:options 70)
    # |" F2 p' e- H. Z
  8123.     ;; Get the u and v vectors' D3 Z  h3 z& c( ~2 Z
  8124.     (setq u_vector (cdr (assoc 11 elist)))
    , d- |, t3 e6 W* Z
  8125.     (setq v_vector (cdr (assoc 12 elist)))* S" |+ k2 p+ D9 Q# o, o" |5 ?
  8126. 5 c- C& v9 `, `3 B% Y& m
  8127.     ;; Make scale changes to the vectors( _8 ]1 S: N  j
  8128.     (if (/= image:mult 1)
    & Y. a' N: |) @+ q
  8129.       (progn
    4 n, B1 Y" {, W
  8130.         (setq u_vector (image_scale_vector u_vector image:mult))9 x3 i- L# i8 X) h1 _3 }0 N+ Z
  8131.         (setq v_vector (image_scale_vector v_vector image:mult))
    ) I4 u/ ?* y; I9 ?* t" U& a1 @: ?! D
  8132.       )5 }5 _) y+ B0 i( h1 E; d& A* G
  8133.     )
    6 ?& B" x$ [7 l' b! h# I* p0 V
  8134.     ;; Rotate the vectors, T* `9 \+ Q: \" G. G
  8135.     (setq st_ang (- st_ang image:angle))
    + |, r' ^7 i) L4 K% d1 M0 S
  8136.     (if (/= st_ang 0)2 L0 y8 e3 a- c. A5 k  [; G9 D
  8137.       (progn* Q5 ]( j+ z& D4 z. `
  8138.         (setq z_vector# m5 j, ^' ~/ b2 e- B
  8139.           (image_cross_product
    / `- T/ c$ k$ i  m) ]2 V% D
  8140.             (image_normalize_vector u_vector)9 b  |9 A, z7 ^/ h
  8141.             (image_normalize_vector v_vector)
      @% B& B6 }& x4 p, q0 b" e
  8142.           )
    3 I1 j5 L/ ]1 q9 }, q
  8143.         )
    3 E9 W" s1 P7 I# j- L9 |
  8144.         (setq u_vector (image_rotate_vector u_vector st_ang z_vector))+ p) D8 L$ ~4 L. [' F8 q" ^
  8145.         (setq v_vector (image_rotate_vector v_vector st_ang z_vector))
    ) E/ m. ~- L; u% }4 v
  8146.       )
    & ?5 c/ [& I, {3 I, C# U& M
  8147.     )2 t6 D! B. u5 @! p- ~& {' s
  8148.     (emod u_vector 11)5 w* t1 N! B4 K  X) P2 H& y3 d
  8149.     (emod v_vector 12)( E" E+ T( R0 U8 l! F
  8150.     (entmod elist)" Q1 K( g8 `# a1 E6 v2 P- d
  8151.   )5 s3 z; d3 ?) z+ L7 e% }
  8152. # ]8 A' E0 |: `2 L5 ^# V
  8153.   ;;
    % _* M8 @, y& [/ w0 j: U
  8154.   ;; Run imageadjust on given entity, working around possible8 m; u* e$ S1 q
  8155.   ;; re-entrancy problems
    $ n4 p4 \) c# B; o! e. Z
  8156.   ;;! E% z0 _4 W' B
  8157.   (defun image_adjust (ename)
    . o9 s1 ]- \" u2 \# |, _
  8158.     (verify_arxapp_loaded "ism.arx") ;; make sure it's loaded...
    - e2 ~; t5 o& A" |: ^0 y* G
  8159.     (imageadjust ename)2 c- r0 g9 x3 Y% B+ z0 B0 k
  8160.   )9 h$ q3 F: _) t& j" w* Y
  8161. , J7 L6 A+ h' r" ~0 e$ D
  8162.   (defun ddimage ()5 I, E; V  D: ]. F4 w; o3 f: D0 Z
  8163.     (if (not (new_dialog "ddimage" dcl_id)) (exit))* U" C- s: K0 h( @
  8164. % x1 Z' q# y" ~& G
  8165.     ;; Grey out the thickness field.
    / `) B, l7 ]. c% b8 |; o. F' W
  8166.     (mode_tile "b_thickness" 1)* @! w1 m, p& X
  8167.     (mode_tile "eb_thickness" 1)% b( ^. a- {, \; v

  8168. 6 m' y/ g; x6 n% E
  8169.     ;; Get the associated def object., H+ ]% k1 x4 k# d
  8170.     (setq image:oname (cdr (assoc 340 elist)))( t% a1 F& O& ?6 O2 v1 ~$ _
  8171.     (setq image:olist (entget image:oname))" e( H6 R+ ]" e& ^
  8172. $ s3 `/ J# ~: u* C, y2 S0 g
  8173.     ;; Set initial tile values
    # }8 h- @1 Y3 e2 {* ]
  8174.     (set_tile_props)
    , w" y5 ~' y5 I
  8175.     (set_tile_handle)" b' g% E$ a1 n
  8176.     (set_tile_pt1 0)! j2 ]! [5 X7 z+ r, Y5 u+ j
  8177.     (setq image:scale (image_scale))( p7 y- ^" q8 j  a- r
  8178.     (setq st_ang (image_rotation))4 d  q3 J+ ~; V' X. `% D- [2 G
  8179.     (setq image:width (* (distance '(0 0 0) (cdr (assoc 11 elist))) (cadr (assoc 13 elist))))
    ( n0 _; |) \0 l1 A
  8180.     (setq image:height (* (distance '(0 0 0) (cdr (assoc 12 elist))) (caddr (assoc 13 elist))))5 h1 T" i$ K  L" f" R) ^
  8181.     (setq image:options (cdr (assoc 70 elist))): J/ X/ ]* }* }$ d
  8182. 2 a/ T, w1 Z1 P% H5 U
  8183.     ;; Record the last multiplier for use in image_update function, ^/ \0 x* j" X
  8184.     (setq image:mult 1)
    9 t( J# C, _' ~' _$ p8 t
  8185. 1 O& b+ O' U5 M. m* w
  8186.     ;; Retrieve the image name  w3 Y0 [  q8 {: |' i  @0 g  O( f( d
  8187.     (setq fn (reverse (dictsearch (namedobjdict) "ACAD_IMAGE_DICT")))& r2 |( k8 B$ g& u- H' R0 m- p( J2 g% l3 F
  8188.     (setq flag 0)
      }5 ~% F6 Q- |3 q7 D* {" L7 w
  8189.     (foreach n fn  f; s" o) s6 S* p$ s
  8190.       (if (= flag 1)
    ) [2 d5 [# U* b0 s1 \; _
  8191.         (progn0 `0 P, n2 Q7 V. ^) t& z
  8192.           ;; Display the image name& H' W2 T. N5 A9 o8 f8 f
  8193.           (set_tile "image_name" (cdr n))
    ! w0 P4 ]( A1 x8 c& j
  8194.           (setq flag 2)+ h, w8 V- c- q
  8195.         )
    $ r+ f4 G7 C1 x' `& v* U5 }- L
  8196.       )
    9 G6 m$ i. U) e5 w' ]" h
  8197.       (if (= flag 0)0 u/ y# J/ \0 }5 q9 {. H( q: `4 c
  8198.         (if (equal (cdr n) image:oname) (setq flag 1))# g0 j0 X0 A. W5 D
  8199.       )9 J% M* b8 o' _: r7 |0 w4 }
  8200.     )
    & p* _5 D5 N5 U+ @8 r
  8201. ; T2 V% e# [4 U- x) _' O5 c. s; u
  8202.     (set_tile "image_path" (cdr (assoc 1 image:olist)))% ]8 a, g% D6 N5 M
  8203.     (set_tile "st_ang" (ai_angtos image:angle))' K. b5 I  b4 s! p; J1 U
  8204.     (image_set_tile_scale)
    * Z* I1 ?8 K  c, o, c

  8205. * w( T( ^2 u0 h9 A. t
  8206.     ;; Check the appropriate boxes! T8 A8 H2 z. v, q
  8207.     (if (/= (Boole 1 image:options 1) 0) (set_tile "image_show" "1")), e& k7 I$ X5 K+ B7 q, F% o; s2 c
  8208.     (if (/= (Boole 1 image:options 2) 0) (set_tile "image_non_ortho" "1"))# G- r6 {! x# B# r" ^$ E  `
  8209.     (if (/= (Boole 1 image:options 4) 0) (set_tile "image_clipped" "1"))6 h/ N* u% O" f/ [8 b$ {: K
  8210.     (if (/= (Boole 1 image:options 8) 0) (set_tile "image_transparency" "1"))" L5 O* ~& F- Z

  8211. : h8 k; k  r1 i4 M
  8212.     ;; Define action for tiles
    9 J; F: _9 e6 h* x& v
  8213.     (set_action_tiles)
    6 B1 e: a$ r* J" D. z/ m( k
  8214.     (action_tile "xscale" "(image_update \"xscale\" $value)")3 A: c& v- b) o; n, A
  8215.     (action_tile "st_ang" "(ver_ang1 $value)")
    ; l! b6 L/ M# N' `
  8216.     (action_tile "wid" "(image_update \"wid\" $value)")
    6 [9 z# V8 P, A8 b; [0 w# r
  8217.     (action_tile "hght" "(image_update \"hght\" $value)")  _  k- g5 x+ ]7 l) C
  8218.     (action_tile "image_show" "(image_disp_opt 1)"); c' M; _7 E/ r. m
  8219.     (action_tile "image_non_ortho" "(image_disp_opt 2)")
    , }$ Z, Y4 p" ^, U! y3 U
  8220.     (action_tile "image_clipped" "(image_disp_opt 4)")
    # X7 X" K+ }) u1 c) q& G' ~
  8221.     (action_tile "image_transparency" "(image_disp_opt 8)")) B/ q: X( n/ ?# |. V- S  ]5 r
  8222.     (action_tile "image_adjust" "(done_dialog 4)")
    2 j% Q- C0 E. E' q, r' L+ W

  8223. ( l# J5 F5 |0 q
  8224.     (setq dialog-state (start_dialog))
    8 E4 s# l, f$ w
  8225.     (if (= dialog-state 0)2 N0 x% {5 l5 E1 g: F
  8226.       (progn# c& Y! G" Y4 i  b+ |9 P7 i& U
  8227.         (reset)- C: n8 c7 q% [( ~7 q
  8228.         (image_clean_variables)3 X2 b" y7 V- H! Q
  8229.       )' Q3 B0 M  M0 P6 r
  8230.     )4 ~" P3 Z) z" B5 C' z$ ?
  8231.     (if (= dialog-state 1)
    1 t+ X( a/ G2 g' \! b6 S! v5 r
  8232.       (progn2 M: _" @- \5 P1 E5 x3 W! K
  8233.         (modify_image). D* x. T8 r. O" ~
  8234.         (image_clean_variables)
    0 u, G0 y' [: Q; s! C
  8235.       )
    3 T4 v1 E! X* p- F8 `  u
  8236.     )+ [- J7 n/ f* C7 p
  8237.     (if (= dialog-state 3)
    & K2 f' L( J8 I
  8238.       (progn
      w+ W% V8 U) X
  8239.         (modify_image)
    * t, V: }/ \  o/ d9 B' \
  8240.         (image_clean_variables)# X) t9 p* ?( W8 ]* E7 U) c+ X
  8241.         (setq pt1 (getpoint (list x1 y1 z1) "\nNew Insertion Point: "))
    % I# e. t; i1 _$ S6 V, ^
  8242.         (ver_pt1 0): }' \8 n; U2 z, @: G' e* C+ P
  8243.         (ddimage)  q" h5 ]5 ^; m; @0 N' b
  8244.       )
    ! R  }5 p3 B% D5 V
  8245.     )/ D# e5 h9 Y7 Y
  8246.     (if (= dialog-state 4)
    6 {: n6 {1 W* c. n5 p
  8247.       (progn
    ) Q/ D/ r! \2 e, I6 p
  8248.         (modify_image)
    " H) s/ d& n6 {2 A% @2 U
  8249.         (image_adjust ename)" T" D* F9 N# D6 B4 W# a
  8250.         (setq elist (entget ename))5 B9 M- m5 F" N9 D; M
  8251.         (ddimage)( g0 }; Y* e( k, V6 t) m
  8252.       )
    8 B2 w) E, @) m3 z& ~. {$ a" k1 W
  8253.     )
    2 U4 k' l+ }9 s8 t9 c0 [
  8254.   )  |' }8 z8 s. Y' G

  8255. & ^6 S" [- ~% N% X
  8256.   ;;3 f5 S" m0 ]% @9 f" Y7 F. h0 i
  8257.   ;; Modify BLOCK (and its Attributes, if any)$ f4 f" N2 A3 S( T
  8258.   ;;
    ' G* k4 b; w9 n& O0 ?( [& w
  8259.   (defun modify_block ( / el en2 p1 p2 oldp1 oldp2 new_hgt old_hgt attr8 \! h6 d1 \8 c2 }
  8260.                           new_wid old_wid old_rot scaling old_scale& N, p$ K  A5 X7 T, F
  8261.                           xdelta ydelta zdelta xbase ybase zbase ipos)0 \* |2 ?( O, X6 N2 [
  8262.     (modify_properties)7 a- W3 l; d1 T2 ]- V

  8263. 6 T  i2 n# V7 s4 Q) }! q& R
  8264.     ;; First, translate and scale the Attributes, if there are any.
    % F) |6 b5 k2 Q1 E- E, V! M
  8265.     (setq old_rot   (cdr (assoc 50 elist)). g4 g  j2 ^, L! Y
  8266.           old_scale (list (cdr (assoc 41 elist))
    ; |* y. J& B; S
  8267.                           (cdr (assoc 42 elist))$ M: V& w' q1 j7 d# a& l; f
  8268.                           (cdr (assoc 43 elist))
    8 N# B9 L$ c7 h! Z
  8269.                     )0 f( D2 |  L, s: Y! W* p2 {6 b
  8270.           scaling   (or (/= xscale (car   old_scale))
    8 B9 r; {2 O0 T5 q1 Y8 H
  8271.                         (/= yscale (cadr  old_scale))
    8 a' W2 j6 F0 y% Y: T- j& o
  8272.                         (/= zscale (caddr old_scale))3 L3 G" F3 r$ l, ?
  8273.                     ); E$ d* |& J6 w8 v
  8274.           attr      nil               ; No Attributes modified yet
    9 e/ p+ H+ C0 t
  8275.     )
    % V: j2 m7 [/ t+ O5 L3 H, h
  8276.     (if scaling
    1 c3 `/ o, A' T1 W  {
  8277.       (progn7 \' y, m' S& I$ u
  8278.         (setq xdelta (/ xscale (car   old_scale))* V2 i- L1 `  s% H2 r
  8279.               ydelta (/ yscale (cadr  old_scale))
    7 l$ O- ?' a1 J+ P0 r: t4 ~
  8280.               zdelta (/ zscale (caddr old_scale))2 Y: s* u& f% x
  8281.               ipos   (cdr (assoc 10 elist))/ o% i+ n: h+ C: N. b
  8282.               xbase  (car   ipos)- z- d* I/ y' e' V3 B
  8283.               ybase  (cadr  ipos)
    # h+ i9 D: T6 M& @' q
  8284.               zbase  (caddr ipos)
    3 u0 E+ i/ @( e
  8285.               en2    (entnext ename)  ; First Attribute& b7 F5 m. t- O9 }
  8286.         )
    , f  ~" H& u* D1 ^. P! e
  8287. - c. v6 Z3 A; w
  8288.         ; If the Block is rotated, temporarily un-rotate it, along+ |% h: S. U0 c4 z& m/ x4 s9 {
  8289.         ; with all its Attributes, so the scaling/translation of the
    1 g! y! r  F8 S% e9 p
  8290.         ; Attributes won't have to take the Block rotation into account.
    5 J5 C  w7 p0 H, E0 x" }2 h
  8291.         (if (/= old_rot 0.0)
    ! l  i' p) m/ b) q# ~5 i/ L+ H/ [
  8292.           (progn
    3 W) _8 ]  L! e1 W0 l0 p% _
  8293.             (command "_rotate" ename "" pt1 (ai_angtos (- old_rot)))! p0 y# t. Z$ g
  8294.             (setq old_rot 0.0
    : u* W1 G1 {8 m" }
  8295.                   elist   (subst (cons 50 0.0) (assoc 50 elist) elist)) l* S2 [2 U# @: V& y
  8296.             ). E# q- m4 H( A/ S4 _( c
  8297.           )
    / x: F  T0 [: p# `( `
  8298.         )/ I/ \0 n/ R/ E5 i1 q
  8299. 0 W. M/ G; @. N2 ]
  8300.         (while en2
    1 K- D& V" q' ]  E# d
  8301.           (setq el (entget en2))7 [0 E( Z5 B' ]) N: m5 {. G% i# {( @
  8302.           (if (= (cdr (assoc 0 el)) "ATTRIB")
    2 w; K7 h: O  d7 Q9 [: q
  8303.             (progn
    & Y; j8 e/ I! z4 c9 g- q% o
  8304.               (setq old_hgt (cdr (assoc 40 el))  ; Height
    ) G. j! M  B+ K7 x- C; `& X
  8305.                     old_wid (cdr (assoc 41 el))  ; Width-factor
    ( z$ r; a7 F( s9 K* A
  8306.                     oldp1 (cdr (assoc 10 el))  ; Generation start point2 `- I! j: g3 T7 O! h$ A
  8307.                     oldp2 (cdr (assoc 11 el))  ; Optional alignment pt
    5 A4 {  f2 ~, K) F8 q! U! v
  8308.                     ha    (cdr (assoc 72 el))  ; Horizontal alignment
    6 L7 J. u7 }; t. {; ^& ~
  8309.                     va    (cdr (assoc 74 el))  ; Vertical alignment
    & k- J/ ?, Q( z3 q. {8 m) w
  8310. - {: W4 ?% w4 {1 q4 f% z8 o
  8311.                     ; Translate gen. start point
    + e! p1 C$ g2 a5 ^2 B
  8312.                     p1    (list (+ xbase (* xdelta (- (car   oldp1) xbase)))
    % m. Y" t4 w& M$ l3 d% P8 l; N1 a
  8313.                                 (+ ybase (* ydelta (- (cadr  oldp1) ybase)))- w$ E6 L, R4 |$ Z# l
  8314.                                 (+ zbase (* zdelta (- (caddr oldp1) zbase)))2 |7 I5 T: J  K9 H
  8315.                           )
    " I) ?6 z' g  L/ S
  8316.                     el    (subst (cons 10 p1) (assoc 10 el) el), Y& S5 _1 x5 Q/ p
  8317.               )7 J9 t2 k3 |9 ~  i8 B- ~& y% T8 {
  8318. + L- e; t6 [0 u$ G
  8319.               ; Translate alignment pt similarly, if present and applicable
    % Z/ ?* |9 m, i) l3 _6 k1 j
  8320.               (if (and oldp2 (or (/= ha 0)
    % p  g4 x" w% H7 i9 s) Q
  8321.                                  (/= va 0)
    " q( _. A+ N/ m* q6 i8 v
  8322.                              )+ ~3 W) y: p7 {
  8323.                   )
    ( a- s8 i+ N8 u% L; y
  8324.                 (setq p2 (list (+ xbase (* xdelta (- (car   oldp2) xbase)))& q" c3 ?9 i3 }: {! o
  8325.                                (+ ybase (* ydelta (- (cadr  oldp2) ybase)))6 J" i  u# h# q0 f. v  \
  8326.                                (+ zbase (* zdelta (- (caddr oldp2) zbase)))
    : f4 l; k/ A4 I6 z7 Z. Y$ F
  8327.                          )
    ; q8 I( b& w3 f  [, h, z6 P( y8 ~, b  k
  8328.                       el (subst (cons 11 p2) (assoc 11 el) el)
    ( g9 D  |8 W9 O) T, G, P+ C  Y- c
  8329.                 )
    : ?1 K  D5 f1 ~4 J5 o; C( |
  8330.               ), Q9 R- n; r1 z$ q! b* v

  8331. & e& h% R) b6 v0 i; T) I- d. h
  8332.               ; Each Attribute's height and width-factor were computed4 Z1 ]) g; ]5 x/ E" n
  8333.               ; based on the Block's scale factors.  Adjust them now,- d5 J3 i% _  v  y8 X
  8334.               ; by first reducing to values for 1x1 scale...+ A% W% I) P. g- O5 ^7 C7 z
  8335.               (setq new_hgt (/ old_hgt (cadr old_scale))$ B- u7 h4 y# _# w. _
  8336.                     new_wid (/ old_wid (/ (car old_scale) (cadr old_scale)))
    % f0 r* `' V6 Y* U
  8337.               )
    / @1 p9 K2 E; v" G! l& }& b1 |
  8338.               ; ...and then rescaling.
    ( d! K, X( Z! U  ?7 I
  8339.               (setq new_hgt (* new_hgt yscale); g) {# _# t; Q! ~
  8340.                     new_wid (* new_wid (/ xscale yscale))
    ; F3 Z; ?, p8 Z
  8341.               )
    ) \8 N/ [! c, g4 Y
  8342.               (if (/= new_hgt old_hgt)
    0 [2 a  u) \0 E7 c8 v
  8343.                 (setq el (subst (cons 40 new_hgt) (assoc 40 el) el))/ e2 [  o, j! T' @
  8344.               )
    5 Q* z  G* y# D/ H) o7 u
  8345.               (if (/= new_wid old_wid)% d- |  H! `! H. ~) [" }( f+ ]
  8346.                 (setq el (subst (cons 41 new_wid) (assoc 41 el) el)), _4 {8 O  |2 \1 s  K. i7 t
  8347.               )
    5 V8 j5 p1 G1 I' h. _
  8348.               (entmod el)
    $ D2 S* t* ~3 {, g. }5 B7 b4 ]
  8349.               (setq attr T             ; At least one Attribute modified
    $ l$ N6 m$ n2 O  w9 f- e
  8350.                     en2  (entnext en2) ; Next Attribute1 D# ^  V5 z" b. }) y" |
  8351.               )& K1 ^' J. E3 y7 Q, K
  8352.             )
    & R, z9 ^' H9 @+ H* [. i: f
  8353.             (setq en2 nil)          ; No more attributes
    8 m6 O4 ]  f  J( k5 H5 m8 b3 }
  8354.           )
    0 U/ W/ n: i0 a# N' e
  8355.         )4 e1 g( P3 `! n3 O) T; x
  8356.       ), R/ s$ G& T5 l) I$ ~5 F
  8357.     )
    ( j3 C0 u7 [, H
  8358. - x8 l( w* g4 y) V
  8359.     (setq pt1 (list x1 y1 z1))- b* k5 k7 {* }3 o2 E
  8360.     (tempmod xscale 41 nil)
    / ]7 x2 L' i  X
  8361.     (tempmod yscale 42 nil)/ b  G+ L8 G& Y8 M$ y  o
  8362.     (tempmod zscale 43 nil)8 a* \4 a6 u/ Z6 c$ u% q
  8363.     (tempmod col-sp 44 nil)9 v" N  Z5 v7 L% G
  8364.     (tempmod row-sp 45 nil); x! M  X, Q2 E, C0 ?
  8365.     (tempmod columns 70 nil)
    ' E- G+ y* n6 D
  8366.     (tempmod rows 71 nil)
    3 w4 X* D  c7 j8 S) n; k) k
  8367.     (if (= xclipmode nil)
      K# _7 y9 J" n" X. [
  8368.        (entmod elist)
    : C& {1 Z7 ?( J  b* a) a
  8369.        (setq xclipmode nil)7 @; s  `8 k/ K. E+ V
  8370.     )* r* Y6 \. F% \4 E9 r
  8371.     (move_pt1 1)- r" m2 B9 N4 t& o
  8372. & D/ V% T' ^8 `$ t8 g
  8373.     ;; Now do the rotation with the ROTATE command.% x9 N/ n4 y9 u4 S* E% c$ T# v
  8374.     (if (/= old_rot rot)
    # o' ], A7 w( a% {1 v: e) F0 g0 S
  8375.       (command "_rotate" ename "" pt1 (ai_angtos (- rot old_rot)))1 F1 Z" e& f, b4 Z  |6 h3 Z8 g* Y
  8376.       (if attr                          ; Else, if attributes were modified,, O7 @( u2 F6 g+ a
  8377.         (entupd ename)                  ;   just regen to force attrib display
    $ }3 {9 n" s9 d- T1 @- o) u
  8378.       )& p: g9 A* f5 f/ P! r: s( _; @
  8379.     )
    5 _2 k8 X: ^" s) U% _
  8380.     (setq elist (entget ename))- [# d* U) L# F! E; F  E
  8381.   )
    4 U  |+ z. H" L3 U
  8382.   (defun ddblock (/ temp temp_xclip newhatch blkname blklist blktype program xrefpath)  K1 c0 \6 W/ g8 z5 d
  8383.     (setq newhatch 0)
    . b. g- R& S. o7 E+ K/ Z3 F$ M
  8384.     (setq blkname (cdr (assoc 2 elist)))! o( Q  [' y, E' X* ^5 v& ^8 T
  8385.     (setq blklist (tblsearch "block" blkname))
    ( h- a- A  s8 ?( i( N
  8386.     (setq blktype (cdr (assoc 70 blklist)))
    $ U7 o' d& Y$ f4 ~: B+ c/ `
  8387.     (setq xcliponoff 0)0 ^! r; e4 v6 F' X1 n
  8388.     (if (or (= blktype 0)(= blktype 36))& C. W# i6 }2 N# |# ]: |- m
  8389.             (progn
    # Y0 b, X$ j, _$ @/ L
  8390.               (setq xcliponoff (xclipon elist))
    + b' A% n; b3 K$ T9 ~: u
  8391.           (setq temp_xclip xcliponoff)
    - ~- J7 }( c. v; K
  8392.         )& \! x+ ~2 i- I* M
  8393.     )
    1 t% H0 e3 K0 d; l- L3 v: \
  8394.     (if (= (logand blktype 4) 4)
    6 Q. c/ |7 O* [0 A$ m
  8395.       (progn: {3 V6 O1 u8 R$ e/ b3 _
  8396.         (setq xrefpath (cdr (assoc 1 blklist)))' G) f# Z) v1 {3 F$ m' M
  8397.         (setq help_entry "modify_External_Reference_dialog"). e# _  q, k% U7 F
  8398.         (if (not (new_dialog "ddxref" dcl_id)) (exit))
    + l, T  Q/ c7 B4 p# d% W
  8399.         (set_tile "Bl_name" blkname)
    0 q+ D) y  G4 g2 J+ c0 j6 s
  8400.         (set_tile "path" xrefpath)5 U$ G( P4 W# z; `# p) a0 T
  8401.       ), F- z' q4 `' d" i: l
  8402.       (progn
    ) q/ D/ s, r3 l
  8403.         ;; Get program name for use as Xdata app name
    3 J9 g6 F% E- \. |/ j* C& \5 ?
  8404.         (if (not (setq program (getvar "program")))
    5 P7 V& h' S3 Z8 f9 L' H9 W# F
  8405.            (setq program "acad")
    " r; I/ b" r% e# N* r
  8406.         )1 x: \" g" r8 N+ I$ a
  8407.         (if (and (setq temp (assoc -3 (entget ename (list program))))
    $ F. n8 u: A- J6 p
  8408.                  (= (cdr (assoc 1000 (cdadr temp))) "HATCH")
    & G) ^- T+ l% u* v. ~& W- f; s
  8409.                  (assoc 1005 (cdadr temp))
    0 X) d) ~6 ~- W! S
  8410.             )
    8 ~! T1 n: b) S
  8411.           (progn% n# p6 J1 l& `& H+ ?7 F, L; C
  8412.               (setq newhatch 1)
    # ?( {( {* y4 _( V+ a+ p0 ?
  8413.               (setq help_entry  "modify_Hatch_dialog")
    " d" ^( Y- Y2 g$ m5 N+ L, L; A. H
  8414.               ;;; convert the object into a new hatch# O4 P: u- _4 U
  8415.               (ai_undo_on) ;; enable undo
    " w: [$ H, |5 E+ X  Z% w/ d
  8416.               (COMMAND "_.UNDO" "_Mark")
    8 n& v  A" w. \8 H# O5 @4 x
  8417.               (COMMAND "_.CONVERT" "_Hatch" "_Select" (cdr (assoc -1 elist)) ""); [- i3 h3 _( t* T6 C2 \
  8418.               ;;; suppress nasty message from convert command' e% `* B) @* z( o2 _: v
  8419.               (princ "\r                                                                      \r")
    ; r, B$ W9 a" j, c8 U, _- c
  8420.               (setq elist (entget (setq ename (cdr (assoc -1 elist)))))0 v3 P5 J) }3 z) Q+ J# Y) }
  8421.               (setq old-elist elist)! Z  q9 i+ n! c1 e7 {4 i
  8422.               ;;; If we have cancelled ddmodify
    $ h* M7 {1 p  e. f) [
  8423.               (if (not (ddnewhatch))      ;;; (ddnewhatch) returns nil for Cancel or T for Ok  D8 O, R5 V/ [5 Y/ y, N" O
  8424.                    (command "_.UNDO" "_Back")
      S! D# P0 ^2 y) ]
  8425.               )+ \* c8 K( h7 h
  8426.               (ai_undo_off) ;; restore undo state& Y. e% g/ b: P2 j1 W& n
  8427.           )6 K- e, e& m% b: M5 d# b4 w1 Y: W7 L
  8428.           (progn
    * {/ U' }6 o) p+ p
  8429.             (if (not (new_dialog "ddblock" dcl_id)) (exit))* I4 a! \$ ]- p% S; a
  8430.             (if ( = "*" (substr blkname 1 1))9 l2 a7 K; j2 e5 S$ U! a
  8431.               (set_tile "Bl_name" (strcat blkname " - Anonymous block"))! U7 q2 p% C& i7 t- v" z( D
  8432.               (set_tile "Bl_name" blkname)  j: o: X# v, N, R4 `
  8433.             )# \' ?( l! f- B* v4 J% b7 T
  8434.             (setq help_entry  "modify_Block_Insertion_dialog"). u1 q9 S5 J8 w# L9 N7 T7 v
  8435.           )) \$ K- e6 |2 m  I$ W( o, {3 t
  8436.         )4 f9 `" D& [/ Y, l
  8437.       ); J9 d; R( a- N8 \! {4 k+ G, v
  8438.     )
    4 F  A9 e; ], y+ K! m! x$ ~, e: C- Z
  8439.     (if (= newhatch 0)
    6 ?9 `; I3 \/ s4 a  L: k7 P$ t% N' `
  8440.       (progn; H) R8 C; ^8 H0 Q) D7 U, N
  8441.         (set_tile_props)! r& u. V5 F% r) a
  8442.         (set_tile_handle)7 Y% \& ]: M3 w5 w
  8443.         (set_tile_pt1 1). Q2 E& K# g8 N% d* K9 C! h
  8444.         (set_tile_rot)
    . Q* P0 @3 y% j! x
  8445.         (set_tile_scale)9 X! E8 Z' Y& S* Y9 {- z2 C2 O
  8446.         (set_tile_rc)* Q: S5 l4 ~$ `# T+ U2 B# ^
  8447.         (if (= (logand blktype 1) 1)' ~5 f6 N  k& P7 F
  8448.           (progn
    $ b% P2 c2 d& `0 l7 F
  8449.             (mode_tile "xscale" 1)
    / G8 b4 V# H# {" u1 j2 \
  8450.             (mode_tile "yscale" 1)9 c. V& M/ r, w
  8451.             (mode_tile "zscale" 1)
    1 x/ ^9 D/ K% u+ @$ x  v
  8452.             (mode_tile "rot" 1)9 e9 {' M6 w8 {/ r, q, D  o
  8453.             (mode_tile "columns" 1)
    - [: k' U4 \0 `4 W0 l( G( Z: S
  8454.             (mode_tile "rows" 1)( A7 \% u! z, i; J2 k
  8455.             (mode_tile "col_sp" 1): D. C3 w* U( v- v( t
  8456.             (mode_tile "row_sp" 1)
    * m, J6 ~/ V' L! d- a1 G! s" b
  8457.           )
    ( U: ~+ H9 G2 b3 S
  8458.         )1 u' |0 N: f# \4 L
  8459.         ;; Define action for tiles$ f4 M+ x( y! g5 N$ [* ^  v% @
  8460.         (set_action_tiles)
    ; B- ~. i- p' b3 B8 I
  8461.         (setq dialog-state (start_dialog))) ^3 V4 i2 }/ V; P5 O2 J! k
  8462.         (cond# }6 q  @4 ?; m/ j4 |
  8463.            (  (eq dialog-state 0)
    ( N& F) i9 x6 a
  8464.               (setq pt1 (trans (cdr (assoc 10 old-elist)) ename 1))
    ' f, u: P$ `$ P( a$ O+ r* T/ l
  8465.               (move_pt1 1)4 y/ n$ I* i' e/ K4 l" H. s
  8466.               (reset))
    $ ^. N; C- D" ^) j" ^! e
  8467.            (  (eq dialog-state 1); G  Z" e# j' H% h& n0 e
  8468.               (if (and (/= temp_xclip xcliponoff) (or (= blktype 0)(= blktype 36)))5 }% k* _7 E5 R' B& a4 W9 P
  8469.                 (xclip)
    ; i: h  B* c, |" c' F$ a3 L( g% U
  8470.               )
    : G, u. _! \" f7 d
  8471.               (modify_block))
    ; z+ b: G1 c/ F& x& \; C
  8472.            (  (eq dialog-state 3)' e! J! s0 b9 u- z% k, |
  8473.               (modify_block)) p( t% i+ Q2 X7 x; v$ B, K
  8474.               (setq pt1 (getpoint (list x1 y1 z1)  "\nInsertion point: "))/ E2 q- ]- P7 ~& F0 t) J1 N
  8475.               (move_pt1 1)
    + |" Z& x+ Z( B8 m5 n
  8476.               (ddblock))
    4 A; p* r- F7 E* }/ @
  8477.            (  (eq dialog-state 4)
    4 c! H, }7 U; Z% h
  8478.               (modify_block)
    ' l, ~4 E4 F3 |6 C
  8479.               ;; Get current handle.
    + t4 M: B/ |9 B9 g8 i7 C1 j$ G3 G8 V
  8480.               (setq hand (cdr (assoc 5 elist)))* H7 b) Z9 Q  j1 c  p" X( j. [& M6 y
  8481.               (command "_hatchedit" ename)4 q& B7 n/ U7 a" x  q, \( ?
  8482.               ;; If OK in hatchedit, a *new* entity is created and the old one- P: A1 n; C9 s6 ~1 ]* B
  8483.               ;; is deleted.  So if the old one exists, it must have been a  Z* T6 \; a  k+ z9 y
  8484.               ;; so rest the entity.% @4 L: Q8 e  e& c
  8485.               (if (entget (handent hand)) (reset))/ w$ x; r& d7 O2 ^0 t; B7 h3 h
  8486.            )
      j0 D% \; ]$ a& {1 F( n
  8487.         )
    : B7 x* N+ B7 E+ K$ E! E
  8488.       )
    + `4 Y, G# G3 k2 b- y8 x
  8489.     )
    ) Y. u0 @" e6 O, f$ g
  8490.   )6 a# n. x! Y0 I
  8491.   ;;" ?( j% |8 R! h+ g0 s
  8492.   ;; Modify SHAPE4 @( l0 w6 v% s. h3 l! Z
  8493.   ;;9 {+ Z3 W2 a4 {  z( Q! W& q
  8494.   (defun modify_shape ()) A: A) n1 u7 W8 G5 u: a
  8495.     (modify_properties)( L& {# C! M# N- L6 A% ?
  8496.     (setq pt1 (list x1 y1 z1)), U) m+ H3 ^" a/ }* k
  8497.     (tempmod pt1 10 1)5 }: G+ h: V" h
  8498.     (tempmod hght 40 nil)+ u% q6 Y# D' X2 p+ k5 M
  8499.     (tempmod wid 41 nil)
    * f5 G! G1 z/ m* }
  8500.     (tempmod rot 50 nil)5 B6 D& @; K- Q' Y, c; ]
  8501.     (tempmod obl 51 nil)1 j7 Q' H  ^8 \6 @7 S7 q$ t
  8502.     (entmod elist)% }, C. @( e2 M9 s5 r4 u- G
  8503.   )
    : g) P5 {8 v2 Q  B$ o8 _

  8504. ; q# W8 K1 y- n. h; h
  8505.   (defun ddshape (). w! X9 L3 [" }( z+ t
  8506.     (if (not (new_dialog "ddshape" dcl_id)) (exit))
    ) j- \" `0 M, m7 o
  8507.     (set_tile_props)
    * p9 ?) J+ D6 \& f$ I* L
  8508.     (set_tile_handle)
    ! r: ?) |- a: Q
  8509.     (set_tile_pt1 1)
      f0 ?  o' c0 X: j* X
  8510.     (set_tile_rot)% i8 R) Z& ]4 |% ?% }
  8511.     (set_tile_hght)
    , Y$ q( d8 y6 ]3 k" k
  8512.     (set_tile_wid)
    . q  W% L/ M1 {! w3 Z7 ^0 b
  8513.     (set_tile_obl)+ B% R$ u# k' ?* E
  8514.     (set_tile "sh_name" (cdr (assoc 2 elist)))( U5 ^* w2 L7 u
  8515.     ;; Define action for tiles
    2 X& A/ \( O$ V, S
  8516.     (set_action_tiles)
    9 q& i. @2 t5 `) ]  @) v
  8517.     (setq dialog-state (start_dialog))" B, y. o! e! L
  8518.     (if (= dialog-state 0)
    ! Y# u4 f- I1 R# Q+ Y
  8519.       (reset)8 i! P/ @* B1 w6 e2 v2 Q' j2 {+ t
  8520.     )
    + ?& C( ?! R5 {+ A7 O
  8521.     (if (= dialog-state 1)
    9 l/ G, H, d, h# @# {3 q! i. f
  8522.       (modify_shape)$ z* i) m5 u# y( @
  8523.     )
    # H* H4 o1 P6 I" v2 O* W6 F+ W% f
  8524.     (if (= dialog-state 3)0 |$ f( ~' R3 V- B0 ~
  8525.       (progn2 U9 D- M; h8 }  b; ~; b! s
  8526.         (modify_shape)
    8 n) p( d  O0 J1 S
  8527.         (setq pt1 (getpoint (list x1 y1 z1)  "\nInsertion point: "))
    4 D4 z& }% Q( n9 W9 u% m- t1 Q6 A
  8528.         (ver_pt1 1), t5 r0 p2 C6 X, P, o1 I
  8529.         (ddshape)3 [- d, O& q# [9 @" P
  8530.       )) ~( P$ Q1 a0 Z1 N  s
  8531.     )3 r9 V" X0 g! z5 Y' D5 Z- M: d
  8532.   )2 ^7 O3 S9 t' z
  8533.   ;;  `" w* r% e3 h2 \5 I/ V! S
  8534.   ;; Modify TEXT or ATTDEF
    / l7 h; l/ b$ v: O( E$ w1 q1 L4 B2 Y
  8535.   ;;
    & a& [% l- m( B( B& F: R; C9 @
  8536.   ;; Set bit code for upside-down and backwards setting
    2 A( [& f0 Y- m0 w8 L& Z
  8537.   ;;
    1 O. e; @7 \8 n! j& G$ s  V
  8538.   (defun code_71 ()
    3 @  C* Q' G1 w/ P9 z9 J5 y
  8539.     (cond ((and (= bkwd "0") (= upsd "0")) 0)8 U. h( k! c* _  f
  8540.           ((and (= bkwd "1") (= upsd "0")) 2)6 i' k3 {  P. m9 }' d
  8541.           ((and (= bkwd "0") (= upsd "1")) 4)
      v. H' q( W. m9 T" y' ]
  8542.           ((and (= bkwd "1") (= upsd "1")) 6)
    : ?/ p# l9 B: e" z4 w. Z; p7 C
  8543.     ). j4 Z/ H- h3 q6 [  w5 r6 u& p* t4 M
  8544.   ): M6 @  d8 K8 X
  8545.   ;;
    9 _! U8 f# T% Y. x5 N- @. W
  8546.   ;; Style action.  Reset widget values to style defaults
    ( b; t9 N' R# U$ E
  8547.   ;;
    . Z) G& M+ ^* Z
  8548.   (defun style_act (index / style-list)
    2 X1 V) K, b' I: s! S
  8549.     (setq style-idx (atoi index))
    5 p" [" j1 ~. {& n' O. y
  8550.     (setq tstyle (nth style-idx slist))
    % ]3 M3 D( R, |  z5 I
  8551.     (setq style-idx (itoa style-idx)), R4 s: `. S% W  d1 m
  8552.     (set_tile "style" style-idx)3 B4 {6 t! i2 C
  8553.     (setq style-list (tblsearch "style" tstyle))
    9 d# v- Z- X! b- }
  8554.     (setq shght (cdr (assoc 40 style-list)))) P2 `9 [6 e3 X, L9 f7 ]* \
  8555.     (if (/= shght 0)
    + n) V) q4 q1 |# p5 U# v' a2 x
  8556.       (progn
    - i( S, d: b2 {, o
  8557.         (setq hght shght)
    " K9 I: r3 Z( k8 S) b, z' p9 b8 W
  8558.         (set_tile "hght" (ai_rtos hght))- i) V* j4 V  A
  8559.       )
    0 m+ s! j& D) a$ D
  8560.     ); ^% x' @7 c6 ~% \1 o* x; K
  8561.     (setq wid (cdr (assoc 41 style-list)))
    6 O8 H( [' r; N' ~# a  \6 T
  8562.     (set_tile "wid" (ai_rtos wid))
    : ~! i: H, E; Q7 I' S0 p; Z1 e
  8563.     (setq obl (cdr (assoc 50 style-list)))
      S4 T0 d1 D2 m3 w( P6 B5 i( y
  8564.     (set_tile "obl" (ai_angtos obl))* Z0 a" I5 w( N7 H8 ~& Z9 c
  8565.     (setq bk-up (cdr (assoc 71 style-list)))4 G+ a" A3 A. _1 f
  8566.     (if (= (logand bk-up 2) 2); f1 y. h: l% \  a# ?9 {$ Q, T
  8567.       (set_tile "bkwd" (itoa (setq bkwd 1)))
    ; f4 j; j! Y4 v6 T0 g3 e8 b
  8568.       (set_tile "bkwd" (itoa (setq bkwd 0)))
    + N$ ^' x; U' y) H$ ~9 s/ M+ ?
  8569.     )  i. L# w4 M. ^# N6 H' N- Q
  8570.     (if (= (logand bk-up 4) 4)" M3 a  ^" N" U& B; V  M
  8571.       (set_tile "upsd" (itoa (setq upsd 1)))
    4 w$ S* q  @% E0 Z; t6 d7 Q; l
  8572.       (set_tile "upsd" (itoa (setq upsd 0)))
    5 ?: x5 G& u9 S1 r
  8573.     )
    * @  M- A8 O4 R+ q% }( w
  8574.   )0 @5 n! j; k. _! q1 @: t
  8575.   ;;' G. ]  E6 e* t' B8 X' G0 @# s
  8576.   ;; Justification action.  Set vertical and horizontal alignment variables,- t' S" e" H& f5 {; D! l
  8577.   ;; grey out rotation and height if alignment = "aligned", grey out rotation: {, k1 w+ }/ [
  8578.   ;; if alignment = "fit".2 [5 L8 x  J/ d: ~3 v- c; E2 x
  8579.   ;;
    - Z& t' s/ V( W7 |: |5 [/ e8 q/ _
  8580.   (defun jlist_act (index / templist)( f- N3 w1 j7 ~3 C# `
  8581.     (setq just-idx (atoi index))
    + [3 C. _8 a- h; Z
  8582.     (cond
    * O5 a! k( |; X9 f
  8583.       ((= just-idx 0) (setq va 0 ha 0))
    ' f5 X: y  t7 p, f4 m; _: b
  8584.       ((= just-idx 1) (setq va 0 ha 1))
    4 S2 W# M( |. D: C' ~
  8585.       ((= just-idx 2) (setq va 0 ha 2))+ n! @$ H; g* s, x9 Q1 V+ `
  8586.       ((= just-idx 3) (setq va 0 ha 3))
    / E3 E* ^0 z8 |+ P; b$ n5 G
  8587.       ((= just-idx 4) (setq va 0 ha 4)); t9 c( s% Z% q4 `& B8 T
  8588.       ((= just-idx 5) (setq va 0 ha 5))
    " K% }$ ]- A+ o/ X0 }) t& @
  8589.       ((= just-idx 6) (setq va 3 ha 0)): g8 G( |' L# Q" G. v
  8590.       ((= just-idx 7) (setq va 3 ha 1))
    * p3 {; B0 ?" |0 P" _- e
  8591.       ((= just-idx 8) (setq va 3 ha 2))
    0 h1 \$ k) Q  ~$ d
  8592.       ((= just-idx 9) (setq va 2 ha 0))- h8 M  V0 }4 u) P) x) G, C/ b
  8593.       ((= just-idx 10) (setq va 2 ha 1))$ L5 J  O2 t( I. N$ r# W3 }1 l
  8594.       ((= just-idx 11) (setq va 2 ha 2))
    % u; d7 c& P% Q1 u
  8595.       ((= just-idx 12) (setq va 1 ha 0))* l0 j1 C* {6 a4 d& Q8 R( M  I+ Z
  8596.       ((= just-idx 13) (setq va 1 ha 1))! C. Y$ {4 G2 d! w1 T7 M1 p$ i7 m
  8597.       ((= just-idx 14) (setq va 1 ha 2)). X' Y# V% @6 M" j( C9 f7 T1 O
  8598.     )
    1 V. _* n2 e' O- [/ `" G* I
  8599.     (if (or (= ha 3) (= ha 5))  ; If Aligned or Fit text  N5 q- }" v. @1 t
  8600.       (mode_tile "rot" 1)/ N7 s) l1 s# v8 Z3 d
  8601.       (mode_tile "rot" 0)
    , B) G+ U, ?. `  {/ C
  8602.     )
    ; K; b9 ]7 f+ z' n, G* {% f" P2 t
  8603.     (if (= ha 3)                ; If Aligned text
    : p0 V* Y# E5 N/ i$ \0 m( p8 b5 H1 j
  8604.       (mode_tile "hght" 1)- y+ B/ x' `4 Q( U6 z! a7 G4 w, o- e
  8605.       (mode_tile "hght" 0)' u# }- n9 a, z; R/ h$ U) q
  8606.     )
    ; {( v: ?# ^- _, |& I
  8607.     (if (= ha 5)                ; If Fit text
    - ?' M$ B9 F7 C4 J% O" a
  8608.       (mode_tile "wid" 1)9 G: g* G/ G0 {
  8609.       (mode_tile "wid" 0)
    % D& v& i+ ~; }' L0 y
  8610.     ), \. c  ~" C. c8 Z" q; V! \0 s: X2 Z
  8611.     ;; Reset rotation and height if changing from aligned.0 `! l8 H3 n3 q6 m, e
  8612.     (if (and (= ha-prev 3)  (/= ha 3))
    ) @* J* Y; {; c3 Y3 Y9 t
  8613.       (progn' t- G  ?1 Q: {! T1 c! g
  8614.         (set_tile "rot"  (ai_angtos (setq rot 0.0)))) n5 m. s0 O, R* c% H
  8615.         (set_tile "hght" (ai_rtos (setq hght 1.0)))5 _$ {1 v5 {1 d9 a- `
  8616.       )
    % v. I$ H* [9 }5 H
  8617.     )6 \$ {0 S$ k7 ?4 o: ^7 z& \$ G7 H
  8618. 7 i4 B) b% @; p: o( V
  8619.     ;; Reset rotation and width if changing from fit.! ^( S( w+ S9 N, C% |
  8620.     (if (and (= ha-prev 5) (/= ha 5))
    / r3 I2 G( B- H! p+ ~' b% K2 @0 M( R% z
  8621.       (progn
    " S2 {- Q5 u+ i6 `# ~
  8622.         (set_tile "rot" (ai_angtos (setq rot 0.0)))
    : g4 t9 X6 |) ]  b: A1 j
  8623.         (set_tile "wid" (ai_rtos (setq wid 1.0)))6 S" y& |3 T) {( W
  8624.       )
    2 V3 G9 @4 K* ^3 A" x  t
  8625.     )
    * C# s3 Z- ?# {1 d, t
  8626. 7 m9 a3 S: K  {2 o# s
  8627.     (setq ha-prev ha)           ; update ha-prev for next time
    ; ?- P* z. H3 U6 q/ h# Y
  8628.     (setq just-idx (itoa just-idx))
    6 f! q8 s7 T& S
  8629.   )+ Z- P: C, u! |+ @* u4 m1 h
  8630.   ;;4 b! k! m2 ]1 ?/ ?/ z4 G
  8631.   ;; Set intitial alignment setting based on vertical and horizontal alignment$ N. _  ^: }) j0 O/ f/ P
  8632.   ;; bit codes.
    5 m( _5 X2 Z  J
  8633.   ;;" c  j  r. |1 R# g5 ?9 T
  8634.   (defun set_just_idx ()  i( G% V' b* o6 @' m
  8635.     (cond0 i! M- O  R. o3 ?+ B1 _
  8636.       ((= ha 0)             ; Horiz alignment = Left
    * o$ l0 X7 q5 I, N8 O
  8637.         (cond
    & w+ q3 ^& h3 V+ U( @
  8638.           ((= va 0) (setq just-idx "0"))/ G7 z  \; H+ w: {
  8639.           ((= va 1) (setq just-idx "12")), r$ j7 ]- ?; q; w8 W0 c/ p+ {
  8640.           ((= va 2) (setq just-idx "9"))9 P* `, W7 ?: F- Q6 s  Z
  8641.           ((= va 3) (setq just-idx "6"))
    6 v, D1 ?8 n& n
  8642.         )
    1 w, H1 X  N5 u) t3 _  `' u( H" f
  8643.       )6 K- O3 |7 j( B) M) l3 @2 c
  8644.       ((= ha 1)             ; Horiz alignment = Center" x2 M8 I" O' {# L! }
  8645.         (cond" N/ r* ]- v3 G" `/ a- @
  8646.           ((= va 0) (setq just-idx "1"))- e: `! a9 K& Z2 j# E; e; p! d# T
  8647.           ((= va 1) (setq just-idx "13"))
    & x% Y9 B$ M$ R  B# _
  8648.           ((= va 2) (setq just-idx "10"))
    # f1 ^' {& e7 c) l/ M9 |1 Q
  8649.           ((= va 3) (setq just-idx "7"))
    % g; v" p! x* U; p
  8650.         )) ~3 x+ d* |7 `. V
  8651.       )
    - m. m/ ~& Z. j8 n' u3 o
  8652.       ((= ha 2)             ; Horiz alignment = Right# ~7 r5 a8 |/ Q0 K+ `
  8653.         (cond
    ' M$ k7 S; {% `0 e3 P" i, a. n) q
  8654.           ((= va 0) (setq just-idx "2"))
    7 K) I4 D! m4 ]9 i) ~' q2 h
  8655.           ((= va 1) (setq just-idx "14"))
    , L- D+ T3 P$ k9 a) b
  8656.           ((= va 2) (setq just-idx "11"))
      h# |2 T3 W5 R$ N& g1 C
  8657.           ((= va 3) (setq just-idx "8"))
      T, x" n  K+ t" I9 j
  8658.         )9 s4 i" i- C" j3 X! S) ^: s5 P% U
  8659.       )+ f7 y0 y9 {& X& e( j' h
  8660.       ((= ha 3) (setq just-idx "3"))   ; Aligned
    ( N: Q9 |* o% V, `0 y2 f; P
  8661.       ((= ha 4) (setq just-idx "4"))   ; Middle6 e$ h! M& Z, @( b% Z) Q3 S
  8662.       ((= ha 5) (setq just-idx "5"))   ; Fit
    8 k$ W& [( O' c4 H  x4 E7 u
  8663.       (T (setq just-idx "0"))
    % A7 O$ M! S* R5 r/ P. T) E$ F
  8664.     )7 I' `- i) [5 ^3 `1 E
  8665.     just-idx2 c" N" m/ T. J9 ^: E1 j' B7 y
  8666.   )
    : i: D$ m9 B. Y3 t. u
  8667. : b0 r% }2 F4 T8 a% H) |
  8668.   (defun modify_text ()
    5 k* r. `" t$ O
  8669.     ;;  insertion point' H  A1 G; R6 @: R. R- q& W
  8670.     (setq showpt (list x1 y1 z1))
    : O# B. I' r) _/ w
  8671.     (setq bit-10 (trans showpt 1 ename))
    % F' i( a" _1 Q* d
  8672.     ;;  alignment point* a6 T6 k# s$ c& g! y, N
  8673.     ;;  for 'Aligned' or 'Fit', alignment point must be different& p- H' g9 ^2 I- N- |+ X
  8674.     ;;  for all others, use insertion point
    $ D) p) c9 D, ^
  8675.     ;;  (ACAD will recompute insertion point)( d$ P. p8 C0 ^# ~
  8676.     (if (or (= ha 3) (= ha 5))
    % y6 J/ z7 q# C/ p1 B7 ^
  8677.       (progn
    $ o+ f% o( ~  i3 D; G) N
  8678.         ;;  if no alignment point, fabricate one
    , u8 k! F1 w( V
  8679.         (if (not alipt)4 ^; `  ~" Z- F) l4 z4 }$ i3 Z
  8680.           ;;  add text width to insertion point
    5 B! K9 O3 H& B( M3 L( D
  8681.           (setq alipt
    / I, k/ Y2 W/ v2 ~5 V& F; ~
  8682.             (list (+ (car showpt) (car (cadr (textbox elist))))
    5 ^8 b& m! z4 V& X7 `2 ]+ H
  8683.                   (cadr showpt)
    1 L6 S% n% {+ P+ [) t1 D
  8684.                   (caddr showpt), G' i/ l) g5 j
  8685.             )
    : j; A( c* w; _8 `2 t" L
  8686.           )# b2 w; N7 ?% e5 \6 e& G1 a
  8687.         )8 u! ~5 H8 _" \. Z9 N; K9 q
  8688.         (setq bit-11 (trans alipt 1 ename))
    4 H5 q1 Q- |( f3 v: j
  8689.       )
    5 X: a$ ]! v- E5 }
  8690.       (setq bit-11 bit-10)% H$ A! a8 g4 p: S
  8691.     ); t2 Y# N8 R. k! h
  8692.     (modify_properties)! q4 m3 y4 ?3 i! h, N  r% q) U
  8693.     (tempmod tstyle 7 nil)
    . G1 _/ }' K) ]
  8694.     (tempmod bit-10 10 nil)
    - K1 `, M6 I% S& R. r% Y2 V" _
  8695.     (tempmod bit-11 11 nil)9 E/ [5 |% a/ u& |/ O
  8696.     (tempmod text 1 nil)! w6 [4 l8 C& H$ m* ^' _2 Q% j
  8697.     (tempmod hght 40 nil)' z! b( ^) \% y3 O/ q
  8698.     (tempmod wid 41 nil)- i7 B5 K' l1 b4 {7 k
  8699.     (tempmod rot 50 nil)( f" j3 |/ J! B" x0 ~6 `
  8700.     (tempmod obl 51 nil)% u* h/ I8 E& z# \# ~; P* B5 v
  8701.     (setq bk-up (+ (* bkwd 2) (* upsd 4)))
    ( T# p3 x/ d6 E+ Q. H, {
  8702.     (tempmod bk-up 71 nil)- B) }4 L  L* q- N
  8703.     (tempmod ha 72 nil)
    6 \9 u5 W8 o2 a9 I6 h6 C
  8704.     ;; Attdefs use 74, text 73
    0 l, S- M4 N9 J) p* k/ r
  8705.     (if (= etype "ATTDEF")
    ( _7 g( E, {# g  R- y5 @6 Q
  8706.       (progn0 h0 }( C$ J& F( Q
  8707.         (tempmod attag 2 nil)0 q) p' o. Y5 {4 w3 m: p
  8708.         (tempmod atprompt 3 nil)6 k, Y9 j7 ^  Q
  8709.         (setq icvp (+ inv (* 2 con) (* 4 vfy) (* 8 pre)))
    4 c3 i* q& Q  k& m" Q# H, ?0 \
  8710.         (tempmod icvp 70 nil)  z! \. P" L  R8 P
  8711.         (tempmod va 74 nil)) N* p9 y3 V# N8 q* s4 j
  8712.       )
    % P  y" ~. F2 Z% _3 M' l
  8713.       (tempmod va 73 nil)
    5 _, G  l$ S+ ~0 j3 V
  8714.     )
    ; G2 ~$ x, Z6 |* w/ W
  8715.     (entmod elist)
    2 R' |. H, Q4 T3 E8 a
  8716.   )% I$ v! W! }5 Y, W1 \

  8717. # M9 |  t' O% w5 R1 ]' v! f* X
  8718.   (defun ddtext (/ 2ndpt slist i)" |" F" W/ `* t$ q" i: m- z
  8719.     (if (= etype "TEXT")" d7 _9 H: J6 z, m0 }8 `
  8720.       (if (not (new_dialog "ddtext" dcl_id)) (exit))( @) }; f" Y9 s+ e6 r/ o
  8721.       (if (not (new_dialog "ddattdef" dcl_id)) (exit))
    / p, }" w9 ]7 U1 l+ ~. V
  8722.     )
    % P. A4 q3 I$ w& L& e  R( W8 _' c( W
  8723.     (set_tile_props)1 F% d( z. n  M9 D! s* s% x5 t! o
  8724.     (set_tile_handle)6 }( b5 @5 G3 c! ?8 ]
  8725.     (set_tile_text)8 y: @5 |* l/ O. T' V/ K. b! H
  8726.     (set_tile_tag)
    1 c; l+ Z0 z7 |5 o
  8727.     (set_tile_prompt)5 u  Z) j" V2 u
  8728.     (set_tile_hght)
    0 I% ^/ p" ~: X1 z1 r& D
  8729.     (set_tile_wid)
    0 \# u+ E  T0 [
  8730.     (set_tile_rot): v, N& i9 m, D; J/ L# b
  8731.     (set_tile_obl)4 V; k4 C6 \1 F/ N$ b
  8732.     (set_tile_bk-up)
      T5 q  d6 k( C, L
  8733.     (set_tile_icvp)" Q# f0 p! j% D
  8734.     (set_tile_style)) u0 A% R! ^) k6 [
  8735.     (set_tile_just)
    4 t7 c9 y7 j2 q; I4 y4 u5 `
  8736.     (setq pt1 (trans (cdr (assoc 10 elist)) ename 1))' J2 \2 [' U' F9 M" @
  8737.     (if (not (assoc 11 elist))1 [; g" K3 M* ]0 D' `) P
  8738.       (progn (setq pt2 pt1)
      y- H. Q; h5 n+ P8 R5 ~
  8739.         (setq elist (cons (cons '11 (cdr (assoc 10 elist))) elist ))
    & \! v) W, i' o$ @
  8740.       )
    ( }) a+ P: m( |% P6 H. x+ Z6 ~
  8741. ;;(trans '(0.0 0.0 0.0) ename 1))
    ) J* G- c( D2 I$ H
  8742.       (setq pt2 (trans (cdr (assoc 11 elist)) ename 1)). i9 l. c- B2 u; x6 F
  8743.     )
    . e7 Q8 q8 e. n. }' S
  8744.     (if (or (and (= ha 0) (= va 0))
    + @5 m# J, c) V# x+ A6 F
  8745.             (= ha 3)
    * l. v$ a8 t9 u* K5 Z2 ?
  8746.             (= ha 5)# k- {& V7 f6 x5 G  l: {0 C9 {
  8747.         )' O3 w  s  a9 D+ h2 o! h* G' D2 }6 X
  8748.       (setq showpt pt1)3 [4 v5 S5 [/ X3 b! x4 j
  8749.       (setq showpt pt2)* T2 O! r5 \8 m( |1 I% V+ ?2 D. k
  8750.     )
    - `8 W5 D3 V. g5 _
  8751.     (if (or (= ha 3) (= ha 5))
    4 S8 S& G; p% ~
  8752.       (setq alipt pt2)$ t, X# N) Y7 Z3 B
  8753.       (setq alipt nil)
    + R; W  A3 \7 I# N5 E" N. b# i7 Q
  8754.     )8 T- u! a. W, c4 p$ F1 m$ L
  8755. " |4 ~# E9 x, q# Z4 H/ v+ q% o
  8756.     (set_tile "x1_pt" (ai_rtos (setq x1 (car showpt))))
    9 H9 b) [! a) g* q2 Q9 J
  8757.     (set_tile "y1_pt" (ai_rtos (setq y1 (cadr showpt))))4 `8 F, y6 {! M
  8758.     (set_tile "z1_pt" (ai_rtos (setq z1 (caddr showpt))))
    $ m4 Y' z3 v; N: Q; f7 n- B

  8759. 8 E+ j+ D  I& k6 W6 C
  8760.     ;; Define action for tiles
      _! U# X! @$ [
  8761.     (set_action_tiles)  k8 N6 Q" l* d5 ~+ `1 N8 g6 v( @/ ]
  8762.     ;; Set focus initially to the text edit box.
    ; q0 c4 B# A. q% H3 V4 A5 f* z
  8763.     (if (not i) (progn (mode_tile "t_string" 2)(setq i 1))), H: P: n! n3 C; _
  8764.     (setq dialog-state (start_dialog))
    / j; ?/ u- M# `/ I; o) D6 |  k
  8765.     (if (= dialog-state 0)8 f/ L) C/ U7 @
  8766.       (reset)
    ) U  G/ t! {; m( W; C- B$ a2 O2 H
  8767.     )
    ) S, W- u8 r* e9 h* T/ o, y
  8768.     (if (= dialog-state 1)& A- m. ]* C" f# b2 i7 s
  8769.       (modify_text)
    % r" w5 n5 _1 x5 W* H# v( |
  8770.     )
    2 p- j# ]1 y' D  J! Y6 o9 H
  8771.     (if (= dialog-state 3)
    ! |/ l+ q9 v! l1 h) n- r
  8772.       (progn7 x) {, }8 r- z2 D- y! I
  8773.         (modify_text)6 ?, ]2 v! O# {; t
  8774.         (if (or (= ha 3) (= ha 5))* f% i/ D- a. q, b8 `' N/ [
  8775.           (progn
    " @3 b3 j) U- L+ A7 p5 J
  8776.             (setq showpt (getpoint (list x1 y1 z1) "\nFirst point: "))6 l! ?9 t7 n4 ?
  8777.             (if (not showpt)1 s6 W6 m$ _& l, ]1 L/ F- e" k
  8778.               (setq showpt (list x1 y1 z1))
      W& w8 o) c1 j% b
  8779.             ). Y6 c+ }7 c* N# w2 O
  8780.             (setq 2ndpt (getpoint showpt "\nSecond point: "))- h7 D- J% N6 ~$ x$ S3 A" D% H
  8781.             (if 2ndpt1 `; @& o4 j) ~3 [+ F
  8782.               (progn" Z3 o6 ^9 D) q
  8783.                 (setq alipt 2ndpt)$ |/ G2 e/ G) a# c; b& R5 ]6 e* p6 I
  8784.                 (tempmod showpt 10 1)* S$ v+ W5 b! p! U, m. Y+ s
  8785.                 (tempmod alipt 11 1)4 X. m. |3 \5 Y: m1 Y3 X2 i3 s
  8786.                 (entmod elist)
    2 e8 ?3 b, Z; y8 D( c
  8787.               )6 z6 Z+ X( I5 V' s- P. d
  8788.             )1 Z" F) e8 ?1 c: \7 o
  8789.             (setq elist (entget ename))2 v2 c$ e7 Y; N) J% Q( l, _
  8790.           )2 @8 V* t  z7 G9 W3 O9 \) l& H: M
  8791.           (progn! b6 C$ J4 y& ^7 t! i: Q
  8792.             (setq showpt (getpoint (list x1 y1 z1) "\nInsertion point: "))
      }3 l$ z9 \( Z# E8 M+ @+ j
  8793.             (if showpt
    ( K* m5 y% E- o# i* ^% F' g
  8794.               (progn2 c) m" E- v' z- C
  8795.                 (if (and (= ha 0) (= va 0))
    1 N: |0 ]5 {7 T. }
  8796.                   (tempmod showpt 10 1)9 l( }9 K& M' z  E3 \+ m; G8 P
  8797.                   (tempmod showpt 11 1)
    9 I+ C- K4 l: d/ X
  8798.                 )+ Y& _9 F0 I5 z7 A' Q7 a" g6 u+ E
  8799.                 (entmod elist)) @- W# P) u9 ^5 t
  8800.               )
    5 }' [- Z0 \: i2 c) a
  8801.               (setq showpt (list x1 y1 z1))
    : n+ u; f2 r9 \4 o! c
  8802.             ). C( ]2 Y' R" x! P  u( y
  8803.           )8 Y: T6 |2 y) s+ F8 u' M& C, n
  8804.         )
    / f- A! ]8 n( o
  8805.         (ddtext)3 A2 M7 v. [6 E  l- y1 [. i& s5 ~
  8806.       )
    7 m# Q# ?0 c8 |" _5 i% S( s1 R
  8807.     )! [5 N4 r! C5 W( ?
  8808.   )
    $ y+ Q# g! j* \# d: R" U

  8809. / o2 j) q% \4 q
  8810.   ;;
    : X3 {4 X' M( K3 i$ C& S
  8811.   ;; Modify MTEXT9 D, _2 i) q& b) {$ |6 Y/ B
  8812.   ;;
    . \; s: K: T+ J# D: E
  8813.   (defun modify_mtext ()
    , E( o; x6 o  W: n3 v2 `' q
  8814.     (modify_properties)
    4 k+ l  e  J6 \# i1 Q/ B) V
  8815.     (setq pt1 (list x1 y1 z1))
    " P. K4 C8 o! d3 B( z/ N2 v7 g
  8816.     (tempmod pt1 10 0)
    5 N) m2 G1 N9 Y* x5 A9 K
  8817.     (tempmod text 1 nil)4 @0 ~% D* S- C8 T" r, X
  8818.     (tempmod tstyle 7 nil)! n! O8 y& ?- H' W1 x( c
  8819.     (tempmod just-idx 71 nil)# D0 {$ a+ }: n/ y% x, I5 A
  8820.     (cond
    3 Q2 i' ~$ _; z$ P2 d( g/ [+ @4 N
  8821.       ((= dir-idx 0) (setq dir-idx 1))6 f" a- y7 |- ]2 ~, Q
  8822.       ((= dir-idx 1) (setq dir-idx 3))3 E1 n3 _" `+ |4 j
  8823.       ((= dir-idx 2) (setq dir-idx 5))- F( m' P6 k2 y
  8824.       (T (setq dir-idx 1))
    $ e3 `8 H; R! \+ U0 R
  8825.     )/ u2 k5 R% W: ~0 r$ S# E7 z& M
  8826.     (tempmod dir-idx 72 nil)
    . ^. }6 p  Q7 r7 g0 I* q
  8827.     (tempmod hght 40 nil): @& Z; t1 k7 U7 e8 D! Y0 @& j0 x
  8828.     (tempmod wid 41 nil)
    ) s) f2 C, N* @
  8829.     (tempmod rot 50 nil)
    . E; X0 J1 D" \2 e
  8830.     (entmod elist)
    : ]6 L% @2 B9 M2 L6 V
  8831.   )
    5 M$ R# D9 c- p. j$ L

  8832. , ^, S+ g1 i0 }; y# w# o0 w! k
  8833.   ;; Set MText text style0 \& K7 r4 r' z: X+ J; B
  8834.   (defun MText_style (index / style-list)) S( S5 \% D; w% r6 O
  8835.     (setq style-idx (atoi index))& f5 n% J6 d. q" p
  8836.     (setq tstyle (nth style-idx slist))! X# D: W5 O1 Z4 j8 W7 p- _& ^1 c
  8837.     (setq style-idx (itoa style-idx))* U1 [/ |: s8 R% z, p
  8838.     (set_tile "style" style-idx)7 P6 j! U* [* q! ?3 l
  8839.     (setq style-list (tblsearch "style" tstyle))
    , ~  n7 Y3 h7 D) M4 f. H# ?
  8840.     (setq shght (cdr (assoc 40 style-list)))6 t6 Z6 c$ f/ ^, l; z9 v
  8841.     (if (/= shght 0)
    8 j0 `+ \2 F4 x9 n& e1 C$ t8 N
  8842.       (progn
    ) Y+ n: B6 }5 |* O6 z% y' ^! I
  8843.         (setq hght shght)
    . Y/ B. @+ K. o* q0 N* N3 b% l. N
  8844.         (set_tile "hght" (ai_rtos hght))
    " S+ D8 N  y+ f2 N$ l! w
  8845.       )
    3 a6 [' G, h( ~! [+ `& A$ C# S! S) R
  8846.     )
    ( {3 Q- M# R/ s& z+ Q+ f
  8847.   )
      z! b0 h) k0 _+ ?
  8848. & c% t- |5 b! g# @0 q7 P& f
  8849.   ;; Run DDEDIT on given entity, working around possible re-entrancy
    & k) ]' i) d9 C1 ~* J3 z% M) I4 @
  8850.   ;; problems with MTEXTED0 n3 O# W  z6 {& L8 h2 G- ^* ~2 y
  8851.   (defun safe_ddedit (ename / orgMTextEd work). E0 p, [5 g# r) |
  8852.     (setq orgMTextEd (getvar "MTEXTED")): [7 N& f% V0 E% V7 C6 A$ M
  8853.     (setq work orgMTextEd)+ n, \# j4 X: l
  8854.     (if (= ":" (substr work 1 1))
    0 q# w0 g  M5 F+ i
  8855.       (progn" q; r# D" _+ z% R9 Z+ w: A
  8856.         (while (and (< 0 (strlen work)) (/= "#" (substr work 1 1)))
    ; o+ f6 Y& E; h. E- I- p+ a
  8857.           (setq work (substr work 2)); o# N- }) d! f
  8858.         )2 E  M$ V- G- x0 P& g" l6 _9 H
  8859.         (if (= "#" (substr work 1 1))
    ( Y5 v% F: C0 n  B, C% f( p3 K
  8860.           (setq work (substr work 2))
    $ X4 A9 Q) P( a% b/ J# y
  8861.         )
    - d+ B5 \9 e+ P- d$ \" J
  8862.         (setvar "MTEXTED" work)
    1 J9 a7 y. O1 ?0 I$ e5 {) @5 B
  8863.       )
    7 e  _3 a- W) q9 \
  8864.     )0 }9 x  W: d2 m5 I
  8865.     (verify_arxapp_loaded "acmted.arx") ;; make sure it's loaded...8 F' Q& b* W% d) F
  8866.     (command "_DDEDIT" ename "")
    ! T: K1 }, e/ M- d5 R
  8867.     (setvar "MTEXTED" orgMTextEd)
      g9 Z) F, S* W" x% v
  8868.   )8 B0 n# H8 I# f

  8869. , Y) T7 T7 Z, y, O) p
  8870.   ;; Verify MText object width$ `. \( Q8 G1 ~4 \
  8871.   (defun ver_MtextWidth (value)
    : f, L. Z$ [/ s. v5 J; L* T
  8872.     (setq value (distof value))
    5 a9 Q" K4 r6 H5 h! l2 ?
  8873.     (set_tile "MTextWidth" (ai_rtos value))
    " R- i1 d2 G+ x) ]
  8874.     (set_tile "error" "")
    2 N: w! T# p) @1 y- {6 w
  8875.     (if (< value 0.0)
    8 _4 P' n9 Z+ S" H& y9 ?: }, T/ V
  8876.       (set_tile "error" "Value must be zero or positive.")9 V* q% x% x( C' ^' W$ ?
  8877.       (setq wid value)5 Y. g7 J1 X* q6 b
  8878.     )- b* p' h% t  Y( T) i* d) S7 ^
  8879.   )
    5 A9 O' J, k6 ]% e" w
  8880. 4 N1 q. ^6 b0 Y, }6 E! s+ ~
  8881.   (defun ddmtext ( / gc3)! K0 J: W- A( x0 o& u7 A% e
  8882.     ;; Get dialog5 q! ^7 N0 b4 |7 A
  8883.     (if (not (new_dialog "ddmtext" dcl_id)) (exit))
    6 K( p) B5 X0 @- d

  8884. - S5 Z3 {6 E4 b/ i
  8885.     ;; Load list boxes% y6 g( t' I5 ?) e. I
  8886.     (start_list "MTextJustify")
    , i: i( G- H4 {! m8 I: k* [( g
  8887.     (mapcar 'add_list '(
    . s6 O) j+ {( o9 y; B& j" R
  8888.                         "Top Left"+ E$ ]: U& w. W+ O3 G1 A
  8889.                         "Top Center"$ O2 N' V- k) Q# h& s
  8890.                         "Top Right"
    ( R8 P$ p2 R* b! S" Q1 o
  8891.                         "Middle Left"  c! \! q6 K: ?
  8892.                         "Middle Center"
    : v3 v+ S! Z2 }% C- ~
  8893.                         "Middle Right"
    " L- I- g7 l# C, F; m5 q1 S# j, X
  8894.                         "Bottom Left"
    ( T8 }1 V" l" a% K8 x& ]$ C* |
  8895.                         "Bottom Center"& A* a) r$ a; W' @& g
  8896.                         "Bottom Right") W5 G+ `( d* `0 i9 _# ?
  8897.                        )
    + k2 b( j: T# I/ H" ?( H7 ?
  8898.     )8 a7 {& d3 s/ m# H
  8899.     (end_list)4 q! z% t5 R( W  }$ Z; O: {

  8900. * ]; t! h$ i2 l4 N* A: J: x( ]3 J
  8901.     (start_list "MTextDirection")
    8 f, r* ^" V- U% w9 R0 v
  8902.     (mapcar 'add_list '(
    8 l) N- }8 o; C; c" b) P
  8903.                         "Horizontal"! d/ R+ R1 }! v0 n8 I% _( n
  8904.                         "Vertical"
    + A# I0 ^0 h  x# b& c
  8905.                         "By Style"
    " P1 V/ M' I1 I# }3 v
  8906.                        )
    4 j/ Z- S1 \7 V  Z$ I5 ]3 c, N9 s/ i
  8907.     )7 @5 u- t% k. W6 i6 g, S1 h
  8908.     (end_list)
    5 }, ]* i' o) H$ D; j& d; I. T
  8909. , [, ~% X+ O, X
  8910.     ;; Set initial tile values) k$ ?% G6 O( e7 w1 y
  8911.     (set_tile_props)
    " G# _; k2 y/ A% E# v9 e# E
  8912.     (set_tile_handle)
    - }% a0 N, p2 a. K7 x
  8913.     (set_tile_pt1 0)
    9 Y& u* }! B- O# ?
  8914.     (set_tile_style)- [& v7 p  n+ o
  8915.     (setq just-idx (cdr (assoc 71 elist)))
    / h' V- c3 L. H3 d) `
  8916.     (set_tile "MTextJustify" (itoa (1- just-idx)))
    . b4 R4 G+ W3 @0 D. ^; I7 _5 }
  8917.     (setq dir-idx (cdr (assoc 72 elist)))4 Z% D7 Z3 v2 Y3 m
  8918.     (cond  V6 i% s! T9 [6 K: n
  8919.       ((= dir-idx 1) (setq dir-idx 0))3 K+ f- R* L# Q/ j- s9 r
  8920.       ((= dir-idx 2) (setq dir-idx 0))" G7 M# J) s$ U: V: q5 Z: j
  8921.       ((= dir-idx 3) (setq dir-idx 1))
    - e! Y3 B( n( Z3 F" z9 A
  8922.       ((= dir-idx 4) (setq dir-idx 1))" s+ o$ `) N  l1 E
  8923.       ((= dir-idx 5) (setq dir-idx 2))
    - J5 E0 F' s5 _! S' @9 ~" Z  q
  8924.       (T (setq dir-idx 0))
    $ T$ e# T- ^% g# V! v1 n( X- |) @
  8925.     )" x; G( V4 Q& g6 O3 |/ l5 b, I: a
  8926.     (set_tile "MTextDirection" (itoa dir-idx)): V7 h0 Z) G5 F
  8927.     (set_tile "MTextWidth" (ai_rtos (setq wid (cdr (assoc 41 elist)))))
    % l1 H" p0 O8 ?! K% |: f9 b
  8928.     (set_tile_hght)
    % I1 b' Y, o: W# t# e
  8929.     (set_tile_rot)
    3 o2 B5 f: S/ L% B( v
  8930. # k6 X/ |5 C0 t3 t5 [* R* N0 T
  8931.     ;; Set edit box, disable if too long
    ) m! o( b, I1 w  N1 G
  8932.     (setq gc3 (cdr (assoc 3 elist))
    6 n* D' G# d8 J" K7 S# e& Z4 l
  8933.           text (cdr (assoc 1 elist)))
    ; N& y. Z! V/ x0 i7 a" X/ J
  8934.     (if gc3& b8 d" u. `) A' J& C9 J* G
  8935.       (progn  ;; Text is over 250 chars, disable edit tile
    / H3 e; W; R8 t3 _7 K
  8936.         (set_tile "t_string" (strcat (substr gc3 1 25) " ..."))
    0 B: r9 ~" ?. L. J3 ^0 |
  8937.         (mode_tile "t_string" 1)
    ' t9 K" [. B1 c8 f- N$ W9 a" R6 d
  8938.       )' M; P/ @; y$ @' O" }* u+ G* o
  8939.       (if (> (strlen text) 80)- _1 \! T+ E( f
  8940.         (progn  ;; Still too big
    ) U9 a- R& f( c9 @% C
  8941.           (set_tile "t_string" (strcat (substr text 1 25) " ..."))
    , U, ~# V; q3 T8 i9 |2 w, f
  8942.           (mode_tile "t_string" 1)
    & e: i9 b1 W8 m% h- Q( K
  8943.         )
    / |1 {9 A3 H! e4 O5 T, U
  8944.         (set_tile "t_string" text)( M; [1 |3 r3 @6 N
  8945.       )
    3 y* Q) W: w$ R: y" O2 w
  8946.     )3 L  \; Z( s! n# {- `+ `

  8947. - S- t) f- i  L+ Y! r
  8948.     ;; Define action for tiles
    , p/ E0 v5 f9 G- J9 z, V/ Q* r0 R! G
  8949.     (set_action_tiles). [% ^. b+ q# |0 P5 @
  8950.     (action_tile "style" "(MText_style $value)")
    0 l( N9 c8 b: r1 x' W! E; ?' r
  8951.     (action_tile "MTextWidth" "(ver_MtextWidth $value)")
    ; A, o4 N" ]* {
  8952.     (action_tile "MTextEdit" "(done_dialog 4)")
    4 ?6 Q2 t$ M, w4 U' i
  8953.     (action_tile "MTextJustify" "(setq just-idx (1+ (atoi $value)))")
    6 T* x# `2 i) `" H: q2 X
  8954.     (action_tile "MTextDirection" "(setq dir-idx (atoi $value))")
    0 ~! ~! U. L- ^  T0 P6 ^7 y1 Z% m
  8955. : n9 b5 x8 x/ U5 |
  8956.     ;; Set initial focus to text edit box.
    3 r7 M# _: d7 g6 s  N" O, Q4 O
  8957.     (mode_tile "t_string" 2)
    9 J1 y3 L* N2 y5 A  {6 E2 t. w
  8958. : e, H* m3 C/ w. F5 J1 H
  8959.     ;; Run the dialog: U  X* t; ]$ m
  8960.     (setq dialog-state (start_dialog))
    & y) Z3 r- x1 J7 d. d  X2 R# N2 m
  8961.     (cond
    2 k! a! @( ], {# l2 `
  8962.       ;; Cancelled - restore saved data
    / A9 D9 y9 M5 k/ ?# |+ y! O
  8963.       ((= dialog-state 0) (reset))
    # E7 X; A) N' p" t% J2 T, t
  8964.       ;; OK - save new data
    ) Y1 \( |0 ^& o* O: I, Z
  8965.       ((= dialog-state 1) (modify_mtext))
    : z/ u6 s5 G+ A3 d5 O9 n4 M, }+ Z$ Z
  8966.       ;; Pick new insertion point
    % Z0 z; f" v+ P, o; h0 i
  8967.       ((= dialog-state 3)  B; F0 P# D0 ^. ?8 Q( u) z3 L8 ?
  8968.         (modify_mtext), ~3 S/ _9 d3 M/ z+ D- j- ^3 d
  8969.         (setq pt1 (getpoint (list x1 y1 z1)  "\nNew Insertion Point: ")); j6 s. g8 w4 w9 F0 d# g3 B8 i
  8970.         (ver_pt1 0)( K1 d6 T( V) h0 b/ R& q
  8971.         (ddmtext)
    " {1 K6 R. w: h( T; b3 ~+ O. g( V
  8972.       )( m! `0 \6 D; ~
  8973.       ;; Run full editor% y% ^, z0 \! ~* W
  8974.       ((= dialog-state 4)' Q5 I7 H' O0 _3 z9 F( s
  8975.         (modify_mtext)5 c' x" C$ `, H
  8976.         (safe_ddedit ename)8 t" V8 @7 K0 ?1 m
  8977.         (setq elist (entget ename))
    6 f. Q! _2 _9 v/ g
  8978.         (ddmtext)) H8 t6 c. i; j* J7 V
  8979.       )
    6 h3 ]. R  O$ O' c% W
  8980.       (T nil)
    4 ?; r" F! Q4 [; E; @! T
  8981.     )
    & a( F  T5 T6 k# j
  8982.   )4 \' v- P) N$ n6 p, a; X
  8983. " \" ?% ]+ I$ ~1 |: H, a( t, o
  8984.   ;;. H5 T; J' e9 X  k
  8985.   ;; Modify VIEWPORT& b& X7 S- z2 I% \( z9 k
  8986.   ;;
    * O" R* t, l# u

  8987. " J. f* v6 M% z# U. J4 y; o9 d$ x
  8988.   (defun ddvport ()
    . G" f1 W/ H0 e) W
  8989.     (if (not (new_dialog "ddvport" dcl_id)) (exit))
    ; s7 @# Y0 R+ h
  8990.     (set_tile_props)
    + H1 r1 L) D  N' ?5 G
  8991.     (set_tile_handle)
    ! [1 y' n0 w% Y
  8992.     (setq vpt (cdr (assoc 10 elist)))* m7 F8 t+ F2 ]' g% V
  8993.     (set_tile "xtext" (rtos (setq x1 (car vpt))))
    ' Y! x6 n/ P% z% d) i7 V
  8994.     (set_tile "ytext" (rtos (setq y1 (cadr vpt))))
    $ c- W1 U+ Q2 x0 u, k- H
  8995.     (set_tile "ztext" (rtos (setq z1 (caddr vpt))))
    . m6 D& V, K0 x) }+ i
  8996.     (setq wid (cdr (assoc 40 elist)))$ a0 H/ A. a5 H/ r, w' t% W
  8997.     (set_tile "wid" (rtos wid))
    & S, n5 Z" ], |* {% A
  8998.     (setq hght (cdr (assoc 41 elist)))
    , I+ f0 Y: W+ @: b* w$ o; n2 A* \
  8999.     (set_tile "hght" (rtos hght))
    ; o8 {: \. h) P6 `5 J+ K/ `2 r
  9000.     (setq vpid (cdr (assoc 69 elist)))+ o' A. B  B% u+ _/ F0 z5 x: ]- I
  9001.     (set_tile "vpid" (itoa vpid))1 ?: E5 ]9 ^) }7 I3 Y. ]& q
  9002.     (setq on-off (cdr (assoc 68 elist)))2 _& U$ _5 A; d/ B. E+ E+ H5 B
  9003.     (cond7 d) z# r: o* ^, {
  9004.       ((= on-off 0) (set_tile "on-off" "OFF"))' a) @3 [7 _( I4 N1 ^% q6 `
  9005.       ((> on-off 0) (set_tile "on-off" "ON and Active"))
    " g/ v, g; H8 F7 t* G
  9006.       (T (set_tile "on-off" "ON and Inactive"))
    . R1 r* b% [) Z2 O
  9007.     )
    7 e4 A2 R5 H5 ^9 R# [  P- g2 b) z! l4 w) j
  9008. 8 l5 S3 S; \1 H' `1 Z& [
  9009.     ;; Define action for tiles; H  N1 n; A+ f8 u/ g
  9010.     (set_action_tiles)8 K; Z# i7 q1 o5 m# `

  9011. , i0 g# Q+ D) h0 L# S; Y5 V; e6 l
  9012.     (setq dialog-state (start_dialog))
    . o9 b6 o  ~6 h( L4 i0 {2 S" E; j! F
  9013.     (if (= dialog-state 0). O& M9 o9 M# I' O1 i3 n
  9014.       (reset). n) E2 M3 f- E; L! s6 M
  9015.     )
    + W, f$ K2 W. m* H' `. ]& m8 T
  9016.     (if (= dialog-state 1)
    3 Q$ q" L9 p2 z& [# B$ p
  9017.       (progn
    ' d# w7 W! w% D0 d; M& B
  9018.         (if (= ecolor   0) (setq ecolor "BYBLOCK"))
    ' Y1 X/ o# B2 ^
  9019.         (if (= ecolor 256) (setq ecolor "BYLAYER"))
    5 f8 i7 b, z6 ]6 a) u4 \
  9020.         (command "_.chprop" ename ""
    " G$ K5 I* e7 `5 J' D1 Z- v
  9021.                  "_la" elayer
    ( A# J* c3 D7 c. W; W0 \
  9022.                  "_c" ecolor ""& ?3 ~3 o7 B" Z, ]9 S: h7 l
  9023.         )
    7 L# q* ]/ `" l3 y( B6 L: V
  9024.       )
    . E% L: q3 s9 U
  9025.     )
    3 |7 m+ M. H$ e8 K5 `8 Q" h3 ~
  9026.   )
    . F! E# Y% z% @/ P0 y9 L6 @
  9027.   ;;9 ^( V" |' L4 V* J3 A
  9028.   ;; Modify POLYLINE
    ) y' i* E$ p9 S+ x0 Z
  9029.   ;;
    4 G$ r9 }) h" D0 d
  9030.   (defun modify_polyline ()& {0 S! m- x' U: H
  9031.     (modify_properties)' L1 k7 |; g2 d- C9 m8 f) T2 o
  9032.     (if (= ltgen "1")
    8 r' c3 k( q% X( x8 o
  9033.         (if (/= (logand bit70 128) 128): O6 l% Y, S8 N, h( B" p
  9034.             (setq bit70 (+ bit70 128))
    ) Z8 l- q9 n5 k+ u
  9035.         )5 g0 s  s; N% b9 C
  9036.     )
    ! s2 D$ h" c: q9 p/ ?
  9037.     (if (= ltgen "0")  a1 G* ^. M( \* ]" \
  9038.         (if (= (logand bit70 128) 128)
    " F7 |3 r5 S3 U1 y' C7 P
  9039.             (setq bit70 (- bit70 128))' \7 v$ i8 P# j
  9040.         )
    $ i! {7 J: s$ f3 f3 J: h! q: C
  9041.     )
    9 N" t/ x6 C- S+ {
  9042.     (setq elist (subst (cons 70 bit70) (assoc 70 elist) elist))8 @( m. h7 D* G+ v6 S# F
  9043.     (entmod elist)  X/ H9 W$ w9 ~
  9044.     ;; Added to take care of updating Vertex information for color
    & F" G# ^/ _: Z
  9045.     ;; and linetype.
    $ H8 B! K( J0 w$ b9 F
  9046.     (setq save-ename ename save-elist elist)
    4 G3 X! J9 g$ U6 \2 v: r
  9047.     (if (= (cdr (assoc 0 elist)) "LWPOLYLINE")
    0 v! J5 h# ^1 X8 t' X$ K
  9048.         (progn, d; F% W5 e* O8 l6 q7 G6 ]+ l
  9049.             (emod ecolor 62)
    3 ^, O1 X. h9 r0 s
  9050.             (emod eltype 6)
    ' ^2 t, V* t1 a* r
  9051.             (emod eltscale 48)/ j, X, Q3 F1 Q4 A% U
  9052.             (entmod elist)
    , c- y2 @4 ]3 @. D
  9053.         )& p1 t' H* f0 e& V* ~8 l0 S
  9054.         (progn
    ; K# g+ c* t1 }: ]/ w. X4 T3 a9 D" u
  9055.             (setq ename (entnext save-ename))
    ! Q. M9 e0 w3 v
  9056.             (setq elist (entget ename))
      d! a1 [5 V' Y8 H, h
  9057. ) S9 u  l; w4 y) M* U# a, _1 v7 {
  9058.             (while (not (= (cdr (assoc 0 elist)) "SEQEND"))! x' k3 m1 o( P5 \
  9059.                 (emod ecolor 62)
    7 L2 V; E, s/ F) e% o5 s
  9060.                 (emod eltype 6)4 f# T8 D) H; o3 ]% ]6 y' _
  9061.                 (emod eltscale 48)
    ' {3 z. [( O$ t/ L
  9062.                 (entmod elist)
    : ~5 W, o  h+ Y3 H
  9063.                 (setq ename (entnext ename))
    # w7 m. F/ f; L6 `: d' u
  9064.                 (setq elist (entget ename))
    1 j: [0 A6 R& U, A  Y% W
  9065.             ): D! j  e7 r6 }- v
  9066.         )
    - l: {" T, v, B/ b; b3 H
  9067.     )1 f3 H) x$ w( r3 e* i" y9 ?9 o/ R
  9068.     ;; Update the SEQEND+ T$ ?8 l( V+ c
  9069.     (if (= (cdr (assoc 0 elist)) "SEQEND")
    & L+ p- A. \! }
  9070.       (progn( E, l0 _9 X5 @% O
  9071.         (emod ecolor 62)
    , i1 v5 d; p6 E; n" p8 G
  9072.         (emod eltype 6)
    ' c9 m# @6 A0 }3 Y: q2 i1 ]
  9073.         (emod eltscale 48)7 z0 v* T& U$ J9 t
  9074.         (entmod elist)
    6 K) z( k2 s$ O; r& Q- y6 J
  9075.       )' S3 }. [/ p) f) i3 F
  9076.     )
    5 f' Y# B4 d3 z; U6 V# f
  9077.     ;; Go back to header.
    + z0 w' a2 ]' V9 |( ]& z) f- V' L
  9078.     (setq ename save-ename elist save-elist); {: \# Y$ T5 Z9 c, Q% L: j3 w! e% n. \

  9079. 6 D+ C1 ~8 l% Y- L0 W
  9080.     (entupd ename)4 G) d5 x$ n3 B/ E
  9081.   )
    ; k! G7 r( [9 g; I
  9082. ) _# l& n6 a. H
  9083.   ;; Increment vertex.  Set tile values to next vertex3 g& z+ f  Z& [5 [6 d: _
  9084.   ;;3 w: @: M$ h+ u" d9 m
  9085.   (defun next_vertex ()6 g2 i- I" ]' g& O( U
  9086.     (if (= (cdr (assoc 0 vlist)) "LWPOLYLINE")% V! Y: X' D# n/ f9 @' p( B3 T
  9087.         (progn
    + Y' E$ |; o4 m
  9088.             ;; If the counter reaches the number of vertices,
    ! h2 R% U, c# O& a8 `: B+ \# v
  9089.             ;; roll it over to zero again./ l. d. T3 u1 Q! g$ ~2 l
  9090.             (if (= ctr (cdr (assoc 90 vlist)))' x# _1 S. B+ [6 \6 g
  9091.                 (setq ctr 0)
    + r+ n# R  p; T" K* b' i
  9092.             )
    , k0 U, |1 M: {3 _6 C
  9093.                 (set_tile "ctr" (itoa (setq ctr (+ 1 ctr))))! P6 K" w6 g, @1 @9 p
  9094.             (set_tile_vpt pointype)+ g( @( O2 Z# q2 _
  9095.         )
    ( d' d+ b5 n5 m% a1 x
  9096.         (progn
    ( a; n2 W( v9 ~
  9097.             (setq vname (entnext vname))- i6 J8 |& W, `6 R
  9098.             (setq vlist (entget vname))
    ; p/ c2 f- ^) `9 }! e$ b8 c* K
  9099.             (if (= (cdr (assoc 0 vlist)) "VERTEX")
    - K; _  T3 w: W, o- i
  9100.                 (progn) c& o2 N: r* j9 j, X5 d! X
  9101.                     (set_tile "ctr" (itoa (setq ctr (+ 1 ctr))))
    " o5 k3 N1 M4 A, q
  9102.                     (set_tile_vpt pointype)
    3 b5 C& K7 }4 W! M& v5 @# z
  9103.                 )  Z/ A. T& Z6 t7 Y
  9104.                 (progn2 x9 ?0 A( V! x3 i4 d4 O. T
  9105.                     (setq vname (entnext ename))
    7 w9 s0 h6 n* G7 j, q, _/ |
  9106.                     (setq vlist (entget vname))' t6 u: f) o0 W9 I. `
  9107.                     (set_tile_vpt pointype)
    3 d1 R/ q& s3 A6 C
  9108.                     (set_tile "ctr" (itoa (setq ctr 1)))
    2 I, X4 g+ p' G" n+ Y/ Q4 [" O
  9109.                 )7 l2 [6 A0 H( [; p0 x8 e1 q
  9110.             )0 s, K+ C: K, M. ]7 Q' P4 b5 [
  9111.         )
    ' K* v7 g2 W% W- ^
  9112.     )) A4 v% d* _" A: z, |' k* B5 d
  9113.   )1 f  r  I4 J) D' L) R
  9114. $ P  T. w: w/ P3 E( O
  9115.   (defun ddpline (/ oldecho)8 C! ^9 B' K# R+ x3 j2 b
  9116.     (if (not (new_dialog "ddpline" dcl_id)) (exit)); I) }8 S+ i& X% S  y" \, g
  9117.     (set_tile_props)& O1 t( M5 ]1 n  A
  9118.     (set_tile_handle)
    4 t' l' P& |& v' ~' M0 x3 c
  9119.     (setq bit70 (cdr (assoc 70 elist)))1 E% @/ ?4 G9 Y0 `6 U2 Q; o5 i
  9120.     (setq bit75 (cdr (assoc 75 elist)))5 G3 o* `2 V; X8 M4 C
  9121.     (cond
    : W; _. R* H. S8 W2 @7 s! t
  9122.       ((= (logand bit70 8) 8)   ; 3DPOLY6 Q* p! V6 u& Q$ v5 w( m
  9123.         (set_tile "ptype" (setq pltype "3D polyline"))3 S( r) V3 B7 S( L
  9124.         (setq pointype 0)       ; WCS or ECS point values
    3 v+ h! X) p. Z+ J3 e& ~4 Q+ g
  9125.         (mode_tile "fit" 1)- ?! c" I0 R' s  H* x; i* [
  9126.         (mode_tile "mesh" 1)+ h/ _6 p: b7 x1 B; e
  9127.         (mode_tile "bezier" 1)
    2 r- ~, `5 K5 |: e2 g
  9128.         (mode_tile "ltgen" 1)
    ; X& y0 r4 g7 `: f
  9129.         (set_tile "none" "1")# B6 Z, _$ U3 M. H* |  {% w
  9130.         (set_tile_closed)
    % L8 O3 Q. k1 n# o
  9131.         (set_tile_fitsmooth)5 V4 ]; e) b0 |# V/ k+ K5 \
  9132.       )7 O8 Y! d4 }3 k( f4 w5 ~
  9133.       ((= (logand bit70 16) 16) ; 3DMESH
    3 N9 j/ p" ^8 Y- F3 O9 D: _
  9134.         (set_tile "ptype" (setq pltype "3D mesh"))! N7 G! G2 N, [+ q4 Y5 _
  9135.         (setq pointype 0), V) C3 i! @+ k% C
  9136.         (mode_tile "pline" 1)
    1 {% N5 F6 f' Y2 h4 }$ d9 y, L' T
  9137.         (mode_tile "fit" 1)  @* l; v; z/ R
  9138.         (mode_tile "ltgen" 1)5 y( c! }; N0 E) [7 o: T0 I
  9139.         (setq m (1- (cdr (assoc 71 elist))))
    : H, b" g- g$ |  \6 |
  9140.         (setq n (1-(cdr (assoc 72 elist))))
    4 v+ }0 Z/ ~1 t7 j+ w
  9141.         (setq u (1- (cdr (assoc 73 elist))))
    $ ?& Q6 H  |, h0 r
  9142.         (if (< u 0) (setq u 0))% f/ l3 A; H3 |# ~5 \
  9143.         (setq v (1- (cdr (assoc 74 elist))))
    " t+ M9 D$ h8 k
  9144.         (if (< v 0) (setq v 0))1 b" R9 P' y0 Q+ d0 O% G  ~+ V
  9145.         (set_tile "m" (itoa m))
    8 B! K" z7 }! u' @, R5 L
  9146.         (set_tile "n" (itoa n))1 R% ~' O9 T4 l1 j2 Z  K/ H) H4 ~
  9147.         (set_tile "u" (itoa u))
    5 c0 V+ ?- e5 \1 Q5 W# Q
  9148.         (set_tile "v" (itoa v))3 y3 {& z& |2 X
  9149.         (set_tile_closed)! O; }9 g! t( p* X2 V- a% |
  9150.         (set_tile_fitsmooth)
    2 y) A5 v$ o4 u# L# K2 R4 W8 \
  9151.       )
    9 e8 X. d# S* V6 ?, V
  9152.       ((= (logand bit70 64) 64) ; POLYFACE MESH
    % p- l9 N! X/ b/ q+ {
  9153.         (set_tile "ptype" (setq pltype "Polyface mesh"))) K8 _) t) l' }, m/ N: B" X
  9154.         (setq pointype 0)
    % ?( A  d2 o' q5 C
  9155.         (mode_tile "f-s" 1)7 v3 Z4 M4 d: W4 `( n. o- w
  9156.         (mode_tile "mesh" 1)1 N) r9 ~4 s  H1 s9 q' J
  9157.         (mode_tile "pline" 1)
    3 K: N# c6 e8 Z. x) x
  9158.       )& F' x' T3 g. O9 [6 X
  9159.       (T                        ; 2D POLYLINE
    & u3 B& e5 s" m% Q; ]
  9160.         (set_tile "ptype" (setq pltype "2D polyline"))
    3 R# o9 l5 D  ?  W
  9161.         (setq pointype 1)
    ; g( M. ]3 E% B5 a( ]
  9162.         (mode_tile "bezier" 1). G9 I0 e4 d3 D: r8 Q; }
  9163.         (mode_tile "mesh" 1)  ]) G0 M" @  y3 u, q7 a( N
  9164.         (if (= (logand bit70 128) 128)
    0 _8 q# v# f: u, c% v
  9165.             (set_tile "ltgen" (setq ltgen "1"))
    ' J2 z( i- X& x& Z$ q' a
  9166.         ). p( o2 {% ^4 U6 H& |
  9167.         (set_tile_closed)
    : l8 K6 e% _# U
  9168.         (set_tile_fitsmooth); r) M$ k% `1 a- m9 x; r
  9169.       )
    ( Z. U+ h" J0 Z% X5 |  v6 R
  9170.     ). U& `* ?/ C& E4 Y3 {; g& L2 `; [* \9 E
  9171. $ z$ `) Y) C4 a" f8 {
  9172.     (if (= (cdr (assoc 0 elist)) "LWPOLYLINE")
    , O+ t2 X! Z. x& Q3 l+ g
  9173.         (progn
    - c. p  v8 A0 h, _6 e! k! I
  9174.             (if (not next) (setq vname ename))- ?' @3 }0 [1 l& d- T' G$ F
  9175.             (setq next T)$ B  R) x3 \$ |% T# f
  9176.             (set_tile "ctr" (itoa (setq ctr 1))): `! i! G' }; m* b1 ]) Z( `
  9177.             (setq vlist (entget ename))
    6 Q) O! p/ w6 `# V* V9 n
  9178.         )6 a8 L- O4 [2 q/ E6 d! e
  9179.         (progn  B) c: p! z# u
  9180.             (if (not next) (setq vname (entnext ename)))
    # b4 g) U2 q" D7 j3 B) f' Y
  9181.             (setq next T)0 V: ]% ^$ S: ]& F$ d( L  r! f
  9182.             (set_tile "ctr" (itoa (setq ctr 1)))
    ) ]; p7 g( \/ Z( D2 \! _
  9183.             (setq vlist (entget vname))
    ! s9 D' X" V" c, G9 r$ ~
  9184.         )
    6 D# P2 T% p2 a
  9185.     )
    4 J( Q- j- B8 }" \
  9186.     (set_tile_vpt pointype)* P5 h: L9 ^  m. p
  9187.     ;; Define action for tiles! x! n( t( H. z$ U- S
  9188.     (set_action_tiles)
    $ }8 @7 x) [, _0 ^& P( V
  9189.     (setq dialog-state (start_dialog))
    " T' L9 B- X7 T4 I3 `

  9190. * H- b1 ~. G" _/ @' N& f/ ~
  9191.     (if (= dialog-state 0): J, T+ {3 L7 m* q. _2 U5 @
  9192.       (reset)1 x$ |$ `9 h1 S4 w
  9193.     )4 w8 p4 E  `/ N  {0 \" Q
  9194.     (if (= dialog-state 1)4 {! p, u: ~) C2 ?! E- P  |+ r
  9195.       (progn
      L9 B0 c9 F1 z& R
  9196.         (modify_polyline)& `/ L* l- y- `+ z3 L7 I
  9197.         (if (or (= pltype "2D polyline")
    ; p& K1 M( f3 B9 I$ ~
  9198.                 (= pltype "3D polyline")
    ! `2 }3 f7 P, T! n. F. c
  9199.             )' u' J& f: M4 [( }# K; Y' X+ o6 q( v% e7 ?
  9200.           (progn
    1 ~# r5 q( |, h3 K
  9201.             (command "_.pedit" ename)
    ; l5 U! M3 `+ P" e& s9 n
  9202.             (if (= spltype 0) (command "_d"))
    # M# J+ z1 R& n$ G# m! g. G  H0 T
  9203.             (if (= spltype 1) (command "_f"))
    5 S- v5 W+ p8 h; t5 Z# Y) x$ t: m$ O9 h
  9204.             (if (or (= spltype 5): z5 s) ^# Y; l: V2 k/ A  r
  9205.                     (= spltype 6)
    & C8 N6 Z' ]2 A  a( q' O/ P
  9206.                 )
    2 M/ v3 K. k8 y: {4 Q/ C% Y" N
  9207.               (progn
    4 G, c: l, G8 T
  9208.                 (setvar "splinetype" spltype)* j4 W$ ]# S2 g3 K) ?
  9209.                 (command "_s")$ a: C% T# O- \7 F# r  }- r; r8 b
  9210.               ); P* i! V( ^. w; ]
  9211.             ). p8 @3 K0 i% }- |8 b. i
  9212.             (if (= closed "0")
    3 Y" S( J% X& N
  9213.               (command "_o")
    . _) C; j- T$ k9 U$ x: |$ M* }
  9214.               (command "_c")$ T6 c5 E% [( W, f3 M6 P% z
  9215.             )
    " l' Z2 B( Z! p
  9216.             (command "")
    $ k6 c2 o8 o0 X. A

  9217. 3 q9 Y) D2 z  P0 o9 O+ _0 ?
  9218.             (if (= spltype 0)
    4 r% }2 j: P. N1 E
  9219.                 (progn) k) o/ n( z8 x6 l! k
  9220.                     (setq oldecho (getvar "cmdecho"))
    7 h7 z) O  y+ V! X: e
  9221.                     (command "_cmdecho" 0)
    ' ~5 J# h! |8 ?6 B
  9222.                     (command "_convertpoly" "_light" ename "")6 X7 y/ [1 m5 B$ ^" y$ ~9 T$ s
  9223.                     (command "_cmdecho" oldecho)6 A: z7 s1 W% }# |* N
  9224.                 )
    4 Q) J6 W+ C) C# Y7 g; L; \% n
  9225.             )
    $ V+ v8 n' S, Z* `7 r, N6 ]  {- N
  9226.           )
    % J1 p( ~, T- Z
  9227.         )
    $ R- C6 V2 f( h% Q
  9228.         (if (= pltype "3D mesh")0 K8 b+ I5 v  o# ]0 J. c0 N4 t
  9229.           (progn2 N: c( x% S* i; [8 I1 y7 y8 [" S
  9230.             (command "_.pedit" ename); {, O+ W4 M$ F5 J0 j3 J
  9231.             (if (= spltype 0) (command "_d"))
    6 p5 ~$ u9 {% S/ H
  9232.             (if (or (= spltype 5)
    ( [6 e% `, o; l1 C" p
  9233.                     (= spltype 6)
    ; |; Z; j' j- v7 |& n
  9234.                     (= spltype 8)$ O% ]' A7 ~6 B3 T
  9235.                 ), d: c3 ?4 b  \; T0 N
  9236.               (progn
    5 I* K" w/ R) I  ]- Z+ y9 K
  9237.                 (setvar "surftype" spltype)
    3 m% @7 d4 D% X4 ^
  9238.                 (setvar "surfu" u)
    7 u% I/ e5 I  s5 L
  9239.                 (setvar "surfv" v)
    . O. b( A& p& _! U
  9240.                 (command "_s")
    7 O$ T6 {$ j1 L
  9241.               )
    * K- W9 K$ n- }8 W
  9242.             )& F$ [- _/ U) |5 `
  9243.             (if (/= closedm old-closedm)# P( g- w2 |0 W4 `& s0 z& D
  9244.               (command "_m")+ y4 W0 H+ r; p9 F: r5 g
  9245.             )$ |" i5 o2 k4 i& m+ O
  9246.             (if (/= closedn old-closedn)
    ) F$ N. A: u8 F2 a. [& n8 s- o- i
  9247.               (command "_n")
    1 F, f; m6 _* v& _7 v
  9248.             )5 W- A7 N( H0 H, X" }0 z1 Y
  9249.             (command "")
    # _& J! F5 W8 B
  9250.           )
    7 s9 H/ z* o# a+ K! f  Q) J
  9251.         )0 ^: ^% |" L. D1 L" B/ u' M/ S
  9252.       )
    3 ], G; y1 ~* _$ j
  9253.     )) g8 P8 W3 l  h/ I! u' C9 K
  9254.   )
    ( l/ j2 Y+ g8 `* g8 O9 E  w
  9255.   ;;! a8 c2 Q# l9 O" Y/ n
  9256.   ;; All the spline data is contained in a single elist. We must do some
    # |) b3 T, b: J
  9257.   ;; tricky list processing to loop through the elist in order to display
    " Q. v6 M# y) m! g
  9258.   ;; all of the control points.% ?6 A2 L* b% y1 `
  9259.   ;;
    1 N; @* f) p: ?/ W% a: A5 V$ e- _
  9260.   ;; The structure of the elist is different for rational and non-rational2 @7 B/ O; P  W6 z6 A
  9261.   ;; splines. Therefore, we check the rational spline flag.1 F5 f) V. v8 x- u' I' y
  9262.   ;;1 Q7 J7 f7 Z; A8 ^6 V9 B
  9263.   (defun next_cntl_pt ()2 F4 b; Y6 ]0 q& {( ^0 L
  9264.     (setq elem-no 0)               ;; elem-no = element counter. v3 S5 S+ H" }- t; h# k- R" x/ V) H
  9265.     (if (= first-10-time 1)        ;; If first time, find location of first
    6 E# x. P( C1 E6 F' |; U) l7 \% B
  9266.         (foreach list_item elist   ;; cntl point element in elist
      `7 c( k/ L6 Y0 W1 g
  9267.            (progn5 o" v. Z; z9 B2 F1 \" T, c
  9268.                (setq elem-no (+ 1 elem-no))% d) J  q1 m) r( v& P! D9 C
  9269.                (if (= (car list_item) 10)
    % r$ o  x6 c; f
  9270.                    (progn
    ! i  b; l9 r) ^2 ~
  9271.                        (if (= first-10-time 1)
    ! N6 q: p- j9 [
  9272.                            (progn
    0 L- g8 [9 l% ]& L( O+ ]6 _
  9273.                               (setq first-10-rec (- elem-no 1))2 C  j1 L' Z1 G2 K. c# j1 Q( C
  9274.                               (setq first-10-time 0)( R3 }9 S/ P6 r0 j% }3 q3 v, R
  9275.                               (if (= rational_spl_flag 1) ;; if rational
    ( w8 A. _) |% P  T% r; j) o
  9276.                                   (setq cur-10-rec (+ elem-no 1))* `/ U1 }' c1 _4 i+ n" }
  9277.                                   (setq cur-10-rec elem-no)
    ' c( o# ]9 D! |! _# I
  9278.                               )
    1 ~! u  @% e0 w+ r  A1 _
  9279.                            )
    ( p- T3 i9 y& j, ?& A) Y
  9280.                        )
    * h3 A3 @& }) H. d; ^+ L$ K9 v0 m4 C
  9281.                    )
    ' F: N# o) ~0 Q8 o) v$ e
  9282.                )
    5 [% s5 m% d1 e
  9283.            )
    , R) y2 [4 d1 x% n
  9284.         )" M5 j, x5 Z- e9 X
  9285.     )
    5 w3 A* e. h( Q! v/ o' k( d. z
  9286.     ;; Now we know the location of the first "10" record; it's stored' a2 s; v- T1 {+ P: @
  9287.     ;; in first-10-rec. The first 10 record was already displayed when* l* r6 g) k* C9 b
  9288.     ;; the dialog first came up so let's display the second one when
    , F- V6 k% H) y4 B) c2 Y
  9289.     ;; the user presses the "next" button (the first time through).
    ' ^7 l6 {; ~# E$ Y! v* ~4 |0 A
  9290.     ;;( G4 A& T: \" @- T3 t! M
  9291.     (setq temprec (nth cur-10-rec elist))
    / @! n& s; A; P
  9292.     ;;/ y6 h: c( `) N* i
  9293.     (if (= (car temprec) 10)   ;; if 10 record
    5 O* N6 A6 i# T* `, x! E
  9294.       (progn
    - E( j2 |  K6 c# }0 V6 g' ^
  9295.         (if (= rational_spl_flag 1)    ;; if rational spline
    3 S8 P/ S1 K$ |( [6 N
  9296.           (progn' Y' ~+ g2 Z) s% L/ b
  9297.             (setq tempweight (nth (+ cur-10-rec 1) elist))/ E6 s3 U% g- [2 e- Z
  9298.             (setq cur-10-rec (+ 2 cur-10-rec))
    * g' g3 q: ?; D+ _4 Z( [
  9299.           )% O+ @# D; z, Q  q6 }
  9300.           (progn                       ;; else
    6 {* [; z/ [! L0 c
  9301.             (setq cur-10-rec (+ 1 cur-10-rec))
    2 t1 s  q+ H6 d, @# o
  9302.           )2 @. X: P  \9 p; @4 `+ p2 X7 D
  9303.         )
    ' h* G# N" A" d
  9304.       )                                ;; end if rational spline
    6 K9 v  C, Q& F  A7 E+ S
  9305.       (progn                   ;; else reset counters
    % A6 z0 c. W6 K6 z
  9306.         (setq temprec (nth first-10-rec elist))  ;; get 1st 10 rec8 x( g0 l6 Z* R+ O  |) X: a
  9307.         (setq tempweight (nth (+ first-10-rec 1) elist))* B# d/ j7 V7 u* ?$ C- X9 r
  9308.         (setq cntl-pt-indicator 0)
    ! d- O; w5 J4 t' v: c
  9309.         (if (= rational_spl_flag 1)             ;; if rational
    $ y) I- Q1 x6 F8 {+ z
  9310.             (setq cur-10-rec (+ first-10-rec 2)) ;; point to 2nd 10 rec
    ! W* @% G: e% j4 N4 ^
  9311.             (setq cur-10-rec (+ first-10-rec 1)) ;; point to 2nd 10 rec
    8 p. ?0 J  G6 w
  9312.         ); p6 E# }! r9 j2 G
  9313.       )1 M- y3 _$ e6 D# J. T
  9314.     )                          ;; end if 10 record% p7 z+ R( k/ g: l9 Z9 |

  9315. ( ^1 n" x9 H. H" s
  9316.     ;; Display cntl point, weight and ctr. Increment ctr./ S6 v; j! \1 V( {- a* s
  9317.     (setq cntl-pt (cdr temprec))
    6 m6 z9 P2 F6 N/ D* \) w
  9318.     (set_tile "xtext" (rtos (setq x1 (car cntl-pt)))); ?6 P+ Y- \9 a  i
  9319.     (set_tile "ytext" (rtos (setq y1 (cadr cntl-pt))))
    6 g6 P) {1 d8 y+ O9 ?
  9320.     (set_tile "ztext" (rtos (setq z1 (caddr cntl-pt))))
    , X; T( \' [5 n. f* O
  9321.     (setq cntl-pt-indicator (+ 1 cntl-pt-indicator))
    4 W5 f! n  P9 \! ]/ B( L: S
  9322.     (set_tile "cntl_ctr" (itoa cntl-pt-indicator))  @8 S2 ]; n+ y6 C1 f) a- v- e
  9323.     (if (= rational_spl_flag 1)                     ;; if rational: [" C% Y% B( `/ h9 \1 l2 x
  9324.         (set_tile "weight" (rtos (cdr tempweight))) ;; disp wght
    9 B- n( ]+ b  j- G! J' O
  9325.         (mode_tile "weight_text" 1)                 ;; disable wght
    0 ~: H9 N7 U1 X* \. o3 D
  9326.     )3 l- v1 [. e; z5 \6 i# z
  9327.   )
    ( Q2 o! o1 V4 b/ `9 @& x" w: ^
  9328.   ;;4 j. e$ w, y) |- Q0 G- N- x
  9329.   ;; All the spline info is contained in a single elist. We must do some: ^# N, A1 ]1 o3 e2 Y6 A$ X' h
  9330.   ;; tricky list processing to loop through the elist in order to display
    : q% x  V* a# o
  9331.   ;; all of the user data points.! f9 Y% C  k, X- _: P& e/ {2 G
  9332.   ;;
    7 T, ]  d1 N2 y9 l  i0 x1 b; ?$ F# b
  9333.   (defun next_data_pt ()1 D/ i, Y, r6 w) K8 W. ?4 u
  9334.     (setq elem-no 0)               ;; elem-no = element counter7 c' J4 L' P  ^: k8 E0 l* o2 \; Z
  9335.     (if (= first-11-time 1)        ;; If first time, find location of first/ u+ ~. o0 ?; x- _. C, [  G3 ?
  9336.         (foreach list_item elist   ;; data point element in elist4 y( C$ S6 f2 `' Q/ i( S
  9337.            (progn1 y; ^) n" x4 A; R7 Q
  9338.                (setq elem-no (+ 1 elem-no))
    & P( \1 W7 L' ?) Y5 S3 K2 g. _# i
  9339.                (if (= (car list_item) 11)
    ) K0 Y/ t2 p/ a1 Z) p6 a& c
  9340.                    (progn
    ' i( a' N) t0 J  F7 A7 [! m
  9341.                        (if (= first-11-time 1)
    / k- ]: g9 j4 v1 s$ {, b- ~
  9342.                            (progn
    ( J9 l2 B# p- u
  9343.                               (setq first-11-rec (- elem-no 1))" t4 j( h/ B" `4 N: r3 c
  9344.                               (setq cur-11-rec elem-no)
    % H, t. Y% V' E
  9345.                               (setq first-11-time 0)
    2 T+ }3 c  Q5 r
  9346.                            )
    * p$ A7 d1 A" i. t
  9347.                        )/ K+ P! w5 [+ _, }( I* @; x
  9348.                    )! a% w- }, y; o5 n; ]
  9349.                )" l' W; u) P6 L- ~
  9350.            )
    # k, t# y( c& i% s/ Y8 d& B
  9351.         )1 x, ?) o" y. @! t
  9352.     )
    * ]! g5 n+ R, |: t  q8 U( ^& G
  9353.     (setq temprec (nth cur-11-rec elist))
    0 L2 v$ p, u  J
  9354.     ;; If it's not a DXF "11" element then we've gone past the last
    / R5 k) s) g/ T% @* ~
  9355.     ;; "11" element. Go back to first "11" element. Reset counters.
    ' U' ?2 i9 p; E4 U/ t$ `
  9356.     (if (= (car temprec) 11)$ {6 r; D1 d3 P( D
  9357.         (setq data-pt (cdr temprec)): T' N5 a& y: Z! G/ k
  9358.         (progn                           ;; else
    % |- t/ I, z7 ?. p1 z* X" {
  9359.            (setq data-pt (cdr (nth first-11-rec elist)))6 \" M0 {/ m: |- _3 e+ X
  9360.            (setq cur-11-rec first-11-rec)
    & [9 f0 e( z& j. F2 b
  9361.            (setq data-pt-indicator 0), ^4 S" Z6 j: i5 D" w" \$ C
  9362.         )6 t' i+ x  V/ x$ {6 p% Y
  9363.     )0 ~* e- U, i) \0 _8 Z
  9364.     ;; Display data point and ctr. Increment counters.
    , Z7 a* G( X5 P' W4 y
  9365.     (set_tile "dxtext" (rtos (setq x1 (car data-pt))))7 F1 j. B: l' H9 t! J( {4 j
  9366.     (set_tile "dytext" (rtos (setq y1 (cadr data-pt))))
    3 D- O7 A+ Z% E4 p. M. H' z
  9367.     (set_tile "dztext" (rtos (setq z1 (caddr data-pt))))
    2 U" J3 V+ V9 X$ `! b, j
  9368.     (setq data-pt-indicator (+ 1 data-pt-indicator)); h1 Y- e/ w" R. @9 E
  9369.     (set_tile "data_ctr" (itoa data-pt-indicator))
    + U6 G' f/ p0 X" K  }8 {
  9370.     (setq cur-11-rec (+ 1 cur-11-rec))" D0 L$ B5 o# X* Z$ |- u" t! f( m" U7 |
  9371.   )+ K1 v; b. H8 L7 M: E7 `' g
  9372.   ;;1 I' o+ h  Z. E. ]+ V# S
  9373.   ;; Modify SPLINE  R% V& [- |0 ?3 t8 N, u
  9374.   ;;
    3 z  s& V5 J  w2 H" W
  9375.   (defun modify_spline ()
    ! M( J6 i, h/ \% H0 `3 y) [
  9376.     (modify_prop_geom)! D  a6 d) S9 n- }# G
  9377.     (entmod elist)* \) ?- \2 J8 y
  9378.   ); S3 B  G, A* b3 z# t# O) u! E
  9379. ! K* S. V  G& r- H$ M: j5 a4 Q$ C
  9380.   (defun ddspline ()
    . x5 f) u: ^6 w0 f- h+ H+ t; Z8 a
  9381.     (if (not (new_dialog "ddspline" dcl_id)) (exit))
    " T8 L$ U# r2 u0 x) `7 D$ M
  9382.     (set_tile_props)
    ' W" Y8 {% h4 K3 \6 _5 n- D
  9383.     (set_tile_handle)8 z/ g: R( }- s, v1 @8 l
  9384.     (set_tile_spline_props)
    # B/ d1 Z& \/ a& ?
  9385.     ;; Display first control point- z9 `/ j6 \  d5 N( A( i- S
  9386.     (set_tile_cntl_pt)6 b& o0 S7 \4 d- V. Q* T1 Y. B
  9387.     ;; Display first data point) H2 c/ |" Z, V
  9388.     (set_tile_data_pt)
    $ _7 u/ D/ @7 j

  9389. . w* |9 P3 o/ B, ~& P+ q2 t
  9390.     ;; Initialize flags to indicate first time through the dialog.6 K# H$ q, j" ]+ Q7 M% Z+ \( ]
  9391.     ;; For control points and user data points the "next" buttons
    ! y/ S4 v* {* c( E. W
  9392.     ;; in the dialog call the appropriate functions./ s" y& U9 f) C: I
  9393.     (setq first-10-time 1)7 h, h% v; ?5 e3 L% o/ V
  9394.     (setq first-11-time 1)7 w1 g0 v7 U7 V% l# q2 R- t1 y1 `
  9395.     ;; initialize control point number counter: [6 ~# k3 A& O# s# u
  9396.     (setq cntl-pt-indicator 1)
    3 H" B% k% G6 g8 N/ `- y' z; L
  9397.     (setq data-pt-indicator 1)$ K$ G7 b) Q2 P6 |; Q' a& I
  9398.     (set_tile "cntl_ctr" (itoa cntl-pt-indicator))3 b) z1 k  {8 k
  9399.     (set_tile "data_ctr" (itoa data-pt-indicator))! Q; h* m9 A- d  {1 a
  9400.     (set_action_tiles)6 s3 c1 u: j( Q$ U7 @' k* a
  9401.     (setq dialog-state (start_dialog))9 w1 q8 R+ `! }3 k2 x6 i5 _, W8 m

  9402. ' W+ g5 P( v( o, z/ J5 I
  9403.     (if (= dialog-state 0)
    5 [8 V3 x- W- \
  9404.       (reset)
    8 A4 `: Z# m  c6 x& A
  9405.     )
    ( }: n& P# w5 s) q3 c0 l" O4 l- ~
  9406.     (if (= dialog-state 1)
    ' {- z! I- r' |0 H
  9407.       (modify_spline)
    2 g3 e/ t" q4 o8 a
  9408.     )- B8 Z% i- B1 T6 z: [# A
  9409.   )
    # i  ^2 d3 k* Y6 O, d( P/ B; M5 S
  9410. 2 D; E" A5 p! y
  9411.   ;;
    + p3 K% y& }# d  G
  9412.   ;; Modify DIMENSION
    6 H1 v4 C3 f. ~( ?3 ?; f8 Y
  9413.   ;;0 S3 I# }; U- b2 R
  9414.   (defun ddimen (/ dtypebit blkname bename sublist a stname n dimtbl1 O& F1 R7 e4 X: {
  9415.                    dimsty dimlist dimtext svtext dimovr sv_dvlist stlist
    4 l. Y' |$ Z  [) A
  9416.                    dimtype dimsvcurset)" a; _  P- F$ \# u; a. z
  9417.    (setq dimtype "DDIMEN"; H( ]+ @% G* W/ t. k7 r" ~
  9418.           dimsvcurset (ddimen_dimsty_restore)
    7 V: Z# `0 V. K  u# j
  9419.     )
    ) D4 b6 \8 x/ M9 G
  9420.     (if (not (new_dialog "ddimen" dcl_id)) (exit))
    ) I8 }, T. ?; v3 ]* [
  9421.     (set_tile_props)
    7 l' S2 g% p3 ]- ^) P
  9422.     (set_dimen_props)2 b2 f' S" b. R9 x. q
  9423.     (setq dimtext (cdr (assoc 1 elist)))% Q# J; h( k1 y' f3 x
  9424.     (set_tile "t_string" (if (= "" dimtext) "<>" dimtext))3 r( x: t# n2 f0 M) J% m+ c1 p) Y1 N: b
  9425.     (set_tile_handle)
    4 p* U: L/ }/ |  a2 N8 B2 o( z
  9426.     ;; Define action for tiles
    7 Z, J+ ~" h8 t- K( H
  9427.     (set_action_tiles)/ s; C# C6 f$ _2 _

  9428. / |+ B! @$ j8 ~! s7 W6 e$ L8 l, E
  9429.     ;; Set initial focus to text edit box.& I6 @( i5 ^% G8 s% C
  9430.     (mode_tile "t_string" 2)* z# j2 ]5 x- M& t1 {6 H

  9431. # ?$ N2 s) ?' S/ M$ [0 s
  9432.     (setq dialog-state (start_dialog)), Z. P% b( R# l7 m( _- C0 G
  9433.     (if (= dialog-state 0): a) |$ q% q( v% U6 {( d! }
  9434.       (if (= ddimmt 1)
    + X/ m; s0 I! C% Z3 X1 J
  9435.         (reset)5 r# D7 G" J# W+ f  V* h6 |
  9436.       )
    8 O, E# J5 H2 l0 Z6 W  E
  9437.     )/ i  z+ Q+ {% O8 `9 t- Q
  9438.     (if (= dialog-state 1)* d9 E' Q) a- x/ V; ^
  9439.       (progn
    + ^( _% ^% W2 R/ |( y; v4 W
  9440.         (if (/= dimsty stname): ]+ R' V" R3 n9 G* y. @
  9441.           (progn" [. f7 F5 `6 G% G) F
  9442.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case( ^4 l6 r  ^0 {. {% \- V
  9443.             ; doesn't have it./ v4 g+ r# D/ N+ r
  9444.             (if (null (assoc 3 elist))- J+ v4 G. }$ U+ j
  9445.               (setq elist (append elist (list (cons 3 dimsty))))
    3 K3 B  e# W5 a. s6 @% P
  9446.               ; else just replace it.
    : h3 ?$ M+ P4 r
  9447.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))$ Z, s: I2 }/ w5 ?1 t7 `" h
  9448.             )
    5 A: d! T- \# G) h: Q. |8 F, T
  9449.             ; refresh sv_dvlist with new dimstyle.6 W8 `  f9 b: a% T) G' j, A9 ]% W* S
  9450.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))$ L$ t1 k( y+ y: d; Q
  9451.           )
    - Q# P' s3 K& q& c" P% r" c# X  W
  9452.         )
    8 ~, Y" m( S4 ~: }8 V
  9453.         (if (not (null dimlist))   ; attempted to change dimvars# D% J0 ?- J" y" Z0 Z
  9454.           (ddimen_complist sv_dvlist dimlist dimtbl)
    ! D% q; y1 t" q. D: g6 H
  9455.         )% o4 v1 g: ~7 q5 p4 J
  9456.         ; Modify dimension text
    # i7 n7 I& E/ L3 W1 g2 U: }- [4 R
  9457.         (if (/= dimtext text)
      k! z4 m$ ?$ v# P& M
  9458.           (progn' g& x; E  m+ p0 T1 H: c
  9459.             (setq dimtext (if (= text "<>") "" text))8 `) r1 }3 `' x4 c
  9460.             (setq elist (subst (cons 1 dimtext) (assoc 1 elist) elist))$ h5 O( A* m- B* p
  9461.           )
    7 X  X  W) z5 ]! Y, _
  9462.         )
    ' X8 O. q/ r: Y( V: F, M
  9463.         (modify_properties)% g" t: O) K+ M7 i6 x
  9464.         (entmod elist)! q# J6 f& ]$ r5 z* @
  9465.       )' z# F' H- Q4 c+ L" p
  9466.     )
    8 N1 [! \$ R* P0 j$ N
  9467.     (if (= dialog-state 4)4 n3 g  F: m' B9 b
  9468.       (progn
      @3 I  Y6 ]! w0 F/ h" v
  9469.         (setq ddimmt 1)
    3 U; M6 F8 Y% D+ H9 u
  9470.         (if (/= dimsty stname)
    , a5 J" {* V+ w8 d6 Q8 F9 F& R
  9471.           (progn
    8 V' @! F6 y* r# m  T
  9472.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case
    ( y1 k  j3 K2 j  Z8 Z( m
  9473.             ; doesn't have it.; k! q; e2 ^  G3 C2 h5 T1 m2 V7 {) m. e1 o
  9474.             (if (null (assoc 3 elist))
    , u+ T6 V9 W8 M5 M
  9475.               (setq elist (append elist (list (cons 3 dimsty))))* G4 ], R: L2 q( p. g
  9476.               ; else just replace it.
    ! A. _' w1 h7 t3 v* u% i1 `- s, K
  9477.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))
    : m- m8 y4 |0 J% g3 r( I; B
  9478.             )
    3 Q7 v9 r' ^9 ?
  9479.             ; refresh sv_dvlist with new dimstyle.. o. r6 v- [4 P
  9480.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))
    * W, r- V% i- M" U
  9481.           )
    - G7 l" k; h/ }1 s
  9482.         )5 ]7 I) s, q& N/ b3 V
  9483.         (if (not (null dimlist))   ; attempted to change dimvars
    2 E2 B- ]' r3 A4 ~; N
  9484.           (ddimen_complist sv_dvlist dimlist dimtbl)" ^6 O+ f- t. c0 A
  9485.         )8 u0 o: [" ]. i7 L9 w  Q
  9486.         ; Modify dimension text
    * l" P/ A, P/ l* Z* X' a; l
  9487.         (if (/= dimtext text)
    + P; e+ `- g9 \, j' Z6 w
  9488.           (progn
    4 i% v% ^! X, N# K9 A7 n
  9489.             (setq dimtext (if (= text "<>") "" text))" j& ~  P. y# }  W
  9490.             (setq elist (subst (cons 1 dimtext) (assoc 1 elist) elist))
      f, B5 a* K. C  k$ S& O6 G+ Z; a1 Y  P
  9491.           )3 P% Z6 a3 \4 b/ v3 A
  9492.         )+ y9 _) W/ i9 ~& z  E1 Z- k- B
  9493.         (modify_properties)
    ) d  @, Y' T! T  s% }( O
  9494.         (entmod elist)
    2 n+ ^. z( G7 R2 _9 N
  9495.         (safe_ddedit ename)
    . W7 j- M" L3 a; b' ~- z! w
  9496.         (setq elist (entget ename))
    9 U8 f0 k9 N9 u3 f; k/ o
  9497.         (ddimen)9 N8 E) n3 c  e3 t
  9498.       )
    6 `( c0 S0 T+ i/ I9 ?
  9499.     )! T2 |7 J( @% J$ c
  9500.     (ddimen_setvars dimsvcurset)      ; Prepare to exit
    + g% B& U# |- r) b% _1 k0 k3 F
  9501.   )$ U! \" e) S' l2 U* F
  9502. 7 s0 f! \" s" r
  9503.   ;;. L4 a6 W- N( Q7 g% v3 u
  9504.   ;; Modify TOLERANCE  K0 H' u; i2 Y' H1 \
  9505.   ;;3 ]: i& U' i: W, q9 [9 o
  9506.   (defun ddtolerance (/ a stname n dimtbl& i; Q/ L7 r9 d8 Z
  9507.                    dimsty dimlist dimovr sv_dvlist stlist dimtype" x+ h  ?1 _8 ]. k/ t% w$ b7 t5 U
  9508.                    dimsvcurset)
    " W7 I7 l( G  n/ Z4 f# `# V
  9509.     (setq dimtype "DDTOLERANCE"# D& w/ l! E0 q  R$ Q7 d9 f0 P
  9510.           dimsvcurset (ddimen_dimsty_restore)
    9 d+ L* r9 \  O- L5 J
  9511.     )
    / z3 d7 z8 {; b) c/ E* B
  9512.     (if (not (new_dialog "ddtolerance" dcl_id)) (exit))3 z# F# h1 Q6 d$ ^
  9513.     (set_tile_props): j& L; E+ x4 x7 Y( ?
  9514.     (set_dimen_props)6 {  A2 W- x9 `4 F7 x8 S
  9515.     (set_tile_handle)
    : K4 _9 }: l/ l- R3 r# h, C
  9516.     (set_action_tiles)
    3 T( {4 O. H; b: D" N* N2 _6 s1 z
  9517.     (setq dialog-state (start_dialog))
    " s7 ^; a- Q& }1 r2 P+ f
  9518.     (if (= dialog-state 0)  B' W- Z- d' L5 A
  9519.       (if (= ddimmt 1)
    & [2 \5 y7 [4 ~0 E8 |
  9520.         (reset)
    % b1 g, u+ v& E$ ~) n1 E( l
  9521.       )6 m5 F- t+ n/ q" H( }5 M" Y1 f( Z
  9522.     )
    ) n" j& s/ I1 M7 Z$ D0 @; S3 {; @3 g
  9523.     (if (= dialog-state 1)& P. T0 _3 F: t8 p
  9524.       (progn% D% G' M2 I8 ~* l# e
  9525.         (if (/= dimsty stname)
    ' X: P8 o6 @7 Y6 A
  9526.           (progn
    , @% \! Z* ?* W3 K8 Z
  9527.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case7 y' \% k7 B3 M! m3 Y) P& U
  9528.             ; doesn't have it.
      g5 Z7 Y8 R# n) V  `
  9529.             (if (null (assoc 3 elist))
    / i8 d0 f" ~  r
  9530.               (setq elist (append elist (list (cons 3 dimsty))))
    # o" {1 e3 q  ^
  9531.               ; else just replace it.
    . n. v$ @  S! H" @# z1 ], \+ k
  9532.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))
    9 y  A) N. @1 P, B
  9533.             )
    & l4 y; h7 [* w. s! w4 G- \  b4 _
  9534.             ; refresh sv_dvlist with new dimstyle.
    ; r$ ^+ `7 |: [7 B
  9535.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))% [1 z; ~, |8 b
  9536.           )) s( e4 j( n4 P. S
  9537.         )
    / A2 _3 s  Y# ~8 n/ B2 k' R
  9538.         (if (not (null dimlist))   ; attempted to change dimvars
    - P$ ^5 S/ q. I
  9539.           (ddimen_complist sv_dvlist dimlist dimtbl)6 ?+ n* h  w8 p
  9540.         )$ ]- W% `9 l, L5 @% C  [& a& z* ^
  9541.         (modify_prop_geom)
    * @- z$ M7 f6 a- F6 c- p
  9542.         (entmod elist)
    $ p: |3 L5 I: g8 I' d
  9543.       )  x" K, P4 E* B6 N4 d/ ^( t
  9544.     )
      h- L( a! t# o6 y% F
  9545.     (if (= dialog-state 4)+ X# c& P0 \( n9 Y
  9546.       (progn
    ( A5 E# q& [4 ]8 X/ M) g0 Y' N
  9547.         (setq ddimmt 1)2 v$ a3 Y' l1 Q, e
  9548.         (if (/= dimsty stname)2 n/ e% k1 j+ L: I
  9549.           (progn
    7 s" |2 [' F7 J( o, H( I5 [
  9550.             ; Be sure to add (3 . dimstylename) element. R12 *UNNAMED case" i3 o9 s. _- }* z9 ~  z8 b
  9551.             ; doesn't have it.
    7 X) k: p1 m* y2 o2 C) l9 S
  9552.             (if (null (assoc 3 elist))- q: x; O$ L0 U, @
  9553.               (setq elist (append elist (list (cons 3 dimsty))))" N3 g" A% N/ ?* `9 ?% d# _
  9554.               ; else just replace it.
    ; U$ D+ ^& z! |; ^! Z
  9555.               (setq elist (subst (cons 3 dimsty) (assoc 3 elist) elist))- D$ c! l* B9 D
  9556.             )
    . h8 c- u1 a6 y3 V. ?: ~& k5 N; X
  9557.             ; refresh sv_dvlist with new dimstyle.
    0 X0 w4 K0 b/ |+ A
  9558.             (setq sv_dvlist (tblsearch "dimstyle" dimsty))$ y1 X) B8 }) m* s6 g; {( z" A. F/ W
  9559.           )
    * W% Q4 f8 M0 ^% @
  9560.         )0 D; [; a3 E, ?
  9561.         (if (not (null dimlist))   ; attempted to change dimvars
    $ r* Z" n& g$ z
  9562.           (ddimen_complist sv_dvlist dimlist dimtbl)
    & p# W  |% v7 B+ F8 U: m
  9563.         )# \. G7 J; H8 F3 b5 E
  9564.         (modify_properties)% P; M! f0 o/ t7 b/ c; K
  9565.         (entmod elist)6 R# y+ H, e+ S0 U" Q
  9566.         (safe_ddedit ename), ]! g. E  ^) @6 |& j
  9567.         (setq elist (entget ename))8 E( Z) f+ W( M& j3 G/ ~+ r* U
  9568.         (ddtolerance)8 z8 k+ q5 M- U2 {2 E# S. z6 [
  9569.       )
    3 \3 L( ~+ Y1 ?+ l- {
  9570.     )* ^: V% l' P3 @
  9571.     (ddimen_setvars dimsvcurset)      ; Prepare to exit9 \+ x1 R' ?) t, X0 r2 H- [# O
  9572. )
    : u$ I6 ?7 I3 O
  9573. " H8 R7 k4 R* ?  {! D
  9574.   ;;6 j# @3 }$ q& Q. k6 P
  9575.   ;; ddimen_dlg - jump to ADS ddim module; [3 i1 D5 W: M* N2 \. `+ D
  9576.   ;;+ p1 M- ^$ U% f; K. \# J" s

  9577. $ ]# s1 {6 i0 Z2 g
  9578.   (defun ddimen_dlg (dimtype tile dimsty dvlist / dimlist)6 a6 _7 L! T! v4 H) J
  9579. + a( J; j4 O0 ?2 B2 X7 e. {
  9580.     ; Jump to DDIM with overrides if any.
    / L7 O0 Y( W2 O* `5 i
  9581.     (cond ((= tile 11) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Geometry7 R( R; j* c& X) c( H0 R: }; ?
  9582.           ((= tile 12) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Format
    ) g5 h1 c1 y, {/ ^, p  C2 S4 \
  9583.           ((= tile 13) (setq dimlist (c:ddim "DDMODIFY" dimtype tile dimsty dvlist))) ; Annotation
      |0 W4 t" \# Y4 ]# z
  9584.     )/ O  e8 C1 D# b2 v- i: V' b& G
  9585.   )
    ! p" B" i& @0 Z2 x# j1 N
  9586. 2 ]& t3 [; d& F3 F
  9587.   ;;2 P" u6 l& O" k& W: T
  9588.   ;; Dimension variables updated are stored as overrides.+ P0 d- A4 \( ^0 M& }7 U
  9589.   ;;
    & |' h3 N- N% D2 A: _( n2 B

  9590. # p" Y% K0 a6 _# q4 r& c: O
  9591.   (defun ddimen_complist (dimolist dimnlist dimtbl / i odvar ndvar& }$ S7 `) J# e
  9592.                           dv dime commandIssued)
    8 Q* g# }, r! P0 j
  9593. , \' ^( M0 N/ r6 c4 r
  9594.     ; Here we skip the following first three items:
    0 g! I" b4 }/ y
  9595.     ;   (0 . "DIMSTYLE") (2 . sylename) (70 . 0)7 E; j3 H5 p! `8 ?) H; z- M
  9596.     ;0 o5 h9 i$ T  o, B9 V# R
  9597.     ; The list comparison immediately begins with dimvar.+ B& ]+ V0 J# @6 b
  9598.     ;5 W1 ?; `6 p) B9 }
  9599.     ;  dimolist - original states of dimvars3 G/ L$ h. I0 _
  9600.     ;  dimnlist - new dimvar list which is of the resbuf's
    ( m1 G& T0 I- T" L
  9601.     ;  dime - entity name for the dimension! x9 L4 c1 }: {8 ?
  9602.     ;  odvar - value of dimvar for the dimolist: J; ?6 y. V* h
  9603.     ;  ndvar - value of dimvar for the dimnlist
    $ I8 _" J6 z6 g( _. l8 K9 ]+ O% {
  9604. $ _) R) C8 v( {3 u+ v2 K
  9605.     (setq i 3
    7 Q. S" Q5 ~  ?0 x5 R( |& Q; I  g
  9606.           dime (cdr (assoc -1 elist))
    + D, Z% [7 w; j
  9607.     )
    ( p8 t5 Q7 ?% @$ J
  9608.     (while (setq odvar (cdr (nth i dimolist)))
    ) O: G# F  G  j! W/ n* \
  9609.       (progn
    , d- n% P; d/ {
  9610.         (setq ndvar (cdr (nth i dimnlist)))' l* [. V" u" O" m8 {6 K4 N3 r5 f
  9611.         (setq dv (nth i dimtbl))0 Q0 \, o( _" i! x
  9612.         (if (eq dv "dimtxsty")
    $ h6 D4 h5 R" C9 \. t8 D4 `
  9613.             (setq odvar (cdr (assoc 2 (entget odvar)))
    ' j* O; }! K8 a2 h8 l2 j: G
  9614.                   ndvar (cdr (assoc 2 (entget ndvar)))
    ( c  W! ], U9 ?7 X! S- k0 {
  9615.             )
    * c3 E( U+ l. H+ O
  9616.         ): B, l0 J. k% K/ v% k
  9617. 4 ?9 M8 Q1 s$ j4 L
  9618.                 ;
    ' n0 Y5 `; V* B6 d! H8 A  A
  9619.                 ; In order for DIMOVERRRIDE to operate correctly with string  G9 \3 D7 M8 z* g0 D8 X
  9620.                 ; based dimvars, we must pass "." versus NULL strings.+ v2 K* i8 ~  P! p! [
  9621.                 ; In this case ndvar is the new dimvar value the user wishes. |1 L' l1 X( n: k/ U. ~3 a, L
  9622.                 ; to update on selected dimensions.
    9 [$ q& j7 N$ j
  9623.                 ;
    1 r( t6 q% I" |# U' \# g1 {- |4 u
  9624.             (if (/= ndvar odvar)" Y: q3 s! m' {5 y
  9625.               (if (= 'STR (type ndvar))& H5 f; g) i* }7 Q5 B5 N- C
  9626.                 (if (= ndvar "")9 v# ?0 g2 O* k, F
  9627.                       (setq ndvar "."))))
    # `! w6 ~! |- Y. B' m, s

  9628. * o! U( \; I7 d5 \/ E/ @
  9629.         (if (/= ndvar odvar): u" r" X* {7 I; Q
  9630.           (progn1 Q2 M$ @/ w3 V
  9631.             (setq dv (strcat "_" dv))5 g9 @+ e/ S* J0 U
  9632.             ;
    & d' J. u, M# x3 ^% h, |2 G
  9633.             ; Start the dimoverride command# p9 ]/ _  I0 b
  9634.             ;- b8 N9 T# j) S/ I* M& h
  9635.             (if (not commandIssued); R8 f1 i* k5 Z3 U+ ^' ]
  9636.                (progn
    8 I; ^, C' d) @$ O+ B# u
  9637.                  (command "_.dimoverride")
    + j7 A8 E  p1 a1 e
  9638.                  (setq commandIssued "T")
    : y& |) o# }+ r: e3 t( b
  9639.                )
    + ^$ U" G/ n" F- l- i6 e3 b" I. U
  9640.             )
    9 z8 ?- U0 g! ]
  9641.             ;
    7 c5 x5 L8 C5 i
  9642.             ; Issue dim overrides
    6 H' `7 J* n" Q2 n3 V% ^. V
  9643.             ;. ?% ]  }  M6 E& I! s. T
  9644.             (if (and (or (= dv "_dimclrd") (= dv "_dimclrt") (= dv "_dimclre"))8 ]% ?; x* O" }7 V( ?4 T1 k
  9645.                      (or (= ndvar 0) (= ndvar 256))/ h* @! H4 a( ]* n. u7 D
  9646.                 )
    " B; |9 w) D2 b5 |9 r
  9647.               (progn9 J1 f6 J. g  v; L0 e) R# d
  9648.                 (if (= 0 ndvar) (command dv "BYBLOCK"))1 [' J; b7 E) L6 o7 `
  9649.                 (if (= 256 ndvar) (command dv "BYLAYER"))
    ) }, O; _, g; a: Z
  9650.               )
    & W+ G: r; G- {+ d: Q+ A
  9651.               (command dv ndvar)
    1 ^2 |' H  v- ^  U+ G: ~1 q" L
  9652.             ). h1 `6 |3 `" N
  9653.           )
    + n" O. h6 h3 D, k$ M/ S# y
  9654.         )3 c- m& H2 Y- g! B
  9655.         (setq i (1+ i))2 ?! a; l: T& A( U1 A6 o
  9656.       )
    + }9 \! a3 G9 `  S! ]1 U
  9657.     )
    / U: q3 C. v. U& @# O
  9658.     ;
    + n: X& n9 T1 f
  9659.     ; Select Entity and terminate command
    0 z2 n( D0 e# }# d, R* D2 ?! a
  9660.     ;
    . I, d1 b7 u2 k1 Y  k7 G) O/ u
  9661.     (if commandIssued
    : x0 N7 z+ @3 t; \1 V
  9662.         (command "" dime "")
      G, c/ I9 C2 x' ?6 q9 q. w
  9663.     ), L* u4 R! H& ]' |
  9664.   )
    ( {; [/ h2 \8 B

  9665. ' I, L- G9 o' b
  9666.   ;;! |9 [7 _. Z" g5 t
  9667.   ;; Get style name currently selected style name.& ^0 H$ H6 c! R/ V4 h, H/ Z: F( h
  9668.   ;;8 p# y7 S" s- J7 L! K& O1 u7 g

  9669. 1 E- H9 W1 d6 ^- u2 f9 O# C
  9670.   (defun ddimen_style (/ dimsty)
    7 B5 j( E% `8 x/ r+ t4 p4 D& I5 W
  9671.     (setq dimsty (nth (atoi (get_tile "mod_style")) stlist)
    4 C* Y/ r: Z4 p& c( o
  9672.           dimlist (ddimen_getdimvars dimsty)
      ?# f7 k2 M8 I
  9673.     )
    $ j3 p/ s' m! B& h0 w; I
  9674.     dimsty
    * o8 n( H6 B: r, S( m
  9675.   )  j0 e4 a5 h" |, i* h" I& D
  9676. ) n( V7 \, A/ o" O9 k" `
  9677.   ;;
    6 a8 I% L' P; R# h. p
  9678.   ;; Set dimvars
    6 E' Y, j% D. Q
  9679.   ;;) K( K( w0 X' ?1 n4 p& z" f
  9680.   (defun ddimen_setvars (dimsvcurset / dv i)$ i1 |; ?, Y% X5 G; U3 `
  9681.     (setq dv (cdr (nth 1 dimsvcurset)))/ @4 X, D2 @1 U
  9682.     (command "_.dimstyle" "" dv)- j- r: z, ?+ n% a1 w
  9683.     (setq i 3)" c6 O# N& A4 H
  9684.     (while (setq dv (nth i dimsvcurset))
    ) W6 \) h+ J$ s  U! {8 W# a- S) _6 H9 o
  9685.       (progn
    5 `% r2 w# s( E2 _9 K' t) g2 D
  9686.         (setvar (car dv) (cdr dv))
    + p" R$ \2 ]3 A0 k
  9687.         (setq i (1+ i))
    ( Q, j4 z- p# [3 R
  9688.       )$ Y8 ^7 Z& w: T/ [
  9689.     )
    1 w- h" A9 [& w
  9690.   )
    " j$ F8 l& j& x/ \; Z1 g
  9691.   ;;6 H% u' I( r* Y; i# T6 A0 a
  9692.   ;;  End-of-dimension
    . H: x; m2 _$ A% M
  9693.   ;; ==================
    - d3 P: G# `% S3 F# `( @: x

  9694. + r% t* J" i5 _( }3 f; f% X
  9695.   ;;. Z. ]) z: j6 f9 f6 y2 ?
  9696.   ;; Sub-dialogues for properties.  Common to all object dialogues
    2 w9 e8 `7 e0 A' F1 u0 {
  9697.   ;;
    " V6 ]* z* T/ M$ `+ X/ L1 U1 }
  9698.   ;; This function pops a dialogue box consisting of a list box,image tile, and
    ( A9 w+ m5 B4 s; R0 ?/ e
  9699.   ;; edit box to allow the user to select or type a color number.  It returns
    0 K" R, h* N+ C3 H
  9700.   ;; the color number selected.
    & D* L8 {8 b4 C: x" ^; w& m
  9701.   (defun getcolor (/ old-idx colorno cname lay_clr)2 P: F$ J+ p8 M, J' ?
  9702.     (if (= (get_tile "error") "")
      [! q5 Y& |9 p4 y* h8 T* x, l2 E# P
  9703.       (progn! o, A% U1 z+ D. C, Q. Q
  9704.         ;; Get the color associated with this object's layer, for use
      h5 e: ~, F$ y) d2 V- U: ]
  9705.         ;; in the color swatch if the user selects color BYLAYER.* c6 e7 }1 d. |
  9706.         (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))
    % N# F+ W2 q: P+ u
  9707.         (if (numberp (setq temp_color (acad_colordlg ecolor T lay_clr)))$ U' x0 ]0 d+ }- n
  9708.           (progn
    - d" T' Q! h* ]# q- L- y. K$ o2 e8 U
  9709.             (setq ecolor temp_color)$ C, {* W. O* n5 \: L6 A
  9710.             (setcolor)( X  j4 U( J& ?; p/ \
  9711.           )
    1 M5 B( J: p3 G1 R
  9712.           (setq testcolor temp_color)
    ' w! L# L7 l; l. g1 ~- X/ Q3 L
  9713.         )
    ! p/ f/ u% m. m- K$ _
  9714.       )5 f$ ^+ r, b) v0 O6 C
  9715.     )
    ' i3 U0 ~9 `" B2 J4 y- W( z; m
  9716.     ecolor: V( c* t' u$ D$ v" \) \
  9717.   )- p+ e( ]+ D- O, m
  9718.   ;;
    % f5 p, p1 a7 J" Z: G
  9719.   ;; Function to set the color tiles.- j8 m6 b8 {2 ]) Y( Y) r) C
  9720.   (defun setcolor()
    9 }) a/ O% o0 R2 t) W
  9721.     (cond
    " Z: [4 w( k8 |! |; z
  9722.       ((= 0 ecolor)$ ], c" E* D" T
  9723.         (set_tile "t_color" "BYBLOCK")
    8 \! c  c9 r. N( z
  9724.         (col_tile "show_image" 7 nil)    ; show BYBLOCK as white
    % A: x, x7 z5 i1 R( x
  9725.       )
    2 p/ G4 I( P# |1 E( F: p+ C( |& B
  9726.       ((= 1 ecolor)
    8 W: L8 h, [+ Y
  9727.         (set_tile "t_color" "1 red")% b) u' ~  J" D7 Q$ T  Z6 B. _
  9728.         (col_tile "show_image" 1 nil)
    % ]. T; F. T8 H7 d" t1 S/ u0 q5 Z
  9729.       )/ m  V0 d. m- k, `. @3 ~- J
  9730.       ((= 2 ecolor)* T' m  u7 |! h3 }
  9731.         (set_tile "t_color" "2 yellow")* ]! Q8 S( @. A. o1 ?, z
  9732.         (col_tile "show_image" 2 nil)6 ~8 ^, O. Y1 t1 {' j9 E/ J
  9733.       )
    2 N5 e5 E' k) c" e' E2 h' y) ^+ H# G
  9734.       ((= 3 ecolor)8 _1 r0 D1 _9 ]% h8 y
  9735.         (set_tile "t_color" "3 green")! C; Z, ^1 _6 r: c1 ^
  9736.         (col_tile "show_image" 3 nil)9 c- i& y4 J$ }# _* J' O$ w9 @
  9737.       )" C1 X' B) o! w: Y+ \
  9738.       ((= 4 ecolor)7 D6 R9 t; a# ?6 C9 J0 V) W. w
  9739.         (set_tile "t_color" "4 cyan")
    2 B% y8 W7 ]$ q2 f! I; T6 Y6 S
  9740.         (col_tile "show_image" 4 nil)
    . p) p8 g. }' E: r  a3 E3 O
  9741.       )  R! ]0 X- t9 G, ^% v# z
  9742.       ((= 5 ecolor)8 h: z" B9 l8 h$ g% E6 g
  9743.         (set_tile "t_color" "5 blue")
    # Q0 V4 I( p, z2 [# u) n
  9744.         (col_tile "show_image" 5 nil)% }# o" l% w$ _* w( ^
  9745.       )
    ! Z  q/ `2 U' m# i8 N5 W; g
  9746.       ((= 6 ecolor), f. n' `; q+ n! j& s
  9747.         (set_tile "t_color" "6 magenta")4 X) r; W0 ]% c$ t
  9748.         (col_tile "show_image" 6 nil)
    ; v. M0 o& C9 `) V. t; \
  9749.       )6 M+ ^  g7 w9 R+ _. b
  9750.       ((= 7 ecolor)
    : w8 d/ H+ T+ e' C& \4 I# b; Z
  9751.         (set_tile "t_color" "7 white")
    " z9 I0 C% R5 n. x
  9752.         (col_tile "show_image" 7 nil)) I, Q3 O3 ^9 g7 a+ ~: E) Q) u
  9753.       )
    3 d4 ~3 E1 q; L  q/ ]% I2 s. [
  9754.       ((= 256 ecolor)/ c* m" Q8 x7 x, R/ t) z  R  @
  9755.         (set_tile "t_color" "BYLAYER")! B& l9 z" q: s2 ?8 E2 c. r
  9756.         (col_tile "show_image" (bylayer_col) nil)
    + f- V" I& }6 K; Y4 `- D
  9757.       )
    ! q5 X2 O$ u* T7 k* m5 ^8 i: e* C6 B: W9 l; @
  9758.       (T- e2 g7 [$ L; l8 w  l9 q% \
  9759.         (set_tile "t_color" (itoa ecolor)): H+ @- \" c% S2 S& e; N
  9760.         (col_tile "show_image" ecolor nil)! p: E5 w! M1 [/ b
  9761.       )
    9 D0 m# S+ W: f! g6 k0 a
  9762.     )
    ; h; Y. O- |+ j/ S
  9763.   )+ j5 p$ F% H9 I& J0 j- y
  9764.   ;;! Q+ O; Y9 a- a  T# f! g1 o% P
  9765.   ;; This function pops a dialogue box consisting of a list box, image tile, and
    " I) q. ^3 H* F' H' S: V5 y
  9766.   ;; edit box to allow the user to select or  type a linetype.  It returns the8 G, D6 |  O6 b8 ]
  9767.   ;; linetype selected.! Q* ?, o4 f% O
  9768.   ;;' ?5 R+ N# J, V$ U6 x
  9769.   (defun getltype (/ old-idx ltname)
    7 a1 h7 e, j6 v' a( S
  9770.     (if (not lt-idx)" {( k+ U. `& \5 z- [1 g" u
  9771.       (progn
    % F* U( n. T( y& t4 v
  9772.         (make_lt_lists)             ; linetype lists - ltnmlst, mdashlist2 H( l4 D$ E" M' z6 s
  9773.         (cond
    ( K8 J5 x1 @2 r
  9774.           ((= eltype "BYLAYER")' [& e& X1 |! b; `
  9775.              (setq lt-idx (getindex "BYLAYER" ltnmlst)))8 M! M+ [6 T  l- }
  9776.           ((= eltype "BYBLOCK")7 I: c, c8 c( [+ J2 h/ |- r, J5 B
  9777.              (setq lt-idx (getindex "BYBLOCK" ltnmlst)))$ t* M( ^& j" P2 r( I, f
  9778.           (T (setq lt-idx (getindex eltype ltnmlst)))
    ' A1 h( K0 x  [0 ~/ f5 Q/ I
  9779.         )! H5 @# B9 {6 E$ ^) U+ U0 l5 }
  9780.       ): _5 P5 h" R+ Y+ s9 T" _
  9781.     )) v% r3 Y; u* ]1 y& Z
  9782. 3 \7 r3 _5 J7 P( y
  9783.     (if (= (get_tile "error") "")2 {' n8 H  l( {' M8 T& P
  9784.      (progn
    ' f: {& T% h3 f$ F0 \
  9785.       (if (not (new_dialog "setltype" dcl_id)) (exit)), A) v. `# Z0 A$ l
  9786.       (start_list "list_lt")" Y4 o5 S2 S" p! w
  9787.       (mapcar 'add_list ltnmlst)  ; initialize list box% e* \0 c$ q: ]  U/ u# j# K1 L
  9788.       (end_list)6 V1 x, ?/ O% t- Q# U
  9789.       (setq old-idx lt-idx)8 |0 d2 T, K; C9 y* q2 Z5 Y
  9790.       (ltlist_act (itoa lt-idx))( f; @7 p) k2 Z
  9791. 3 Z! \1 N! Y# C2 `( k
  9792.       (action_tile "list_lt" "(ltlist_act $value)")& k4 r% Q+ X6 j* L/ L) A
  9793.       (action_tile "edit_lt" "(ltedit_act $value)")
    $ c# s$ ?/ }0 f( h5 B
  9794.       (action_tile "accept" "(test_ok)")
    $ q8 q5 H. _  t' s/ F7 Q
  9795.       (action_tile "cancel" "(reset_lt)")
    9 Q. n/ R9 k6 Z, ?% c2 c* l

  9796. ) d! |/ Y+ B+ x+ C
  9797.       (if (= (start_dialog) 1) ; User pressed OK
    3 U% C/ O7 W5 W0 g  w
  9798.         (cond
    ! f- B- C: k  A/ \( @# r- O
  9799.           ((= lt-idx 0)+ |& z3 A1 F9 _( }3 [
  9800.             (set_tile "t_ltype" (bylayer_lt))
    " R0 V9 c% E  L
  9801.             "BYLAYER"0 B6 {2 E! k* _% [2 ]
  9802.           )6 Z* ?  Z  }* g3 i
  9803.           ((= lt-idx 1)
    ' }# |: v" ?+ L8 F# T/ ~
  9804.             (set_tile "t_ltype" "BYBLOCK")
    : a* i4 i& W( ]
  9805.             "BYBLOCK"
    ! T- r$ a9 K* j3 e
  9806.           )
    9 r2 v% |/ S: e- C. z( F
  9807.           (T  (set_tile "t_ltype" ltname) ltname)5 f" W5 y& K* T3 `/ b
  9808.         )6 Q5 B. q3 z- j( t
  9809.         eltype5 F% d: ?2 t4 ~9 F  J& S
  9810.       )
    / Q( h5 G" O: j7 r, u" i: F
  9811.      )
      i0 O1 Z  }9 m
  9812.      eltype
    7 \0 Z+ ?8 Q+ i  r3 q
  9813.     )
    0 e3 u( f  [" Y3 E
  9814.   )! j5 z* L7 {6 c; Z
  9815.   ;;
    7 \; E- M' m. v9 T( d9 T
  9816.   ;; Edit box entries end up here
    , U* l& c& q! J
  9817.   (defun ltedit_act (ltvalue)/ A! _4 t7 P+ p
  9818.     (setq ltvalue (xstrcase ltvalue))
    . G) y+ z, j( g' _# I# z
  9819.     (if (or (= ltvalue "BYLAYER")
    ( q. x3 L8 X$ u6 J) c9 O
  9820.             (= ltvalue "BY LAYER"))
    2 R& W9 v2 A) }! L
  9821.       (setq ltvalue "BYLAYER")4 Y+ u! X+ v+ z( x& m# D1 ?3 M$ W
  9822.     )
    ' `/ P0 K: j: A" f8 g
  9823.     (if (or (= ltvalue "BYBLOCK"); Q* {3 B% w6 a- m+ r6 N1 V( q
  9824.             (= ltvalue "BY BLOCK"))
    - L1 ?6 n+ j; h% k% B6 p2 D
  9825.       (setq ltvalue "BYBLOCK")) V# w+ n& A% F. ~
  9826.     )  i( C9 F  {* a' r+ x0 H
  9827.     (if (setq lt-idx (getindex ltvalue ltnmlst))
    ( Z0 D( v8 e0 [0 o
  9828.       (progn; g8 B; y6 Z0 z$ q) P5 C0 p
  9829.         (set_tile "error" "")) f) e; y& C8 Y
  9830.         (ltlist_act (itoa lt-idx))
    5 q. N4 N! y7 |0 `
  9831.       )6 {1 A$ c& B) q' u6 i* V- k! n
  9832.       (progn
    2 r* [7 l- {1 z5 |7 n/ u/ N
  9833.         (set_tile "error" "Invalid linetype.")
    & @* W2 `. x9 u$ q6 A) H5 _
  9834.         (setq lt-idx old-idx)2 [7 I' M. W# ?7 s& }, S8 V
  9835. ;;        (mode_tile "edit_lt" 2)
    + c5 Z9 M( Q# q6 z7 C5 g& V" F" D
  9836. ;;        (mode_tile "edit_lt" 3)3 Q; `( `2 d4 O1 R0 t
  9837.       )7 o, h4 Y, G. Z
  9838.     )
    , \/ Q# i7 [  C+ I7 H+ E
  9839.   )
      n2 \' b3 c3 |* p3 _& D6 N
  9840.   ;;
    0 w: c# E* k' M4 c- s2 ?
  9841.   ;; List selections end up here.  Update the list box, edit box, and color% A& S, t9 v& H; d% X
  9842.   ;; tile.3 s' O& z& r, l9 z
  9843.   ;;
    % ~7 E+ l% I# `: ~3 \% Z
  9844.   (defun ltlist_act (index / dashdata)
    ; U5 v0 c' P( h. [5 Q! y0 Y, [0 h& P
  9845.     (set_tile "error" "")
    % ]9 i: u  A! Q! n
  9846.     (setq lt-idx (atoi index))
    ; x4 J* C9 O5 f, N) ^- i
  9847.     (setq ltname (nth lt-idx ltnmlst))
    4 _6 W+ W9 k5 x5 o
  9848.     (setq dashdata (nth lt-idx mdashlist))
    ' D6 j. d/ C6 j+ l# w7 i& M
  9849.     (col_tile "show_image" 0 dashdata). n1 h* |+ N" M. A$ k
  9850.     (set_tile "list_lt" (itoa lt-idx))
    0 ]$ N$ F4 R* T: e0 G# v% c
  9851.     (set_tile "edit_lt" ltname)
    + W8 H( i: S% T1 n- g
  9852.   )
    6 y  U4 V6 s: p3 Z; [
  9853.   ;;2 [# \3 w& K; `
  9854.   ;; Reset to original linetype when cancel it selected1 {' m( L& I% Y7 w$ z2 a9 n
  9855.   ;;$ E3 Q: \# N' V; N/ @, \
  9856.   (defun reset_lt ()6 L0 P, x* ?- {+ ?
  9857.     (setq lt-idx old-idx)* ~( k% n6 B& C$ _  H+ S
  9858.     (done_dialog 0). Q" \' F5 G6 U" s) J
  9859.   )
    ( o: {9 U; O: p, m7 r; G7 `5 X
  9860.   ;;# i3 t  q1 F+ l
  9861.   ;; This function pops a dialogue box consisting of a list box,image tile, and
    # R" F# Q* N( u1 Z
  9862.   ;; edit box to allow the user to select or type a layer name.  It returns the' H1 L* q( i% S7 T, B8 T
  9863.   ;; layer name selected.  It also has a button to find the status (On, Off,) I3 I; j4 F; V
  9864.   ;; Frozen, etc.) of any layer selected.4 t2 D$ q* r' c# N  J
  9865.   ;;
    3 L  @6 h% l8 @% _" H/ ?, d
  9866.   (defun getlayer (/ old-idx layname on off frozth linetype)
    ; H6 R+ c( X; Y4 C
  9867.     ;; Create layer list the first time the layer% s  J7 R/ a8 \% n0 v6 B7 u; Q
  9868.     ;; dialogue is called.* K7 l$ w  W7 u' D8 L) K% U) c
  9869.     (if (not lay-idx)  _7 A3 K3 d3 J3 `1 f6 p; m) t
  9870.       (progn
    5 f3 a% T3 E+ w- R* d
  9871.         (make_lay_lists): R! a) Q) H( n: {
  9872.         (setq lay-idx (getindex elayer laynmlst))+ ?) n* n9 e# D, @  a  T7 l: d7 [7 q
  9873.       )9 K5 p7 [+ }5 w6 p2 i* b
  9874.     )1 x8 w5 W! T9 z3 h& d9 N, K, @

  9875. . J( X& s! }# Y/ u
  9876.     (if (= (get_tile "error") ""). J' G1 J* `; X! M- k4 A
  9877.      (progn
    3 D2 F. w! g) r2 u' c
  9878.       (if (not (new_dialog "setlayer" dcl_id)) (exit))5 K# M- R7 R8 K$ ?. {# U, h
  9879.       (set_tile "cur_layer" (getvar "clayer"))9 |$ r) G' C9 f; {( E( I' C
  9880.       (start_list "list_lay")
    2 }7 U% x, U: B+ T
  9881.       (mapcar 'add_list laynmlst)  ; initialize list box
    ; N* h7 {9 N0 ?) [
  9882.       (end_list)+ \1 ?% N/ s( K8 Y; V
  9883.       (setq old-idx lay-idx)
    0 r  h7 ]. l0 a' H( L$ Z" g# \
  9884.       (laylist_act (itoa lay-idx))
    7 D/ X: M/ a+ q2 f
  9885.       (action_tile "list_lay" "(laylist_act $value)")
    . Y# ]# D9 g5 }, ?
  9886.       (action_tile "edit_lay" "(layedit_act $value)")2 o* a0 r7 Y# G
  9887.       (action_tile "accept" "(test_ok)")4 n4 P& K5 V9 W) m6 V! S  |
  9888.       (action_tile "cancel" "(reset_lay)"). K) w& o/ R  l4 L0 u- M" b! D
  9889.       (if (= (start_dialog) 1) ; User pressed OK
    $ ?5 {; G8 E$ p- q$ A6 G
  9890.         (progn
    / b. Q  T& j+ }, N# S% K! p
  9891.           (set_tile "t_layer" layname)
    9 g1 D+ G3 ?+ O4 m. ~" x/ |
  9892.           (setq elayer layname)8 T) u+ ]+ ^3 P- ?# n  A1 O
  9893.           ;; If layer equals bylayer reset color tile
    8 B, F  D  F  c% P' \$ K( G
  9894.           (if (= ecolor 256)
    - ]- E! I. ]* T2 G
  9895.             (col_tile "show_image" (bylayer_col) nil)7 V! S4 V4 H% a2 k3 G6 Q  j3 S
  9896.           )
    7 @# S/ m; I( E$ h2 o
  9897.           layname0 E4 A" G1 ~$ Q8 M" }: z. [  e
  9898.         )
    8 k2 Y% T/ J# _7 R6 ^6 Q
  9899.         elayer
    8 A1 H6 F  b5 y0 v" C: W
  9900.       )8 k$ n- S! Z, [1 r7 ]; \" \
  9901.      )8 j0 f; s3 G  v' j4 F
  9902.      elayer3 Z! e- ^6 i& K& G) ^
  9903.     )+ O- o1 D% j3 G
  9904.   )
    & P! }( b$ K7 X8 A8 L7 p7 d
  9905.   ;;3 X; P: f$ o; u2 ?5 i
  9906.   ;; Edit box selections end up here.  Convert layer entry to upper case.  If
    + B* S: K! K( c9 r
  9907.   ;; layer name is valid, clear error string, call (laylist_act) function.
    ) v( n! w$ b2 ~. Z) ]$ Q
  9908.   ;; Else print error message.
    4 T' |6 a; r1 @7 h4 [$ a
  9909.   ;;
    0 M4 L3 W% M/ a4 S# x
  9910.   (defun layedit_act (layvalue)
    . _# E3 b# S) i9 _  ^
  9911.     (setq layvalue (xstrcase layvalue))& d! P  {; s* X* B& \+ V
  9912.     (if (setq lay-idx (getindex layvalue laynmlst))
    3 y2 ?4 |; p6 m: z+ W
  9913.       (progn& C) v0 [$ R% R1 [
  9914.         (set_tile "error" "")
    ) n% B2 I3 K2 D, D
  9915.         (laylist_act (itoa lay-idx))4 v* S3 E* R. _% ]' Y% O6 {
  9916.       )
    % X) I( m7 J# K/ L+ d1 V
  9917.       (progn
    ( F9 o% n2 E/ @1 g* n7 l
  9918.         (set_tile "error" "Invalid layer name.")! @3 T- F+ u) M# t/ i& z3 J
  9919. ;;        (mode_tile "edit_lay" 2)
    1 \  Z; s4 b- q% _& _  s
  9920. ;;        (mode_tile "edit_lay" 3)* @1 N! t2 c+ R
  9921.         (setq lay-idx old-idx)& C+ g0 Y: `  a5 t
  9922.       )
    / f5 T% m3 c. @1 {. ~: M$ c% v7 ~
  9923.     )
    8 ]8 h6 c! J  H. q6 |
  9924.   )+ q3 n& O6 }% o6 L
  9925.   ;;3 b6 n3 }% \! ?2 K' }' D
  9926.   ;; List entry selections end up here.' e) V7 o7 ?$ s: S. s  `! }. s) S3 l
  9927.   ;;3 w3 X( d8 C, H: X' f4 G0 ?- \% y
  9928.   (defun laylist_act (index / layinfo color dashdata); i, I1 y' v% m
  9929.     ;; Update the list box, edit box, and color tile.
    5 b" ^# o7 L; C# E' E3 ~; q
  9930.     (set_tile "error" "")
    0 b# x6 T* c0 l. j/ z
  9931.     (setq lay-idx (atoi index))2 N% r8 H) e% o) H! T9 ?4 Z$ U8 Z
  9932.     (setq layname (nth lay-idx laynmlst))0 t9 d$ O8 Y5 s( y& R
  9933.     (setq layinfo (tblsearch "layer" layname)); t* C  u' K- j4 w# ]3 b& q
  9934.     (setq color (cdr (assoc 62 layinfo)))/ C. C: C9 }8 o3 b, g' _7 J( G6 R
  9935.     (setq color (abs color))9 E$ [7 t; h9 W' n
  9936.     (setq colname (colorname color))
    $ S2 a/ `( T& }! C: @5 `
  9937.     (set_tile "list_lay" (itoa lay-idx))
    # o; j0 R$ r) O* k) B$ \  {
  9938.     (set_tile "edit_lay" layname)3 }5 f" {' q! n5 A8 \( b$ u
  9939.   )
    - f( c9 x( ?' x1 f& A9 T% {
  9940.   ;;/ a( Q' b5 }' [2 Z
  9941.   ;; Reset to original layer when cancel is selected.' Y4 P2 K; \: l& l
  9942.   ;;
    3 U' `1 ^+ C1 v/ c8 J9 z
  9943.   (defun reset_lay ()
    2 ?# f# e# `- s! a' R! d( C- O
  9944.     (setq lay-idx old-idx)
    $ m- I8 g* T# K- @$ {/ y
  9945.     (done_dialog 0)3 V: |7 q8 Y+ g/ S7 g3 ^
  9946.   )1 K* H" V: G% R! \
  9947.   ;;
    ) ]6 K3 P$ a2 I
  9948.   ;; Checks validity of thickness from edit box.
    6 [( ~- N$ i/ c% ?
  9949.   (defun getthickness (value)
    " E0 H1 p4 b8 _3 t) J6 U
  9950.     (setq ethickness (verify_d "eb_thickness" value ethickness))
    6 S6 C1 W* U* S3 h2 W9 z4 _
  9951.   )2 d. n0 q* D) G5 N/ g2 ^/ m
  9952.   ;;
    - R9 L$ O5 U/ o! A, _3 |
  9953.   ;; Copy of (getthickness) for ltscale.  If more, make this function
    . I4 o6 x7 n5 ~. G8 }: T- @" e
  9954.   ;; generic.; S) A! R2 K$ a$ V3 ^
  9955.   (defun getltscale (value)
    4 y, R$ g6 E* ?9 P. P
  9956.     (setq eltscale (verify_d "eb_ltscale" value eltscale))
    4 z4 Q0 x% G' t
  9957.   )
    $ s/ r0 v6 }0 ~  j( R
  9958.   ;;! `! @% U, P* y' `
  9959.   ;; This function makes a list called laynmlst which consists of all the layer( E' T3 p) V8 R2 l2 K5 |
  9960.   ;; names in the drawing.  It also creates a list called longlist which/ ~; ^* X1 W; j8 s3 N
  9961.   ;; consists of strings which contain the layer name, color, linetype, etc.
    ( |4 O- h/ ^. J8 L( D0 L$ r9 T
  9962.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the' t2 x! J8 q  v* H0 h" t$ ?
  9963.   ;; same.
    / H- Q$ M4 Y  {& k+ M
  9964.   ;;' f$ r% t3 ~, l& e! b1 K
  9965.   (defun make_lay_lists (/ layname sortlist name templist layer_number)
    " v# q4 ], v: t
  9966.     (setq sortlist nil)( V, Y2 ?! \* A
  9967.     (setq templist (tblnext "LAYER" T)). s* L8 G' i( }* t5 ]0 U
  9968.     (setq layer_number 1)  k: d4 J! Y; n' k0 h5 n
  9969.     (while templist: B# N( Q- o+ U5 D$ N
  9970.       ;; No xref dependent layers, please.
    1 h( @1 x+ {. O, {2 M5 R
  9971.           (if (/= (logand 16 (cdr (assoc 70 templist))) 16)
    ; w1 o8 O; d7 D7 t0 B
  9972.             (progn
    * A6 [- H0 m3 J- f
  9973.               (setq name (cdr (assoc 2 templist)))
    + z) R! o) S& T/ u2 z+ k4 J
  9974.           (setq sortlist (cons name sortlist))
    - B; t1 g5 N! U6 \& V& T' L! A
  9975.         ); X* w, i" O4 C6 ?7 H% H
  9976.           )( }% d; }5 i$ `6 ?( z
  9977.           ; Get the next layer.
    ' r. g  C" M0 r! e/ o/ H- Z
  9978.       (setq templist (tblnext "LAYER"))7 h1 E- I. m; s& F( \
  9979.       ;; Not dead message..." ?+ ]7 P# @3 S) k) B; W
  9980.       (if (= (/ layer_number 50.0) (fix (/ layer_number 50.0)))
    % c+ P% _) x! O2 C
  9981.         (set_tile "error" (strcat "Collecting..." (itoa layer_number)))
    7 u' R. E. F0 o2 o, N. J
  9982.       )
    , N- F# l; f; q) Q
  9983.       (setq layer_number (1+ layer_number))
    + x! N- O7 t$ T
  9984.     )5 E, C( D' Q6 J7 b
  9985.     (set_tile "error" "")
    2 ]' W) R1 `/ V2 c; X& C. ^
  9986.     (if (>= (getvar "maxsort") (length sortlist))( X7 ]2 c# s, A& o) Q
  9987.       (progn
    ) F1 Z4 A8 @% h
  9988.         (if (> layer_number 50)+ J) l$ C1 R% U: y! s. `
  9989.           (set_tile "error" "Sorting...")
    3 ~7 X& B" |2 {3 J, k9 ]
  9990.         )
    . \3 R; F. o' m: a9 v7 }" y% f
  9991.         (setq sortlist (acad_strlsort sortlist))
    % Q4 J, e7 N: u
  9992.       )& ?4 K' G, c6 S& E( j
  9993.       (setq sortlist (reverse sortlist))( L) W4 {1 M9 e  w& I7 l. H; s
  9994.     )
    * O. i% f/ f) d* j) G
  9995.     (set_tile "error" "")
    ! l+ ^, G! \. g
  9996.     (setq laynmlst sortlist)
    . ~. ?( A4 R1 h
  9997.   )% n  J# a: A9 x
  9998.   ;;
    ! T4 n1 X& m9 n. [
  9999.   ;; This function makes 2 list - ltnmlst & mdashlist.
    " ]6 Y6 e0 n. x( a3 ~
  10000.   ;; Ltnmlst is a list of linetype names read from the symbol table.  Mdashlist
    5 \0 C# U& M% O. w
  10001.   ;; is list consisting of lists which define the linetype pattern - numbers
    6 t5 C+ i! u3 |4 n1 T: w3 q' @
  10002.   ;; that indicate dots, dashes, and spaces taken from group code 49.  The list: R" \" v& K! A; P+ L# y2 S  @7 n$ @
  10003.   ;; corresponds to the order of names in ltnmlst.! @6 D  m. y/ Z: u3 Y* F
  10004.   ;;- o4 w$ x* i) m# I! X
  10005.   (defun make_lt_lists (/ ltlist ltname)0 P4 J* w. X4 q  i+ U
  10006.     (setq mdashlist nil)
    7 y8 W& @7 l- M5 `3 k& a: z2 i) H
  10007.         (setq sortlist nil)6 j* v3 Y; Y# {
  10008.         (setq ltype_number 1)# `  f9 A5 S% @( Z
  10009.     (setq ltlist (tblnext "LTYPE" T))' v6 K: n/ F* {# E
  10010.     ;;(setq ltname (cdr (assoc 2 ltlist)))
    9 ]- w! `3 D, b( V5 ?: C! L2 _4 y
  10011.     ;;(setq ltnmlst (list ltname))
    ' M( H- n2 Z) k! u$ i' j
  10012.     (while ltlist3 t+ M  P/ `3 `1 M1 Q- O" R
  10013.           ;; No xref dependent linetypes, please.  ^7 v9 o* f7 l0 E' y% C* d
  10014.           (if (/= (logand 16 (cdr (assoc 70 ltlist))) 16)/ v/ \5 A+ S, t& e" d
  10015.             (progn
    2 V9 C+ j( K) C
  10016.           (setq ltname (cdr (assoc 2 ltlist)))- K1 b. t9 O% u( E7 C1 f
  10017.           (setq sortlist (cons ltname sortlist))
    + T. Q& \5 m1 o/ M
  10018.             ), {1 Y5 `( l. W
  10019.           )
    4 f" s, r0 t- W7 w5 s
  10020.           ;; Get the next linetype.
    / I9 ]: t% N  c& T
  10021.           (setq ltlist (tblnext "LTYPE"))4 x5 U- U# u$ D8 `: ?/ D  \& |
  10022. ' Z% B4 ^& }) s+ C  D
  10023.           ;; Not dead message..., {+ i! X; z6 c2 Y; b
  10024.       (if (= (/ ltype_number 50.0) (fix (/ ltype_number 50.0)))( r" |4 G7 ]" Y0 X
  10025.         (set_tile "error" (strcat "Collecting..." (itoa ltype_number)))
    , h) Y9 [2 L+ ?+ S& i0 _: v
  10026.       )
    % @# F. T& Q, S- {* h
  10027.       (setq ltype_number (1+ ltype_number))0 f  B$ L6 o2 Y3 q) @
  10028. . C$ H) H: v0 W' |- L& G+ _
  10029.     )
    9 x0 G0 q& F- v) w9 d+ j

  10030. ' Z& R( m( u; C% i: @: R
  10031.         ;; Remove Collecting message.2 {6 S# w" K& x& u- `4 D. s8 W
  10032.         (set_tile "error" "")
    ! ~6 P% F# e) A1 H+ l8 r

  10033. ) @6 s- \, ]5 A, H( U( x
  10034.     ;; Sort based on maxsort.
    6 o2 U, H" M( Q* m
  10035.         (if (>= (getvar "maxsort") (length sortlist))
    * t7 H7 \; g! m/ p7 G; a- O) r1 g8 }
  10036.       (progn/ M4 O+ r* ~, ~, A$ ^# o
  10037.         (if (> ltype_number 50)/ ~! E! ]& b9 `
  10038.           (set_tile "error" "Sorting...")8 {+ \2 ~! s' h! |" q6 z
  10039.         )0 I" ~; G! {4 h: B" U
  10040.         (setq sortlist (acad_strlsort sortlist))( p, ~8 K  `) [9 A' U$ w# W
  10041.       )
    5 N+ S- ~1 }$ P7 _1 m8 C! x/ e, h
  10042.       (setq sortlist (reverse sortlist))- L+ }4 ~$ N" I. @' t3 V1 A# u
  10043.     )
    ) h5 D+ h, t: ]# i* l5 {
  10044.     (set_tile "error" "")
    # D0 B8 p: l2 P- t
  10045.     (setq ltnmlst sortlist)/ i3 m: \2 @% g* D

  10046. , a3 j% v8 o4 d4 y# B# N
  10047.     (foreach ltname ltnmlst
    4 T$ Y4 h8 Y8 a$ d$ u
  10048.       (setq ltlist (tblsearch "LTYPE" ltname))5 n  P4 h1 T" L8 Q" N
  10049.       (if (= ltname "CONTINUOUS")0 B4 }6 Z* O6 i( p& [
  10050.         (setq mdashlist (append mdashlist (list "CONT")))4 t0 c1 {4 z8 H& Q. b
  10051.         (setq mdashlist% J1 J4 _- r+ O+ ^7 F4 i: F
  10052.             (append mdashlist (list (add_mdash ltlist)))- Q# r" c1 Q% q( s
  10053.         )
    ( }2 B$ t6 ^, r% S$ l) a
  10054.       )/ Y5 n% h1 }. u) h6 c! F  c! H
  10055.     ): o$ ?' q# X! E0 _
  10056.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))
    . O% E7 u) |  L. m# n) V: I- N
  10057.     (setq mdashlist  (cons nil mdashlist))7 b# {2 @. |% a; b
  10058.     (setq ltnmlst (cons "BYLAYER" ltnmlst))
    9 B- N9 t* N6 M' m/ R* S6 |
  10059.     (setq mdashlist  (cons nil mdashlist))% V8 E1 _3 Y4 L( b7 R
  10060.   )9 j7 j& v% j: P+ Q* _
  10061.   ;;
    " M) l- p, ~! H& F! y# R
  10062.   ;; Get all the group code 49 values for a linetype and put them in a list. X4 d$ o# ^4 ~, \3 }7 I5 x
  10063.   ;; (pen-up, pen-down info).! _- R3 @  [0 _1 i/ Q2 d
  10064.   ;;
    ( t$ S  x" q6 {
  10065.   (defun add_mdash (ltlist1 / dashlist assoclist dashsize). T' w/ C7 i3 N  d! l- V' @) Y$ ?
  10066.     (setq dashlist nil)6 a+ A( S) Z& p/ n4 k/ f
  10067.     (while (setq assoclist (car ltlist1))/ x/ [, F+ ?! X# m: f
  10068.       (if (= (car assoclist) 49). _  w& M8 E8 g
  10069.         (progn
      |2 S# W# r" Y# O: y
  10070.           (setq dashsize (cdr assoclist))
    ) B4 c+ T9 M) A4 n/ k* a; c
  10071.           (setq dashlist (cons dashsize dashlist))
    ' k9 ?7 D5 {* p5 J3 s1 z
  10072.         )/ Q$ M! V+ b, p* B- q
  10073.       )( t8 A2 r; h6 d0 v, X' }4 e
  10074.       (setq ltlist1 (cdr ltlist1))% C4 i, e8 ~: g$ q
  10075.     )  U3 o( X) C: n$ [7 x2 J3 b
  10076.     (setq dashlist (reverse dashlist))
    3 \4 p; g7 ]- {- _6 B& I# `
  10077.   )
    9 a* A/ Y) F: k9 y
  10078.   ;;
    & [3 y4 [; r" \+ H# Y7 d7 ]: e
  10079.   ;; Color a tile, draw linetype, and draw a border around it
    : ]# G' A9 s& g$ v8 ~4 m( K5 n' h
  10080.   ;;
    # @. y9 M2 n# P9 w3 }
  10081.   (defun col_tile (tile color patlist / x y)
    / L: \# X0 E' T" h( j! m; m6 S
  10082.     (setq x (dimx_tile tile))9 ^! V' |/ v- F8 e! J5 E
  10083.     (setq y (dimy_tile tile))% t" l6 \. [7 D! P+ @$ }3 B
  10084.     (start_image tile)4 h) v4 A. E+ U
  10085.     (fill_image 0 0 x y color)
    $ h  \) K3 T+ a# J) U; V
  10086.     (if (= color 7)
    3 w. w- o" o# M$ \
  10087.       (progn" w# F; K6 ?6 w# J+ W. o6 G; c
  10088.         (if patlist (drawpattern x (/ y 2) patlist 0))
    $ u5 R' x! \" s- G3 L7 u/ U' m  u% a! N
  10089.         (tile_rect 0 0 x y 0)+ M: }7 S% T: n+ z) [8 Q+ R
  10090.       ): P( i/ S# P5 _! q$ q! v% e0 d
  10091.       (progn& q5 |4 C$ A4 G" k+ O* A1 K) l
  10092.         (if patlist (drawpattern x (/ y 2) patlist 7))7 N4 ^/ X! `% h* `5 O
  10093.         (tile_rect 0 0 x y 7)
    & _- F- Q: v; @! ^& |
  10094.       )8 o% e' K' x$ l* H5 U3 n& ~& ~5 a: |! Q
  10095.     )
      _! N' i: E; m2 I0 R. V' Q: X
  10096.     (end_image)
    , ]. ]! {! g) r* S6 z5 ]
  10097.   )
    / f6 z+ u4 M* J
  10098.   ;;# E* l" _& a2 A3 a( R8 w
  10099.   ;; Draw a border around a tile4 }$ b+ C  z5 H6 _9 C
  10100.   ;;
    / m, r" B- h' g1 S
  10101.   (defun tile_rect (x1 y1 x2 y2 color)
    + q7 X6 M% H' T7 J
  10102.     (setq x2 (- x2 1))
    + v( V6 t- J3 E; [" X# y
  10103.     (setq y2 (- y2 1))2 i9 ^! z2 Q2 N/ I8 f
  10104.     (vector_image x1 y1 x2 y1 color)" b9 }1 K1 K" D0 r
  10105.     (vector_image x2 y1 x2 y2 color); f# ~. n5 j4 p
  10106.     (vector_image x2 y2 x1 y2 color)) q8 o$ L3 ^  \4 }) r) m
  10107.     (vector_image x1 y2 x1 y1 color)
    & }; N( w2 _& j; r, U0 m& H- R% }. v
  10108.   )* K: r6 I0 g, e* n
  10109.   ;;9 U' V- B3 f3 o$ t, R
  10110.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image# Y# m% f7 o5 p' G
  10111.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a
      `& w5 m, K! C5 K! M9 o
  10112.   ;; list of numbers that define the linetype, and color is the color of the, d+ }, b+ D! y& r' n
  10113.   ;; tile.
    4 B3 E0 z0 N) i& _
  10114.   ;;
    ( p4 g4 F% c# M& b: z( \* l+ H
  10115.   (defun drawpattern (boxlength y2 pattern color / x1 x2
    ! r: D. j8 Z3 B* Z$ A: C
  10116.                       patlist dash)
    . m0 }  Z9 h# {: z3 M( m  ~
  10117.     (setq x1 0 x2 0)/ X$ b# ^( `( W: d( ?
  10118.     (setq patlist pattern)) q# u1 X/ y6 g( g# E- ?
  10119.     (setq fx 30)- [8 j1 u& D. l
  10120.     (if (= patlist "CONT")
    / Q( w% v) T, K1 s. c% y: ]
  10121.       (progn (setq dash boxlength)
    8 W/ M, Y" U& R8 U0 V( R
  10122.         (vi)+ ~- D: A$ s0 L+ B
  10123.         (setq x1 boxlength)
    5 K0 P5 ?- B# n1 t2 Y  m3 M
  10124.       )  \5 B7 S( ]' O+ z7 x
  10125.       (foreach dash patlist" B" G$ v- l6 D; d- G2 h
  10126.         (if (> (abs dash) 2.5)
    - ~  q3 N* y6 w  b. e  N  i: @
  10127.           (setq fx 2)
    6 x0 B  |) ]2 M7 @
  10128.         )& B  w) |$ C  @# ^! @
  10129.       )$ G! n* E( p0 f
  10130.     )
    1 B, V) I7 j+ b- G# J4 V
  10131.     (while (< x1 boxlength): z# t) a5 V& A, W2 l6 e% y, \3 t
  10132.       (if (setq dash (car patlist)). P; I# V) I* g
  10133.         (progn5 A. b1 w' O) u! A
  10134.           (setq dash (fix (* fx dash)))% k  k% h8 B& p6 A; y" W
  10135.           (cond5 B$ J! {9 f0 k+ `: H6 ~
  10136.             ((= dash 0) (setq dash 1) (vi))
    $ h/ y1 M$ ~& g) D( \
  10137.             ((> dash 0) (vi))4 V6 a0 l8 T8 {  l0 }+ p
  10138.             (T0 i) w2 f; i5 p4 E: m
  10139.               (if (< (abs dash) 2)0 P) F7 I! H7 T
  10140.                (setq dash 2)& F$ Q; `7 @. p2 }9 e" z
  10141.               )
    ' P! \9 G( l  s+ ]3 S5 M1 D7 U
  10142.               (setq x2 (+ x2 (abs dash)))
    ) r3 I, R, X6 q/ Y, W
  10143.             ); A# U3 c4 r5 |+ j% m
  10144.           )4 Q6 W4 B0 I" I" f3 k8 g) Z% Z: `
  10145.           (setq patlist (cdr patlist))
    , O8 t3 V" O% P* r) [- A. F% G9 D
  10146.           (setq x1 x2)8 y) C  S  v8 N/ }6 N, b! j3 `4 k
  10147.         )' W; r+ T9 S0 V: |6 @
  10148.         (setq patlist pattern)
    " {( |% Q0 f! r! I5 L3 q. P
  10149.       )# Y4 d1 p# P$ |# M/ D3 n
  10150.     )3 Q" n/ P5 q0 I* Y( v
  10151.   )  q2 ?- X( N. h# t$ r
  10152.   ;;
    5 ]( V& e8 _9 h) p! S7 h  x$ {
  10153.   ;; Determain state of xclip' A5 m, x1 M/ U- W* i+ B& S
  10154.   ;; Returns the group 71 value of the spacial filter dictionary.! W) |7 p( a) p" \# |  u
  10155.   ;; If the entity doesn't have a spacial filter dictionary, this4 R. o+ L8 s( B% H9 S* H
  10156.   ;; returns 0. If it does it will return 0 or 1 depending on the0 z. x3 w4 v' P4 x8 e; ?
  10157.   ;; current setting of the state of the clipping visibility.; f+ I6 I7 O+ b% j2 l8 v  c1 _+ p
  10158.   ;;
    & u1 C# |% H' `/ }& k
  10159.   (defun xclipon(elist)4 u' B. D1 H1 x6 @) |' X4 i9 ~
  10160.     (setq hasclip T)2 @2 U0 F; u7 I1 `$ `  ?
  10161.     (if (/= (assoc 360 elist) nil)$ e3 M5 i! a4 H) X7 i+ j
  10162.       (progn" c( E: ~7 X9 g7 W" R. Z1 }: J& l& r
  10163.         (setq tmp (entget(cdr(assoc 360 elist))))' |9 {% z( w: p% F  A
  10164.         (if (/= nil (assoc 360 tmp))7 E. C6 m+ F# p/ I3 T
  10165.           (progn: U% L( T& D  e" m
  10166.             (setq tmp (entget(cdr(assoc 360 tmp))))
    1 g3 ^7 d5 K2 D: X
  10167.             (if (/= nil (assoc 360 tmp))
    ( G  ^4 |+ Y8 q. I
  10168.               (progn
    % X3 v( t9 B: T) b+ l4 |
  10169.                 (setq tmp (entget(cdr(assoc 360 tmp)))), F; t+ `: j4 o) `  y2 M2 ]. e
  10170.                 (if (/= nil (assoc 71 tmp))
    7 H5 E$ h; @) j% ^* b
  10171.                   (cdr(assoc 71 tmp))
    ! @6 M, c$ E& G) n  K3 O  \9 V
  10172.                                   (progn " u; Y# V2 q2 e
  10173.                                         (setq hasclip nil)
    $ S) W! J, \; Y' ~
  10174.                                         (eval 0)& Q* ]8 x* s2 h
  10175.                                   )% ?+ J6 y6 N6 ]+ |
  10176.                 )% C0 L' Q: w8 U& e
  10177.               )3 `& y" u: a7 X7 N4 j
  10178.                           (progn % @" |* S4 G2 Q5 c2 \  Z" q
  10179.                                 (setq hasclip nil)
    : w7 j% d6 x2 w' }3 ^, B
  10180.                                 (eval 0)
    $ o! n! u+ f9 M7 H$ o; n2 O
  10181.                           )
    0 ~8 I! c% W9 B2 C
  10182.             )
    ; p9 y; u- \6 P* c2 _. e1 d0 Z
  10183.           )
    * r9 A% m! \2 M( ~# x
  10184.                   (progn
    4 Z! R" e" I7 W) S
  10185.                         (setq hasclip nil)6 i: r/ m5 A4 ~* z, ?6 s
  10186.                         (eval 0)
    / L7 g" C) d+ J' c5 L0 O
  10187.                   )" M% k$ ]& q6 h7 x; u# q7 F
  10188.         )
    & g% k# R7 t" E' w
  10189.       ), u$ W1 m. n  @8 O% a
  10190.           (progn
      P0 V! o# c/ c6 x% Y
  10191.                 (setq hasclip nil)2 n* t9 c: N% W- U
  10192.                 (eval 0)9 _% L8 n' P& F; P! a: t' A
  10193.           )
    $ x4 x! {0 @- p+ @5 d. Q. {$ X3 R
  10194.     )6 x, e1 j- k0 t, N" p
  10195.   )
    7 J7 r. \" M$ @# s1 s8 N6 N
  10196.   ;;
    & z( X4 u+ y8 ]2 N. v" ]
  10197.   ;; Draw a dash or dot in image tile' P, g6 O$ z- ^2 p$ e& m
  10198.   ;;
    0 d! K" Z, _5 u! J4 R1 E
  10199.   (defun vi ()/ J$ k0 X# I  F/ J6 }  T
  10200.     (setq x2 (+ x2 dash))
    / k/ K) ?# j+ O+ @! G( X0 C
  10201.     (vector_image x1 y2 x2 y2 color)
    0 v5 E" _' T- ^3 t, c; P! O' {, v) ]6 T
  10202.   )& ?$ d* `" u& s. ~# v) A
  10203.   ;;
    * B6 y& I: t5 F) V- ?7 a& U$ F
  10204.   ;; If an item is a member of the list, then return its index number, else
    3 r# n1 n% b' t  s! @9 a  v
  10205.   ;; return nil.# [$ q" S: @8 X$ V1 c
  10206.   ;;& U$ i. ~9 h' |8 h/ i) v: G2 L
  10207.   (defun getindex (item itemlist / m n)
    : s& C; p6 B1 Z% l! p  M
  10208.     (setq n (length itemlist))
    * Q1 f+ [9 p! I
  10209.     (if (> (setq m (length (member item itemlist))) 0)
    ( o0 `# |1 F3 F
  10210.       (- n m)$ H. S+ L6 R' A% k1 }
  10211.       nil
    , U' j1 A# x7 W5 v
  10212.     ). G& N+ G5 x) J* A% p1 j
  10213.   )
    - m9 M1 D' d6 n  a( O
  10214.   ;;/ x! d3 `) ~0 J7 s
  10215.   ;; This function is called if the linetype is set "BYLAYER". It finds the% n4 L9 y5 e8 {/ c& R- T8 G
  10216.   ;; ltype of the layer so it can be displayed  beside the linetype button.
    4 a! u1 Z! c/ F+ X$ q0 e
  10217.   ;;
    & o: |( S0 }% _+ Q' S: E
  10218.   (defun bylayer_lt (/ layname layinfo ltype); N" L5 y5 r+ R+ M# I- C3 A
  10219.     (if lay-idx
    - R8 q# h7 C" H4 r$ F: q  o
  10220.       (progn9 h0 m7 `( f+ J, M- X% U% `% w% f
  10221.         (setq layname (nth lay-idx laynmlst))
    # y; b* b" ]8 Z
  10222.         (setq layinfo (tblsearch "layer" layname))
    * Z- O# e/ m. O
  10223.         (setq ltype (cdr (assoc 6 layinfo))). A+ N  \4 g5 B0 s1 G
  10224.         "BYLAYER"
    5 m5 h& a8 J7 ~9 a" L
  10225.       )$ G% g  Y- @" x" ?( |1 q1 `
  10226.       "BYLAYER"+ \2 [! c7 Y) ]- _
  10227.     )
    3 V& }/ M4 v# _3 b" C
  10228.   )* N0 z- g0 V7 R9 e. _, s1 H1 P& s
  10229.   ;;! i1 o. z6 f- T( W: W( C! W! e
  10230.   ;; This function is called if the color is set "BYLAYER".  It finds the color( k! F5 u1 O0 B% t- m( U
  10231.   ;; of the layer so it can be displayed beside the color button.* I5 ?! a+ j" `3 z- R
  10232.   ;;% ?) H. \5 W; E& Y- r
  10233.   (defun bylayer_col (/ layname layinfo color); T1 l( }. M0 g% K  G0 {
  10234.     (setq layinfo (tblsearch "layer" elayer))# a- `7 h" E9 ]0 V
  10235.     (setq color (abs (cdr (assoc 62 layinfo))))) L$ R) b' \9 @: B6 G; E
  10236.   )! p! y& h' U+ D7 R% P
  10237.   ;;
    % w7 M6 t( D, y* m
  10238.   ;; Used to set the color name in layer subdialogue.
    " i1 u1 M: q5 E* o, T
  10239.   ;;
    3 v& J: x$ l1 w( [
  10240.   (defun colorname (colnum / cn)( M9 E; H$ Z( |3 N$ Y/ e
  10241.     (setq cn (abs colnum))
    # s  C$ O1 u! ?
  10242.     (cond ((= cn 1) "red")
    ' g& c# h7 C% g1 S
  10243.           ((= cn 2) "yellow"), y  T' V# o7 V  Q, f, e
  10244.           ((= cn 3) "green")$ F/ \8 j6 l5 ]
  10245.           ((= cn 4) "cyan")7 [! o. V5 O! y
  10246.           ((= cn 5) "blue")
    4 x% x$ y" p6 v  s1 j# p# f# x
  10247.           ((= cn 6) "magenta")+ s* R# \4 E2 V0 N6 q* d0 ]. T
  10248.           ((= cn 7) "white")2 V/ O+ L6 |! ^5 G; g
  10249.           (T (itoa cn))/ L1 @8 Y& U8 @" g# @
  10250.     )
    , S* K" O8 {" ^2 O% D
  10251.   )
    6 N) x; s- P" Y1 w: B+ H. K
  10252.   ;;
    9 y' }2 I" m+ _' d9 N9 ]
  10253.   ;; If their is no error message, then close the dialogue.5 k- s5 a9 [$ G. G9 q: ?1 A! @
  10254.   ;;
    ; {1 v6 t7 `, b; A& X2 H* u9 K; }
  10255.   (defun dismiss_dialog (action)  s: N! V8 X& E/ k. `/ c0 ^
  10256.     (if (= action 0)
    % z/ \( ~% J) d
  10257.       (done_dialog 0)
    4 a0 J" F5 p" `
  10258.       (if (= (get_tile "error") "")
    " L: E2 V1 n+ ^; |
  10259.         (done_dialog action)& N! G- [9 D, Z1 E9 ], E
  10260.       )
    ' H' V( _5 d' x$ g: I. n
  10261.     )3 w3 Q& K6 g1 K2 A8 H4 x
  10262.   )
    6 j. k3 v6 |% ?# Q( Z

  10263. % m/ y5 B. W) U7 H0 C
  10264.   (defun test_ok ()
      j) U  P* X9 r$ [
  10265.     (if (= (get_tile "error") "")
    ; z' P0 V$ h5 b; T
  10266.       (done_dialog 1)% Y  M# d! J% I4 P0 y
  10267.     )
    " r; c2 r/ z5 O4 O3 c" n
  10268.   )
    : p! Y' X6 @* e* ?9 L/ A1 @
  10269. ' \6 C% B( c% t3 I" m
  10270.   (defun cancel ()
    ) s/ N. r8 D, ?5 k  ?
  10271.     (done_dialog 0)$ `( q4 U2 x0 p( |) v; m
  10272.   )
    / z- \) g# N8 W6 D* f
  10273. 2 P( F0 b% @" f9 {, h4 v
  10274. ;;; =======================================================================0 [  d# ^6 ]# u' L- s! U
  10275. ;;; SETUP layer and linetype lists for application, and initialize all
    9 J8 J0 f4 S% q* ~/ }+ |; T
  10276. ;;; program variables.# _0 D" ~; a& F# I& ^1 S

  10277. ! X) G' K; V% ~9 x0 P1 N
  10278.   (setq elist       (entget ename): ^3 h( y7 {) `6 b
  10279.         old-elist   elist/ c9 K5 g+ l9 f, D8 C
  10280.         modlist     elist5 {3 T. n* \, f8 C1 T) u2 o. q
  10281.         etype       (strcase (cdr (assoc 0 elist)))$ Y4 _2 J5 r* P
  10282.         ecolor      (cdr (assoc 62 elist))/ u! J! z' u. m
  10283.         elayer      (cdr (assoc 8 elist))
    ( N  d: V2 {0 U4 n/ _1 x: s$ c
  10284.         eltscale    (cdr (assoc 48 elist))) J# U  g8 d1 k, }1 ?
  10285.         ethickness  (cdr (assoc 39 elist))7 x) c+ D1 P, _% q" [, y
  10286.         eltype      (cdr (assoc 6 elist))$ Y7 T' G5 B2 g; B# n* m6 K( r
  10287.   )0 D, {1 f- N5 E2 M
  10288.   (if (= (assoc 210 elist) nil)
    # q; Q' j2 E9 s6 N/ ^
  10289.     (setq extru (list 0.0 0.0 1.0))/ F+ H: I( G9 _+ _; d9 n: v
  10290.     (setq extru (cdr (assoc 210 elist)))3 C5 q  t) ^3 |0 V: X: Y
  10291.   )
    & v* W* x! `4 ^" A2 }
  10292.   J. X, [+ o7 w/ U
  10293.   (if (not ecolor) (setq ecolor 256))+ M5 q+ z' f7 a, e$ L# Z
  10294.   (if (not eltype) (setq eltype "BYLAYER"))
    ( e. _$ v% y8 r- `% j* A; v
  10295.   (if (not ethickness) (setq ethickness 0))
    9 l6 a' H; _/ [. l
  10296.   (if (not eltscale) (setq eltscale 1))0 k1 a" J% n/ p& r9 H' ~5 {
  10297. ) ; end ddmodify_init% b. }& y: N  z. o; E

  10298. 7 y' |) Q6 C/ ^. `$ ?
  10299. ;;; --------------------------------------------------------------------------
    3 K. }% H! F1 t! x3 U% f( \5 J
  10300. ;;; Function: DDMODIFY_SELECT
    & q& D' H( Y( B# \1 k
  10301. ;;;* h  @: T# P9 G
  10302. ;;; Object aquisition function.: c. {  T6 J6 B- r; I! o6 o
  10303. ;;;
    ( y6 J1 L6 I% n0 T
  10304. ;;; (ddmodify_select)/ [$ p* j. B: `4 ?7 i( ]
  10305. ;;;! x' b0 ^) q) ]$ g) K4 y, O
  10306. ;;; Obtains object to be modified, in one of three ways:
    + ]( I2 p- M$ G* K( g
  10307. ;;;8 |1 i- X! w3 |) J% g: D6 Q
  10308. ;;;   1 - Autoselected.
    ) t$ P: u+ u" d1 K
  10309. ;;;   2 - Prompted for.
    + f4 U& U/ V9 Y. X
  10310. ;;;   3 - Passed as an argument in a call to (ddmodify <ename> )
    3 n5 N! O- A# Y3 V6 F
  10311. ;;;
    . J- Q4 `% f* s0 q* ^* K, ?
  10312. ;;; The (ddmodify_select) function also sets the value of the' n2 b  v  b  O: T( \
  10313. ;;; global symbol AI_SELTYPE to one of the above three values to
    ) k  B7 h2 O; Q
  10314. ;;; indicate the method thru which the object was aquired.7 g2 }" B2 L( d
  10315. ;;;
    " P5 a" x6 q  e2 ~' P( S/ g
  10316. ;;; This value can be useful to applications that want to RESTORE
    5 C- @7 D7 |: L. A
  10317. ;;; an object that was autoselected to its previous selected state
    4 f  o* ]# w: w2 @9 J. I  h( `
  10318. ;;; when they terminate, although there doesn't appear to be any! W: N3 t4 @! z) J0 S3 W- a! w
  10319. ;;; way to do this right now.
    2 \- S2 I9 E* o8 ~
  10320. $ x  n7 |/ I: }+ P
  10321. (defun ddmodify_select ()0 V. A2 r0 S6 z0 [) e" ]
  10322.    (cond
    2 }3 y. x- W/ Q( J1 L+ _, G- m
  10323.       (  ename                             ; (ddmodify) was called$ V0 i' u% n$ ?5 ~. e
  10324.          (cond                             ; with an <ename> argument; ?! {6 U1 v- x3 w# v
  10325.             (  (entget ename)              ;   If object is non-deleted5 V) ~  n! F$ O9 n6 `7 m* a
  10326.                (setq ai_seltype 3)         ;   then return its ename.
    ' p8 D2 T, l' `5 A
  10327.                (ai_return ename))))
    0 w- d. ~" M7 s& Y9 ]' N: I9 \

  10328. 9 k$ W; w$ k! ^+ |* L
  10329.       ;; return auto-selected , see ai_utils.lsp
    5 a; n. w5 I& `* r+ Y3 ?
  10330.       (  (ai_autossget1 "\nSelect one object to modify: "))
    / _8 G' K- a% O' e7 K9 C+ H, n

  10331. 1 |4 @( }, {* f4 f/ O- H: p$ S% a: J
  10332.       (t (princ "\nNothing selected.")# [! `  e4 U* x) V
  10333.          (ai_return nil))( q" A" U( [  g8 x
  10334.    )
    . l' J; `2 {7 X2 t0 n
  10335. )
    % Q6 F$ z' }, F& X

  10336. 8 |: P/ ^" t& a6 p; p
  10337. ;;; ============= Command line interface function =======================
    ' t" O! @) B2 x/ k( A8 p
  10338. ! R: U6 ~! O( f3 b* m/ U
  10339. (defun C:MMO ()
    % }9 a1 I" t" c' c& \
  10340.    (ddmodify nil)5 B; ~  V0 m0 r  \- h& L% B
  10341.    (princ)+ n/ L# R( _, H, U* o  Y7 e
  10342. )0 r9 V% i( u6 I7 I
  10343. # e6 [" q6 C% o8 n
  10344. ;;; ================== (ddmodify) - Main program ========================
    + Q- S: G$ c+ X( r
  10345. ;;;. f5 ?3 \% t; `5 G3 V
  10346. ;;; (ddmodify <ename> )9 H: V- N+ `; P3 m) B2 \
  10347. ;;;
    8 h4 e  y) I5 q7 L: N3 }
  10348. ;;; Main program function, callable as a subroutine., B+ K' M) N+ V2 |; x
  10349. ;;;
    0 E+ c  }: E- I: w
  10350. ;;; <ename> = object name of the object to modify., h/ K) p" `$ l2 A1 U9 V% E
  10351. ;;;
    . V' }) x1 M9 F9 A& n* A: B: t7 X
  10352. ;;; If <ename> is nil, then user is prompted to select
    6 k; Z( S8 T7 |$ c
  10353. ;;; the object interactively., r& P5 s8 i; O% _
  10354. ;;;- x+ B# K: A: L- t' h8 [" C& B- t
  10355. ;;; Before (ddmodify) can be called as a subroutine, it must# o* g4 P& z+ z7 |# _1 a. U; x: H' y
  10356. ;;; be loaded first.  It is up to the calling application to
    % w' U9 w4 C# {1 @3 t3 ^5 D
  10357. ;;; first determine this, and load it if necessary.
    * L5 W) ~0 P' Y; X
  10358. , @' ~- R3 W5 @$ T: g# O# @

  10359. ' G6 B' [1 p  k' J$ s7 q9 C
  10360. (defun ddmodify (ename /+ n' Y/ C" g$ \' F; {& F$ p  m- Z
  10361. 2ndpt              ell_calc_area            move_pt1               templist
    % [4 G# P3 G1 o* I
  10362. add_mdash          ell_tile                 n                      tempmod
    7 _9 D; D7 W0 B/ M+ |
  10363. alipt              eltscale                 name                   tempst_ang8 B# z# C( P" l6 S! ^- K
  10364. ang                eltype                   newpoint               test_ok
    ( H& Y" u8 e7 ?: q5 T2 ]$ c
  10365. arc_calc           emod                     next                   text
    * J' Z+ e: B4 ]6 `, Z" L& `
  10366. arclen             end_ang                  next_vertex            th-value5 ]' u7 q8 [# R# Y! M/ ]- z
  10367. assoclist          endpt                    obl                    tile6 Z, H* z9 s: ^1 q
  10368. atprompt           errchk                   off                    tile_rect
    # [7 R" E0 }, k1 T2 F
  10369. attag              ethickness               old_majrad             tilemode# ?; T7 W6 w8 |& a# k
  10370. attprompt          etype                    old-closed             totang
    ( P  z- G: O* T) S& D- S
  10371. bit                extru                    old-closedm            tstyle- t  w7 W, h5 _/ d3 O4 J1 n0 Q; K
  10372. bit1               fchk                     old-closedn            u
    7 p5 n- \) @: d
  10373. bit-10             first-10-rec             old-elist              undo_init: a; g" {% o  O: ]  e$ H1 j
  10374. bit-11             first-10-time            olderr                 upsd
    : Q2 j6 [# P! M1 U. a
  10375. bit2               first-11-rec             old-fit                v
    % F, b, B; I! D% v7 ^4 Y1 u4 U
  10376. bit3               first-11-time            old-idx                va
    * U" l4 X% Q( B' i$ ]' G: X- P
  10377. bit4               fit                      oldlist                value
    7 _$ v" }0 b/ W! _$ J1 A
  10378. bit70              frozth                   old-spltype            ver_4* t: n- Y, Q% p$ |. ~7 T# q  I  @
  10379. bit-70             f-vis                    old-u                  ver_ang1
    0 |! U- A- c/ ?7 m
  10380. bit75              fx                       old-v                  ver_ang2. k" T8 L* \) w4 N" i: x; H
  10381. bk-up              get_color                on                     ver_col
    % v2 }) Y  B& A9 p1 p! ]- x: p
  10382. bkwd               getcolor                 onoff                  ver_colsp# I+ X/ }% P  t- e4 K4 @; f
  10383. boxlength          getindex                 on-off                 ver_eangle6 A2 M, m  h% q" U3 n
  10384. bylayer_col        getlayer                 patlist                ver_hght9 v  q& D- i% I% L* q+ G8 t
  10385. bylayer_lt         getltype                 pattern                ver_majrad
    9 T+ Q, Q. @. z% o2 {8 r
  10386. calc               getthickness             pltype                 ver_obl
    ' v# G3 ?5 N6 O  M: m. |
  10387. cancel             globals                  polytype               ver_pt1+ z6 a1 `/ _2 [0 L% ~5 Q8 L- c
  10388. cir_calc           ha                       pre                    ver_pt2& q* ~( W9 P( M2 S
  10389. closed             ha-prev                  proplist               ver_pt31 N1 P4 g$ \! b  {; v, ?3 I. H) J
  10390. closedm            help_entry               pt                     ver_pt4
    ' \3 ~3 [2 g9 O) t% l: ?$ y
  10391. closedn            hght                     pt1                    ver_rad
    5 w! @2 g* a& n4 ^- L, n
  10392. cmd                icvp                     pt1_eq_pt2             ver_rot3 _* @/ _. q/ q7 N# k3 j  A
  10393. cn                 image_add_vector         pt2                    ver_row
    ( a' V0 O; g" s  A
  10394. cname              image_clean_variables    pt3                    ver_rowsp
    9 c' M& [; t3 t/ b% m' M# ]0 r1 A& v7 x
  10395. cntl-pt-indicator  image_cross_product      pt4                    ver_tag7 r! X) x: |7 \3 S( L% g: E
  10396. code_71            image_disp_opt           ptype                  ver_u
    $ K% `; f2 H& \) `- G/ [
  10397. col_tile           image_dot_product        radius                 ver_v
    % ?& T& g( O, K5 O
  10398. col-idx            image_normalize_vector   rational_spl_flag      ver_wid7 f* g/ f" B0 a6 E! O
  10399. colname            image_rotate_vector      reset                  ver_x1* e. O% W# ?% f- f6 X8 `
  10400. colnmlst           image_scale              reset_flag             ver_x2. N. d( F3 }0 a9 e! b
  10401. colnolst           image_scale_vector       reset_lay              ver_x37 ^! x4 v5 L# y; A5 `4 S! i
  10402. colnum             image_update             reset_lt               ver_x49 w1 u; X/ o, f$ }
  10403. color              index                    reset_uv               ver_xline_pt1
    $ `( {1 `% O9 C) h+ p$ \
  10404. colorname          inv                      rot                    ver_xline_pt2- w# W2 k6 M6 n. U, U" M# l
  10405. colorno            item                     rows                   ver_xline_x1
    5 `( P8 g7 ]& U1 T
  10406. col-sp             item1                    row-sp                 ver_xline_x2& p. Z# w# N% \8 n! r- K
  10407. columns            item2                    rrat                   ver_xline_y1
    ' |/ S: Y4 \% k6 Y. B: B; {
  10408. con                itemlist                 s                      ver_xline_y2
    4 G4 j; I, o5 g% f2 w5 u2 ~$ ~
  10409. coord              jlist                    set_action_tiles       ver_xline_z1% x8 v- l/ J3 [5 [2 l4 B9 w
  10410. ctr                jlist_act                set_just_idx           ver_xline_z2
    , M/ Z! N' u7 t: K  g( ^
  10411. cur-10-rec         just-idx                 set_tile_bk-up         ver_xscl
    ) |3 j1 q* v5 [. z. S" R
  10412. cur-11-rec         layedit_act              set_tile_cntl_pt       ver_y1
    * `6 P. }4 Z0 c2 I; p/ W" q( J
  10413. cvpname            lay-idx                  set_tile_data_pt       ver_y2( [% c; P  M1 H& k6 x
  10414. dash               layinfo                  set_tile_dirv          ver_y3( f' y- I5 a2 g8 a3 j+ |8 o7 t
  10415. dashdata           laylist                  set_tile_edges         ver_y47 h& S; z: G# K5 y( R  u- q2 g
  10416. dashlist           laylist_act              set_tile_endang        ver_yscl
    6 x; G; c/ a7 T/ Q9 q
  10417. dashsize           layname                  set_tile_hght          ver_z1' a& Y/ u3 |' E& A6 L- o
  10418. data-pt-indicator  laynmlst                 set_tile_icvp          ver_z28 R& I$ d( Q2 J! ]7 h6 |/ W. a4 L
  10419. dcl_id             layvalue                 set_tile_just          ver_z3
    5 @% R; o) T: z& j. q3 C
  10420. dd3dface           line_calc                set_tile_obl           ver_zscl* I/ m, @2 h/ Q2 H
  10421. dd3dsolid          linetype                 set_tile_prompt        verify_a) X; N% _" S9 W% _
  10422. ddarc              list1                    set_tile_props         verify_d
    2 r: Y4 f$ k) c* T
  10423. ddblock            longlist                 set_tile_pt1           verify_i% A, Q8 w; P8 I# Y. E' r5 U$ h! {
  10424. ddbody             ltabstr                  set_tile_pt2           verify_xline( h, C9 r$ I5 b: F2 O
  10425. ddcircle           ltedit_act               set_tile_pt3           vfy1 J* I4 M  b7 b/ x/ ]* N$ A
  10426. ddellipse          ltidx                    set_tile_pt4           vi
    4 v* C+ v: C; ]3 Y) d, d# p
  10427. ddgetprompt        lt-idx                   set_tile_rad           vlist  b1 C* h0 t1 C1 `: J+ F3 v
  10428. ddgettext          ltlist                   set_tile_rc            vname
    5 F! {$ n/ T( |
  10429. ddimage            ltlist_act               set_tile_rot           vpf
    " A2 k9 o( F- U$ ?6 h% S: K
  10430. ddimen             ltlist1                  set_tile_scale         vpid9 |4 n: `- [3 Z/ k2 ^, d/ D
  10431. ddleader           ltname                   set_tile_spline_props  vpldata  C, P/ `" a' U( {* k& S
  10432. ddline             ltnmlst                  set_tile_stang         vpn' e0 B! p/ ^1 X$ Z6 H; q6 {
  10433. ddlist             ltvalue                  set_tile_style         vpt1 f1 S/ e( @, ^/ U, l& n
  10434. ddmline            ltype                    set_tile_tag           which_tiles* S; |) q3 j. y: `# @# p( @9 l8 t
  10435. ddmodify_err       m                        set_tile_text          wid5 D1 m1 E- J9 L6 c) x  s
  10436. ddmtext            majrad                   set_tile_vpt           x6 n3 Q. W8 p- s% B7 R3 W
  10437. ddpline            make_lay_lists           set_tile_wid           x1+ m# V$ M5 M! n8 |; v! u
  10438. ddpoint            make_lt_lists            set_tile_xline_pt1     x2  _" c- x0 P4 u( ]# S( U. j( |
  10439. ddray              mdashlist                set_tile_xline_pt2     x3
    7 [3 W0 r" C9 h/ ^2 x
  10440. ddregion           minrad                   setcolor               x47 {- i! g. b" b$ w* P: H! ]. W
  10441. ddshape            modify_3dface            shght                  xdlist8 ?6 N% a2 c3 ^2 L3 M0 H
  10442. ddsolid            modify_3dsolid           showpt                 xline_pt1+ }  v) Y' L& b9 J9 O1 p0 x( r
  10443. ddspline           modify_arc               size                   xline_pt2
    ! ^4 `6 Q" q. p
  10444. ddtext             modify_block             slist                  xline_x1/ x0 Q. W2 j7 _: T$ P: S8 X0 d( K
  10445. ddvport            modify_body              sname                  xline_x2
    ; v8 @3 i/ x9 a& r& G+ V
  10446. ddxline            modify_circle            sortlist               xline_y1: E/ K6 G' I" N5 `, g6 ]5 G
  10447. denom              modify_ellipse           spltype                xline_y2
    ' g% {8 O- c7 [# |- Y. y
  10448. dialog-state       modify_image             ss                     xline_z1- S& k2 x: d5 G* a$ L' H2 x! H; Y
  10449. dir_pt             modify_line              st_ang                 xline_z2
    1 @6 t1 T4 `; J6 e5 r: I  j! L
  10450. dir_ptx            modify_mline             stpt                   xscale7 D2 _  \: x+ [( o
  10451. dir_pty            modify_mtext             style_act              xx
    0 R* c& x# D' D2 U+ p
  10452. dir_ptz            modify_point             style-idx              y8 O6 p" k% b6 J0 w, e+ U! Z& p- R
  10453. dismiss_dialog     modify_polyline          style-list             y1) o7 T$ F" W8 e& x) c8 ~
  10454. drawpattern        modify_prop_geom         tagval                 y2  \% A1 U8 z# T$ u- u: N
  10455. echo               modify_properties        temp                   y3( K; X- d5 ?2 F' l( K
  10456. ecolor             modify_ray               temp_color             y49 F# x' e# Q% A/ M, o/ \6 s" [% G
  10457. edge1              modify_region            temp_dir_x             yscale
    1 G6 V% t1 A) `% j- D
  10458. edge2              modify_shape             temp_dir_y             yy
      f6 R& x% h2 R9 e
  10459. edge3              modify_solid             temp_dir_z             z1( m% V0 U8 t0 k0 M2 {
  10460. edge4              modify_spline            temp_xline_pt1         z2
    - j+ I, c) n5 ^+ R
  10461. edgetest           modify_text              temp_xline_x1          z3# V+ y+ ?6 P& V+ I% M
  10462. elayer             modify_vport             temp_xline_y1          z4) b! v, p7 O* e+ C+ {% v8 q) `
  10463. elist              modify_xline             temp_xline_z1          zscale
    , D6 u9 c- L! D
  10464. ell_calc           modlist                  tempend_eang           zz. x$ L1 W( W/ {3 V
  10465. dir-idx            safe_ddedit              ver_MtextWidth         xcliponoff
    8 E2 j. B: A9 {
  10466. MText_style
    5 j4 Q% G; ^2 c, s% c- c* m+ w
  10467.   )
    ! M" J! t- y# u: D  D7 W3 m/ s

  10468. ) k. S, d5 q0 E, d6 p* P5 u
  10469.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho
    0 k# g  r  Q  h2 f
  10470.         old_error  *error*            ; save current error function! F1 u2 _' u+ |
  10471.         *error* ai_error              ; new error function$ l# v  ~) N, X2 s
  10472.   )5 @6 |/ k* b( \! K8 t9 S
  10473. . K' `& B4 f: ]9 m9 }  Y) U
  10474.   (setq old_pickstyle (getvar "PICKSTYLE"))          ; save old pickstyle
    8 ^% H0 _3 w0 a& f
  10475.   (setq new_pickstyle (logand old_pickstyle (~ 1)))  ; turn off group selection
    ) {; b* T9 M3 A8 t0 F* V
  10476.   (setvar "pickstyle" new_pickstyle)                 ; bit and set to new value1 m: |3 }' f3 P# y
  10477. $ {! C3 c& I" A7 z2 ]
  10478.   (setvar "cmdecho" (cond (  (or (not *debug*) (zerop *debug*)) 0)
    7 S- g6 C) @  Q" R  O
  10479.                           (t 1)))
    0 J( n- r' w6 s" b
  10480.   (cond
    . h6 [& g* p- [8 `4 T' I5 G
  10481.      (  (not (ai_notrans)))                      ; Not transparent?9 U& P' R, `4 F$ Z) f1 t% H
  10482.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?1 H* h" Y- t- B' b7 ]4 T
  10483.      (  (not (setq dcl_id (ai_dcl "ddmodify")))) ; is .DLG file loaded?( W( D3 @% X& k
  10484.      (  (not (setq ename (ddmodify_select))))    ; object to modify?
    ! ^4 l* w6 L; K9 e
  10485. 5 u. o# ?$ z% b% h7 S
  10486.      (t (ai_undo_push)
    & p  E( i7 Q6 U* K5 i8 ?3 O5 q
  10487.         (ddmodify_init)                          ; everything okay, proceed.( H0 b5 y6 I4 {- w2 _# b
  10488.         (cond
    3 O" N- E/ i( m0 c$ ~
  10489.            ((= etype "LEADER")* b/ G) |! z  \. W& y* D4 L
  10490.              (setq help_entry  "modify_Leader_dialog")  ^% k( K+ p* V7 ?8 d/ R4 c: ]9 C
  10491.              (ddleader)
    1 A5 [- s# U: K' n3 n4 W; _/ W
  10492.            )1 q1 x8 l1 r" b$ D! p. p" F/ v
  10493.            ((= etype "ARC")9 G+ h6 P& Y- X" P- T
  10494.              (setq help_entry  "modify_Arc_dialog")
    6 E6 x7 F7 r7 ?' E( Z+ y' ]
  10495.              (ddarc)2 W# d8 U; c$ i! b, q; I2 I
  10496.            )7 \; R; Z$ M0 U9 |" g
  10497.            ((= etype "ATTDEF")" `# A8 f+ g7 @2 i% i0 H$ [0 a
  10498.              (setq help_entry  "modify_Attribute_Definition_dialog")$ l1 l% n& `7 a
  10499.              (ddtext)) @: u4 G* i! z8 N- t9 k1 r6 Z2 F
  10500.            )+ F% H5 @7 p) K9 m
  10501.            ((= etype "CIRCLE")
    2 ?+ D  H# I$ s; w( g
  10502.              (setq help_entry  "modify_Circle_dialog")
    # g( x' ]  M- I. d- S4 y; W0 K
  10503.              (ddcircle)8 N' X; L6 c0 J
  10504.            )5 K4 {6 ?& L5 _9 [( c! O
  10505.            ((= etype "ELLIPSE")
    3 W/ @7 c( N8 n' N
  10506.              (setq help_entry  "modify_Ellipse_dialog")1 Q0 T5 v' j$ c2 J# l1 V* _
  10507.              (ddellipse)2 b' R: _' \' w( ?- T0 X: D" k
  10508.            )
    % @6 s2 ^$ m" a& t/ n
  10509.            ((= etype "3DSOLID")1 x! z/ _. e5 L
  10510.              (setq help_entry  "modify_3d_Solid_dialog")- [% n: p" v% s8 f1 b: o7 Q
  10511.              (dd3dsolid), D2 m% E  w  ], x
  10512.            )
    . b$ z9 g$ C) i8 k1 X  g
  10513.            ((= etype "BODY")
    9 P+ L6 W/ w$ J- }5 X# o
  10514.              (setq help_entry  "modify_Body_dialog")
    ( j) ]& z5 l# ?' E4 ?6 ?+ J
  10515.              (ddbody)
    ! X- l6 j% R3 L1 L$ d
  10516.            )
    " i! M- m( E/ ^
  10517.            ((= etype "REGION")
    ( g& w( [/ n3 Z* j) Y
  10518.              (setq help_entry  "modify_Region_dialog")
    . J; E' ?2 X- b# e' ~
  10519.              (ddregion)5 c- ]# n5 N  [; c, f4 I' H+ Z, K- E
  10520.            )* B& [5 _' X$ B$ ^
  10521.            ((= etype "HATCH")" I. M. _/ q3 n
  10522.              (setq help_entry  "modify_Hatch_dialog")7 {6 t; ~& \; c* ]/ L+ s
  10523.              (ddnewhatch)4 d+ B. b/ t: h
  10524.            )# j( ?* T, F# B* j# K- a; P
  10525.            ((= etype "SPLINE")
    5 A$ f& K( A/ O. B. `; ]
  10526.              (setq help_entry  "modify_Spline_dialog"), e- i+ E4 h" k5 h4 i) U6 E
  10527.              (ddspline)& Z# W8 g" U+ F4 {2 b' |, |1 l5 M
  10528.            )
    5 D; _3 l) C: H; T
  10529.            ((= etype "INSERT")    ; see ddblock for help_entry4 K; T' J: k- O/ b8 U7 u6 S$ ~" d
  10530.              (ddblock)5 y: s# @, n5 K. n2 L/ W
  10531.            )) F3 u4 w0 F: e! Y- o
  10532.            ((= etype "LINE")
    " W5 i4 _0 a) L2 m2 @9 n4 i' S
  10533.              (setq help_entry  "modify_Line_dialog")
    6 Y2 U$ o5 E8 I* s
  10534.              (ddline)
    3 H4 c+ U+ h0 v* f
  10535.            )! K3 O; J$ b( o( s# H+ v
  10536.            ((= etype "MLINE")
    7 f. A: t' {) c2 m" v
  10537.              (setq help_entry  "modify_multiLine_dialog"). X. ~$ |) |; V
  10538.              (ddmline)
    / r% A" j* ^3 x, g& A) i
  10539.            )# f( t9 b' |7 t
  10540.            ((= etype "RAY")
    ( t/ I- v( K& W3 @
  10541.              (setq help_entry  "modify_Ray_dialog")
    : B& L; `& n4 C8 K: U
  10542.              (ddxline)  [5 \/ r+ E) P2 U& s
  10543.            )
    * `, A4 \+ O; d6 `$ N! ]! D5 [: V
  10544.            ((= etype "XLINE"); M0 t) m8 B  k- X2 Q
  10545.              (setq help_entry  "modify_Xline_dialog")) O. Q2 B4 Z! `& B
  10546.              (ddxline)8 g- T, m0 C9 a6 F1 E* I# c
  10547.            )
    9 ~. V% @7 X0 C1 D
  10548.            ((= etype "POINT")
    # T0 R3 _* ]4 z- i  x. s( g
  10549.              (setq help_entry  "modify_Point_dialog")9 @* m. v3 ^( h0 a, x4 e7 V
  10550.              (ddpoint)
    / W/ p" t( ^! N7 b
  10551.            )( j6 k4 ?( S1 a6 ]% \3 }% ]
  10552.            ((or (= etype "POLYLINE") (= etype "LWPOLYLINE"))
    / K2 g% I) v! L& X- A* y
  10553.              (setq help_entry  "modify_Polyline_dialog")
    8 k1 y( H9 {3 r& \. M4 q
  10554.              ;; If a 2D pline, check to see if it is planar to the current
    6 u! @- z0 p& e+ J& W$ A
  10555.              ;; UCS, reject if not.   To see if the pline is parallel,4 }0 z* ]# e* ~
  10556.              ;; the 210 group (WCS) is added to the current UCS origin (WCS)2 N) i" F0 B# t" w; F3 x0 m
  10557.              ;; and then converted to the current UCS and checked to see if7 o3 ?7 f$ R* ^  g" C8 ?! L# b
  10558.              ;; it is equal to (0,0,1).
    + z# G8 P" N7 A( o9 C

  10559. 1 ]1 N/ S1 @" }$ G# u/ Z7 Z+ h( L/ m
  10560.              ;; Incase the 210 is default and not in the dxf list.# w  d4 J1 X6 }5 j
  10561.              (if (= (assoc 210 (entget ename)) nil)
    1 m3 K0 ^% J! j
  10562.                 (ddpline)! _3 ^8 E: w9 Z/ A: K+ y7 m( _
  10563.                 (progn
    3 B6 a# ~9 r3 C5 k
  10564.                     (if (and (zerop (logand 120 (cdr (assoc 70 (entget ename)))))
    : C# C% V5 {4 k5 C
  10565.                             (not (equal '(0.0 0.0 1.0)
    5 j2 ~  J; m: R& O, Y
  10566.                                    (trans (mapcar '+, y  P* J2 P" {, S- b' ^) ?4 B6 m  A
  10567.                                              (cdr (assoc 210 (entget ename)))
    : Y, q1 B4 F% l5 }" D8 M) Y. i
  10568.                                              (trans '(0.0 0.0 0.0) 1 0)
    + b) n8 m( M: u
  10569.                                           )
    6 P3 K+ y5 c/ E5 c7 u! V3 C+ m
  10570.                                      0 1# D1 F$ K! e1 q3 |9 g, o
  10571.                                    )
    3 p& Q. v' z/ k  z
  10572.                                    0.0000000001            ; fuzz( |7 C2 s. G0 c) ^5 p; {, u
  10573.                                 )
    * I, u0 _# a) L7 Q7 I7 d
  10574.                             )( q' ]. x' s5 A& K7 B8 y6 s4 d2 C' k
  10575.                         )
    . X6 K4 z8 G; O" S
  10576.                     (princ "\nThe 2D Polyline is not parallel to the current UCS.")
    . o3 Q. {7 z& I7 E7 K1 V+ x
  10577.                     (ddpline): j& o1 o( R  \( m. E
  10578.                     )
    , y/ H3 V( g9 `3 L, x9 z5 i! O
  10579.                 )
    8 L" }3 H+ R" c
  10580.              )) x. F; Z  R( C% F
  10581.            )
    6 {( s3 r. m7 g. M
  10582. ) }0 a4 X' }' C5 _( a3 p" `
  10583.            ((= etype "SHAPE")
    2 H5 Z5 [: t/ \6 m: K& q- j6 d
  10584.              (setq help_entry  "modify_Shape_dialog"); |) q8 Q; G) \9 I' g% q
  10585.              (ddshape)3 Z, F$ R" F. w5 E1 ]6 |( M+ j" _
  10586.            )# w1 A# D1 G  m
  10587.            ((= etype "SOLID")
    + ?. X; W4 ?) q1 ^; R
  10588.              (setq help_entry  "modify_Solid_dialog")# _* q# c8 Z7 n
  10589.              (ddsolid)
    # c6 m1 M  ], w
  10590.            )
    9 `4 _1 ^! ]! e% ?
  10591.            ((= etype "TEXT")' D0 |# }# U7 l
  10592.              (setq help_entry  "modify_Text_dialog")
    6 S9 P' t3 E( q3 x, S
  10593.              (ddtext)
    . m/ C5 f( K+ p6 J
  10594.            )& J8 n! j/ ~, n
  10595.            ((= etype "MTEXT"); B0 V0 n# }. t) P2 X, b6 l
  10596.              (setq help_entry  "modify_MText_dialog")
    5 B6 q, ]& A0 n2 c6 d
  10597.              (ddmtext)
    # m2 S( r. U* a
  10598.            )
    ( z* n# T9 b7 L' h, F# O# I
  10599.            ((= etype "TRACE")
    - f# v2 m* l& ]7 a9 J
  10600.              (setq help_entry  "modify_Trace_dialog")7 f1 N7 B7 k/ h6 x/ D$ \3 C. y
  10601.              (ddsolid)
    3 I& n4 @& D; ?+ D1 L
  10602.            )
    8 ?8 k$ P" o1 x' C+ L- b: P
  10603.            ((= etype "VIEWPORT")
    + W+ ~; \; }. g9 L9 k$ t
  10604.              (setq help_entry  "modify_Viewport_dialog")8 @6 Y2 M4 @1 p5 _0 u
  10605.              (ddvport)
    $ Z  _5 D8 x6 I* s2 m& I
  10606.            )
    " {3 ]" A! m) A( s& L
  10607.            ((= etype "IMAGE")- \+ o7 Z, H- t8 N9 e% B. i7 M
  10608.              (setq help_entry  "modify_Image_dialog")
      Q3 R( b5 W5 }7 T6 R/ U" d! l& e9 u
  10609.              (ddimage)3 d& R& a2 d2 b3 |; l9 b
  10610.            )9 a$ ^/ H: x. Q* {8 l' }; w- N$ e
  10611.            ((= etype "3DFACE")1 V/ C/ q: N! Y5 f# J( u% X; \
  10612.              (setq help_entry  "modify_3D_Face_dialog")
    % p# R- E2 `, d% O
  10613.              (dd3dface)/ a. \2 E8 e+ e3 {9 c
  10614.            )6 D6 V/ W' B2 S$ q5 d- H
  10615.            ((= etype "DIMENSION")
    ; q- K7 g" @/ A: Z7 B- u; u. v
  10616.              (setq help_entry  "modify_Dimension_dialog")
    5 z" N1 f5 p8 x! R# L
  10617.              (ddimen)6 }* z. c/ D/ d! ]
  10618.            )
    6 v7 ]& [0 ?8 h5 j: g* Y9 A# Q2 v
  10619.            ((= etype "TOLERANCE")7 F8 v! G5 ]# y. P/ h! A7 c
  10620.              (setq help_entry  "modify_Tolerance_dialog")
    : j4 X* Z+ z. H7 u' x$ v  n1 `
  10621.              (ddtolerance)1 H$ n& ?  \, s8 S
  10622.            )
    2 x4 f1 @4 k5 H, ]8 x0 }
  10623. ;; Fall-through condition changed by MCAD for MDT 1.1 release.
    . R* ~4 U6 l, L# V
  10624. ;; This allows DDMODIFY to work on any custom object or any new object type% O5 D5 s( O% b; j
  10625. ;; that isn't specifically handled above by calling the more generic DDCHPROP.
    ' n# @8 S6 [5 c" i( D; f
  10626.            (t- S' D6 ^5 Y  |2 }% F
  10627.              (if (and (not ddchprop) (not (load "ddchprop" nil)))
    ( ~1 g; e# p' R2 ^3 D4 T
  10628.                 (princ (strcat "No dialog support for object type: " etype ".")))  K4 p5 _& v' j" n$ l
  10629.              (progn: w: f7 _& h# z( v8 T& a( O3 x  J
  10630.                 (setq tempss (ssadd ename))
    3 Q9 U: \  m3 T2 R. b& ~3 G
  10631.                 (ddchprop tempss)
    . Z! L/ f) m0 `4 K
  10632.                 (setq tempss nil)8 K8 ~7 f* M- t" L
  10633.              )" G( C( E  v- }% c  y
  10634.            )9 r1 @3 L$ q; {  s
  10635.         ), {& w8 N# a: }' F! O  L5 s
  10636. ;; Previous fall-through condition." P) T9 D, L  E0 T. a3 u
  10637. ;;           (t (princ (strcat "No dialog support for object type: "" Y0 `' r, I/ x) i
  10638. ;;                             etype "."
      ]. b( [5 c9 V; j
  10639. ;;                     )
    : ~4 T4 v) y* A% S+ r
  10640. ;;              )* b% t3 r( e$ \. z3 v: P2 ^" `& q* i
  10641. ;;           )) D8 c6 b0 x$ O; L8 o3 O
  10642. ;;        )/ H( c$ C9 i8 x4 c/ G( z; ]' T
  10643.         (ai_undo_pop)
    9 X' z$ d) j2 Q# }$ B2 C
  10644.      ), b) k2 J( [5 c: l$ p- ^
  10645.   )( i, ]) `/ d) t& c9 x

  10646. & G' ]0 {* R6 L& B
  10647.   (if (eq new_pickstyle (getvar "PICKSTYLE")) ; if user didn't change pickstyle
    1 x& b, ~- {- a
  10648.       (setvar "PICKSTYLE" old_pickstyle)      ; transparently then set it back  m* ?9 j5 B: m; f# t
  10649.   )                                           ; to what we started with
    0 ^: I4 a& s0 |$ k
  10650. ) a0 @- K7 Q# ^; ~1 R' A7 ?; r) v, F
  10651.   (setq *error* old_error)$ t/ O8 n8 O+ i. Q7 d  S) {/ j; k
  10652.   (setvar "cmdecho" old_cmd)7 I& m7 C* `2 J$ H& u; f9 g+ R/ _7 r
  10653.   (if (not reset_flag)            ; if object was modified, then- D) h& X8 y! i7 M1 e- m( O
  10654.       (ai_return ename)           ; return it's ename to caller% T: E2 z5 V1 o" u9 S! s
  10655.   )
    2 h" z# j0 e* X
  10656. )
    , B  e$ ?* a" |7 ?" R# S5 t' A
  10657. 1 j9 p2 y: X) j) t5 ~
  10658. (defun checkForLockedLayer (ename)8 |& u* A, w4 Z, ]- x; Q6 m
  10659.     (setq layername (cdr (assoc 8 (cdr (entget ename)))))
    3 W7 u7 s; U7 c* K) d  {
  10660.     (setq layerflag (cdr (assoc 70 (tblsearch "LAYER" layername)))), F! Q9 m3 c  h+ j* U2 i
  10661.     (if (= layerflag 4)" h3 M: H7 |' {, C9 \
  10662.         T
    3 l% ]1 m2 ]$ X% \: S4 T2 Q" B
  10663.         nil( D8 [. c1 j6 i: {* W
  10664.     )
    # v# r! V! C# B; p6 M6 r
  10665. )+ |/ J/ F! o7 ]# b/ e
  10666. ' L0 |7 n1 c5 p0 C9 K' I% u7 D) E
  10667. (princ "  DDMODIFY loaded.  "): h% v8 ?8 r& R7 T/ C
  10668. (princ)1 }. q6 S6 ?, ]7 a+ r2 y5 V/ n
  10669. ;;;???;;;---------------------------------------------------------------------------------------
    5 n3 o+ }/ z$ t; q( {- u

  10670. ; K( b; O4 u, ~
  10671. ; Next available MSG number is    8 2 h4 ~- i+ v& N0 j
  10672. ; MODULE_ID DDUCSP_LSP_" @6 m" a8 c: S  \
  10673. ;;;
    * L6 e' J8 s4 b, I/ M
  10674. ;;;    dducsp.lsp3 r8 l; [; y/ `; x% l5 S# ^
  10675. ;;;, l, f' N# \  W4 D( Z+ e  A6 Q
  10676. ;;;    Copyright 1992, 1994, 1996 by Autodesk, Inc.3 v: d& o( y! ]* {: o- o! u0 ~
  10677. ;;;/ y/ i/ i# [" E5 r7 Z. n7 t: ~
  10678. ;;;    Permission to use, copy, modify, and distribute this software) w. {2 O& B+ I  Y8 _8 K2 J' i
  10679. ;;;    for any purpose and without fee is hereby granted, provided
    0 N$ a4 `6 ~/ C, h
  10680. ;;;    that the above copyright notice appears in all copies and
    " {, V; R  [5 U8 |& L
  10681. ;;;    that both that copyright notice and the limited warranty and
    ! |/ E3 u9 L: a8 C7 g' @
  10682. ;;;    restricted rights notice below appear in all supporting. I2 Z6 }4 A/ S+ ]+ d& O
  10683. ;;;    documentation.
    $ r7 X3 f; T9 D5 I+ o
  10684. ;;;
    6 q/ q; I4 T1 R
  10685. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS." N$ C3 N1 ]4 S; G! c
  10686. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    , y) J- X3 W# _4 ^3 f, j, K
  10687. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    7 ?! t6 P  c5 T0 Q( S( }" z
  10688. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE  C# d4 I- K, z( i5 ?
  10689. ;;;    UNINTERRUPTED OR ERROR FREE.. }0 c( _1 K' E7 l+ l# @) u
  10690. ;;;8 G$ e2 X# B  _0 u! U
  10691. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to1 H' k0 C! l5 }. M* |+ o
  10692. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
    : p! H% i" j9 `  h, D- v
  10693. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
    5 n- {, q, n7 B& J9 f
  10694. ;;;    (Rights in Technical Data and Computer Software), as applicable.2 x  [, W# |5 A/ n
  10695. ;;;
    ) u2 K* [' Z- T9 w" j/ ]- X8 c
  10696. ;;;.; \8 G8 J/ W$ F# d
  10697. ;;;   C:DDUCSP - User Coordinate System presets dialogue.
    ' K+ U5 {/ I5 m$ [
  10698. ;;;     2 ]% ^+ x: d% k6 ]0 }9 k. \
  10699. ;;;              Uses DDUCSP.DCL for the dialogue definition.  The
    ' O' M) S9 H7 D: Z( g
  10700. ;;;              slide images are in ACAD.SLB.9 ^1 p. C# G% H: B* L7 a* {3 F5 R
  10701. ;;;
    1 X% i) H% y9 F7 O) d6 i
  10702. ;;; ===========================================================================
    % {. v; ^1 D0 U; y( l
  10703. ;;; ===================== load-time error checking ============================
    5 D5 W' U2 x) [% f9 d% o/ x
  10704. ;;;
    4 D! V8 n9 {9 D% T# P: \
  10705. 8 p6 s3 x9 Z! N+ ?6 y
  10706.   (defun ai_abort (app msg)
    , l1 [& |' O9 e7 L
  10707.      (defun *error* (s)3 l# h3 t( H  R
  10708.         (if old_error (setq *error* old_error))
    % Y+ x, I; D. d! T; d1 {. j
  10709.         (princ)( u% j1 E0 R) R3 P2 U
  10710.      )  s$ y  y3 D- V( d8 {
  10711.      (if msg6 @) u+ x, e  w' H
  10712.        (alert (strcat " Application error: "
    ( {" x6 S9 [4 c  y# E+ \6 e8 `' s
  10713.                       app. x. L; j# @0 n4 J
  10714.                       " \n\n  "; @6 s7 k/ F0 ^0 ]
  10715.                       msg" x3 C8 S, n! B9 J+ G1 s7 |( |! @
  10716.                       "  \n", {* Q" p+ v# W! u
  10717.               )) L4 O: y0 j; E, o0 u* ~
  10718.        )) O( v+ H9 b: R9 V: c' c% a; ~
  10719.      )2 w5 N" D2 g$ ?+ U1 n
  10720.      (exit)* v  H" Y4 R3 B5 `6 \$ v
  10721.   )6 r% F* n2 U. i  r
  10722. 2 J9 [* @6 S2 Y
  10723. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    ; o4 [3 d7 h! W4 \  f/ S6 Q
  10724. ;;; and then try to load it." A- |1 e" ^' E' Z/ t; L
  10725. ;;;3 w3 M' y0 i1 S# U) j+ U% H! g
  10726. ;;; If it can't be found or it can't be loaded, then abort the
    ; |0 E. r3 p; ]& K
  10727. ;;; loading of this file immediately, preserving the (autoload)" |/ |- ]1 W5 p0 V
  10728. ;;; stub function.
    & }* O' L! e5 O! F  d! B2 n: B
  10729. $ M$ u! \4 I' V9 ]2 V( P5 X/ N
  10730.   (cond& o, U8 D3 E# x! I! l3 B
  10731.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.
    ) @: Q0 b- c% m1 g0 W) Z) J6 g
  10732. ; W7 ~. O4 L  `2 ^! J" i1 i! @
  10733.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    0 S4 D6 P( t: y4 ~
  10734.         (ai_abort "DDUCSP"3 Y: o" X; }6 i; N. H
  10735.                   (strcat "Can't locate file AI_UTILS.LSP."
    " Z/ x: B, b0 v5 R7 N
  10736.                           "\n Check support directory.")))4 j' @/ U5 E. p7 M3 c( D

  10737. : t$ y) n4 p* w2 M2 I# K0 m; L
  10738.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    ) {9 J1 V8 X+ U5 Q0 s' g* N# M& k
  10739.         (ai_abort "DDUCSP" "Can't load file AI_UTILS.LSP")); A" E( J4 q% ~/ L' d% B
  10740.   )' S" \/ e, {, M$ e! `9 [% P- B: Z6 X
  10741. + X' M" W$ ?. m, r& r" d
  10742.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    ( {4 ~3 B$ H4 L) O
  10743.       (ai_abort "DDUCSP" nil)         ; a Nil <msg> supresses
    / K4 C) {; R/ W0 w' Y) ?
  10744.   )                                    ; ai_abort's alert box dialog.
      c( q  q% p2 m! n' r  z, ?8 p% D

  10745. . n6 a; K* {. `4 {* Z& i* y2 G2 b
  10746. ;;; ==================== end load-time operations ===========================
    ) H- b8 W! |3 c

  10747. ! O9 X* j* i' i) ^
  10748. (defun ai_ucsp_start ( / program)
    , e5 V! l/ W) |/ l, o7 n
  10749.   ;; Get program name
    + x% K" p! o+ e
  10750.   (if (not (setq program (getvar "program")))
    9 X4 D* `* C3 Y4 Z1 h
  10751.      (setq program "acad")2 ~* X* r: y. q9 C2 x+ k' r; K
  10752.   )" a1 D1 E: d5 O
  10753.   (foreach v0 '("world" "left" "cview" "top" "front"
    " E* l& F7 ~1 C  w& U4 z' z
  10754.                 "bottom" "back" "right" "prev")/ Z4 h( b) A) \) }& p/ C
  10755.     (start_image (strcat "ucsp_" v0))3 s. l. l1 X/ a% X, I) n9 m
  10756.     (slide_image* {# x/ u) B3 ], _. w* V) U
  10757.       0 0
    % E$ X! k2 M! z' w; T- y
  10758.       (- (dimx_tile (strcat "ucsp_" v0)) 1) (- (dimy_tile (strcat "ucsp_" v0)) 1)1 J% ?: J3 B$ F5 D, p- ^/ F
  10759.       (strcat program "(u-" v0 ")")1 Z5 E3 V' n8 |
  10760.     )
    ) M: [  i, A8 ^4 f6 T
  10761.     (end_image)
    $ r- N. W. o$ v! q, B5 J# \
  10762.   )
    7 Q' u+ ?1 @. f% }
  10763. )- f4 u8 q: k2 m' L4 z* }

  10764. # m0 a% Y, @; ~; X
  10765. (defun ai_ucsp_set ()
    + H% M5 M+ ?" _" U; D( h* o, P
  10766.   (if ai_ucsp_sv
    $ _1 i# Y0 ~+ t; @  O/ |! b
  10767.     (command "_.UCS" "_V")6 D; f& k& l7 L# s5 h
  10768.     (if ai_ucsp_prevs
    3 {* M: }% z0 C  l" P' D
  10769.       (command "_.UCS" "_P")8 M0 a0 L5 B! p% }( i* ]
  10770.       (if ai_ucsp_chg
    8 i9 s5 V5 q( n, J/ ?, _* g1 t
  10771.         (progn
    / @7 r; B- ]* m& b7 U5 [
  10772.           (if (/= ai_ucsp_a "*")
    " Z$ R  L% M9 C% r9 _7 S
  10773.             (setvar "LASTPOINT" (trans (getvar "UCSORG") 0 1)): _; G4 p7 t; K9 f% G5 j
  10774.           )/ U4 T( [( U8 N; A' H
  10775.           (if (< ai_ucsp_pick 6)
    7 q, p! G$ r8 Y' B
  10776.             (setq ai_ucsp_set0 "@"). X; w4 ^4 P& a- ^  b% R7 E
  10777.             (setq ai_ucsp_set0 "*0,0,0" ai_ucsp_a "*")( P8 G, q3 ~2 t
  10778.           )0 Y/ m1 G3 v4 M% l, c
  10779.           (cond ((= ai_ucsp_pick 0), m/ D% I1 U0 i0 T$ X
  10780.                  (setq ai_ucsp_set1 "0,-1,0", t! c" C/ d, K* w* y
  10781.                        ai_ucsp_set2 "0,0,1"
    2 A7 J4 o3 B1 D. n
  10782.                  )
      d3 @$ z& N5 A! o" B0 p2 U1 x6 T; r3 ^
  10783.                 ): f, Q$ v; Q' J
  10784.                 ((= ai_ucsp_pick 2)( f2 `+ y- W9 N7 V) O, e
  10785.                  (setq ai_ucsp_set1 "1,0,0"
    0 L# ~6 }  L" E: |( {* q
  10786.                        ai_ucsp_set2 "0,0,1"
    8 }$ ]: x( V2 P" \  s) ^9 Q5 @3 B, I( {
  10787.                  )
    / [6 O5 f( V# [) d+ l/ N# F5 |& Q
  10788.                 )
    " h  y% S! a$ T  l* _5 u
  10789.                 ((= ai_ucsp_pick 3)0 r( ~. X2 k1 c/ b) k- a
  10790.                  (setq ai_ucsp_set1 "1,0,0"
    ; F1 @+ k' ]0 x  d
  10791.                        ai_ucsp_set2 "0,-1,0"
    3 V4 U0 y8 \  b
  10792.                  )
    , V5 a" m7 A1 v& M
  10793.                 )
    7 l+ _1 q: N$ B. u7 y+ E  W
  10794.                 ((= ai_ucsp_pick 4)
    0 B0 ^7 ~3 Q6 n
  10795.                  (setq ai_ucsp_set1 "-1,0,0"
    8 e/ d  t9 U2 g6 o! j  ?7 A1 o
  10796.                        ai_ucsp_set2 "0,0,1"
    5 f# o: u9 r' {5 i5 B( t3 z- \
  10797.                  )6 _) g/ g9 J0 s, B( T6 l8 L# ~
  10798.                 )
    2 t3 @. m! _% S* i2 P  m# e9 v" ~6 V
  10799.                 ((= ai_ucsp_pick 5), `6 _( _" |% O1 \: N8 Q
  10800.                  (setq ai_ucsp_set1 "0,1,0"
    ' h0 V* I1 o1 U6 u, l
  10801.                        ai_ucsp_set2 "0,0,1": u6 ^- O; v6 l" r
  10802.                  )4 X3 k- A4 B- u
  10803.                 )3 |/ H( E1 O4 ?" F
  10804.                 (T: }& X4 @8 _3 K' ?
  10805.                  (setq ai_ucsp_set1 "1,0,0"
    - l; E4 x5 K$ k* l6 X
  10806.                        ai_ucsp_set2 "0,1,0"+ u. y2 g. H1 r$ Y
  10807.                  ), E1 d5 D* d) p7 N; m/ m
  10808.                 )
    1 ~, p" Q# o4 H# H8 i
  10809.           ); A% r* |7 l+ J6 _  F
  10810.           (command "_.UCS" "_3P" ai_ucsp_set0
    1 b7 k/ r+ Y- }/ W& A
  10811.                    (strcat ai_ucsp_a ai_ucsp_set1)
    9 D% h# |: q+ z$ b- m4 H8 z1 t
  10812.                    (strcat ai_ucsp_a ai_ucsp_set2)
    5 V& u% |( v1 g" V# H2 A. g$ q
  10813.           ) ) A+ S  Z0 ^, _; _
  10814.         )
    9 W- C3 y2 }; k" k# s7 l& @" {
  10815.       )6 C" v2 j& T, c& c0 r7 U& k/ Q
  10816.     )1 A. v( O/ R$ L; F3 C! ]( _& Y
  10817.   )
    " X1 Y/ Z, O: @& X7 f
  10818. ), B5 o2 P: o# h7 O; Y

  10819. 9 `" R! H, Z+ x% Y
  10820. (defun ai_ucsp_p (val currtile)
    4 e" d+ C; w! J2 n% Z
  10821.   (mode_tile ai_ucsp_currtile 4)
    ' Y& E9 n2 C5 A6 Q" o" Z
  10822.   (setq ai_ucsp_pick val. a, Y( A: O5 k6 i; U
  10823.         ai_ucsp_sv nil9 t2 v2 r  a9 Z& b- L
  10824.         ai_ucsp_currtile currtile
    $ Z1 p: u! s5 w* d! Q/ R$ t- {' k
  10825.   )
    / L$ C) {2 q3 q
  10826.   (if (/= val 1)5 \4 r& g' Q, n, ]6 T
  10827.     (setq ai_ucsp_chg T)! C6 y0 m1 y! u
  10828.   )
    ( M) |& s, {/ w4 z/ X! R# B1 }
  10829.   (mode_tile ai_ucsp_currtile 4)
    9 k' B% e3 j% k/ V3 f# ?5 N
  10830. )* l- F: k8 n% U

  10831. $ z$ y% S4 ~3 v# h: `# i0 f
  10832. (defun ai_ucsp_swcs ()
    3 m2 s2 U4 o5 H, m3 V
  10833.   (mode_tile ai_ucsp_currtile 4)
    * H; z9 Y, t4 b0 p( T( @0 q
  10834.   (set_tile "ucsp_a_wcs" "1")1 G) I; y5 ?' I) M7 G) L
  10835.   (setq ai_ucsp_pick 65 T. j" {) q: \1 _1 R" I4 `
  10836.         ai_ucsp_sv nil+ e! `" z+ c5 W- ~
  10837.         ai_ucsp_currtile "ucsp_world"/ \9 h: R  P, e0 S( J) b$ H/ j
  10838.   )
    7 P7 @8 z( ], R5 z. i$ e2 R% K. J3 B
  10839.   (if (/= 1 (getvar "WORLDUCS"))
    & ?  ?7 t9 t3 M7 g: R4 E
  10840.     (setq ai_ucsp_chg T): I/ t+ y" ^$ R
  10841.     (setq ai_ucsp_chg nil)
    0 N% b8 i& h" V, n, g
  10842.   )
    0 M) l; w$ U0 b
  10843.   (mode_tile ai_ucsp_currtile 4)- w6 I  s4 l$ O3 K/ z
  10844. )
    2 K, ^* d1 F; ?) u2 ]

  10845. % f4 R) p& A' S9 z8 p. A
  10846. (defun ai_ucsp_cview ()
    7 O/ X8 U% d$ w3 I$ m" Y# ?
  10847.   (mode_tile ai_ucsp_currtile 4)  B3 A2 m) `1 O. [  |
  10848.   (setq ai_ucsp_sv T ; T4 _1 _' h. Y) e  D
  10849.         ai_ucsp_chg nil
    ' M$ c" k/ h; S2 R- Q+ C
  10850.         ai_ucsp_currtile "ucsp_cview"
    1 |+ }9 d( G4 F: o' }! r
  10851.   )
    9 m! m! u' T5 O7 j
  10852.   (set_tile "ucsp_a_wcs" "1")
    ' \( L6 O# x. I! W
  10853.   (mode_tile ai_ucsp_currtile 4)
    % i  l3 k* h4 V0 C, \( n6 `# c
  10854. )% u3 m& u+ ?* B1 G, Y0 E* Z* N

  10855. - k' B5 a. v9 D1 `" j7 g6 f
  10856. (defun ai_ucsp_rucs (typ)
    0 x1 Y/ P: Z8 f: x& f
  10857.   (setq ai_ucsp_a typ)( @/ J+ D9 A" _9 t3 O
  10858.   (mode_tile ai_ucsp_currtile 2)
    $ X5 n) j. p$ c) _" a
  10859. )
      \$ h5 Z/ N# j# s, F
  10860. 1 e. u6 K* x8 i9 r
  10861. (defun ai_ucsp_prev ()* Z" _4 T( ]: i( i; r: ~
  10862.   (mode_tile ai_ucsp_currtile 4)
    ! t9 Q- O" M: p3 p" F, A( I
  10863.   (setq ai_ucsp_prevs T
    , b8 Y* e" |; d4 j8 M
  10864.         ai_ucsp_currtile "ucsp_prev"
    8 v9 M$ R/ }& G7 X. d! U3 P. O7 c
  10865.   )
    & v0 E* ?; t2 ]# D+ o
  10866.   (mode_tile ai_ucsp_currtile 4)
    3 ^  A+ }0 d; b/ i( Y
  10867. )
    0 `' a8 u7 R4 U* D
  10868. - O# F) h- N" j- Y0 M
  10869. (defun ai_ucsp_main ( / ai_ucsp_pick ai_ucsp_sv globals)
    2 H9 y1 Y$ c' ?3 @
  10870.   (if (not (new_dialog "dducsp" dcl_id))
    : B. b; A8 O( O, w& f
  10871.     (exit)' Q3 C  f0 G$ a2 B1 s# D$ }
  10872.   )6 h# M2 ?1 ^, q* w" C- |

  10873. 2 g; C; d; C' F  @3 b
  10874.   (ai_ucsp_start)
    2 L4 A: m3 k0 c* L; n4 D6 j
  10875.   (setq ai_ucsp_a "@"
    - J9 ]. w* n  _8 v$ D
  10876.         ai_ucsp_pick 2
    4 ]7 [2 b3 l9 v
  10877.         ai_ucsp_currtile "ucsp_top"
    ' J. u: F+ L/ d" P7 z
  10878.   )
    ' v' m$ h3 N- b& Q! t! z' L
  10879.   (if (= 1 (getvar "WORLDUCS"))+ D# r9 Q1 \7 @8 L8 n1 L
  10880.     (progn4 z# u$ |6 C- s9 `, u% w
  10881.       (set_tile "ucsp_a_wcs" "1")
    3 _& g6 [+ a$ E( _7 v
  10882.       (setq ai_ucsp_currtile "ucsp_world")
    / x; S* W3 z, ]) }7 l
  10883.     )# @: e( s3 f8 Y2 g; |
  10884.     (set_tile "ucsp_r_ucs" "1")
    4 f1 ^% a; A3 h: l. m" d) a& A- k
  10885.   )+ F& W8 t) w/ \( l! {: p
  10886.   (mode_tile ai_ucsp_currtile 2)
    2 \2 G8 u% N2 D" U! Z
  10887.   (mode_tile ai_ucsp_currtile 4)5 }: G  c; I, J7 y' t
  10888.   (action_tile "ucsp_world" "(ai_ucsp_swcs)")
    ) t7 R2 p* o8 ~& f3 A5 D' d; H
  10889.   (action_tile "ucsp_cview" "(ai_ucsp_cview)"): V" f- U3 a- f
  10890.   (action_tile "ucsp_left" "(ai_ucsp_p 0 $key)")
    + D( z" T* a4 Y- g( t1 h/ e: i! E
  10891.   (action_tile "ucsp_top" "(ai_ucsp_p 1 $key)")
    , F" [  l% r$ y3 z' b  X6 q
  10892.   (action_tile "ucsp_front" "(ai_ucsp_p 2 $key)")
    " T# Q7 B/ [/ K' O
  10893.   (action_tile "ucsp_bottom" "(ai_ucsp_p 3 $key)")
    7 j; z; q9 v2 i
  10894.   (action_tile "ucsp_back" "(ai_ucsp_p 4 $key)")
      |3 f6 G: w4 C7 B3 v4 p
  10895.   (action_tile "ucsp_right" "(ai_ucsp_p 5 $key)")( |* h$ D3 B- f$ d. |) w/ h
  10896.   (action_tile "ucsp_prev" "(ai_ucsp_prev)")
    7 T) e! e( R4 t
  10897.   (action_tile "ucsp_r_ucs" "(ai_ucsp_rucs \"@\")")
    4 I6 X& a6 U8 ?% B
  10898.   (action_tile "ucsp_a_wcs" "(ai_ucsp_rucs \"*\")")
    : B9 Y- b* W6 S. J; W4 w
  10899.   (action_tile "accept" "(done_dialog 1)")
    ! Y) D/ q) R4 j4 g+ W
  10900.   (action_tile "cancel" "(done_dialog 0)")$ |4 F- A  j' u: r' U
  10901.   (action_tile "help" "(help \"\" \"DDUCSP\")")
    2 K5 f& n' G7 ^0 I" O* X& o: ?: X- X
  10902.   (if (= (start_dialog) 1)6 Z: t9 @6 b6 u; ^8 Z) {
  10903.     (ai_ucsp_set)
    ; O0 O& F4 i/ a6 M* d) M
  10904.   )
    ! p5 {3 a! J9 o* d- ?* ?
  10905. )* t. D9 N+ j0 p# ]) B; W8 R

  10906. ) O# e2 ^4 Z. v* \. Y$ \6 q; X
  10907. (defun c:UUS ( / app dcl_id old_cmd old_osmode ai_ucsp_prevs 5 u$ w  c# |# ]4 h1 a7 t
  10908.                     ai_ucsp_sw undo_init)6 ]/ q' N0 |9 R
  10909. * O9 {1 e! ]+ H* F, M
  10910.   ;; Set up error function.% K4 g( ^6 {8 X- [; i) d9 {
  10911.   (setq old_cmd (getvar "CMDECHO")    ; save current setting of cmdecho) u3 h) ]3 U6 U! c- _- j
  10912.         old_error  *error*            ; save current error function/ D# L( S: D0 P+ F
  10913.         *error* ai_error              ; new error function5 C4 Q' Y4 ^" O, y8 @2 u. V( E6 L
  10914.         old_osmode (getvar "OSMODE")  ; disable OSNAP for duration
    5 n& ]6 i. Q3 _& }3 `- X
  10915.   )# d% E' E9 w7 b# s4 }6 f2 ]
  10916. $ Y% ?4 a3 N5 d* f" r+ G
  10917.   (setvar "CMDECHO" 0)4 E( \( M3 Q* C' d. O2 n
  10918. 9 D! h% B4 H4 M* W7 ]
  10919.   (cond
    + V; z' s8 S* N' a7 K
  10920.      (  (not (ai_notrans)))                     ; transparent not OK
    * x- A+ s4 y4 k9 m
  10921.      (  (not (ai_acadapp)))                     ; ACADAPP.EXP xloaded?7 }0 ]5 l& G+ V9 G
  10922.      (  (not (setq dcl_id (ai_dcl "dducsp"))))  ; is .DCL file loaded?
    ; v4 [( \) q( g& W
  10923.      (T (ai_undo_push)
    # R4 {, }+ \( y/ O& [
  10924.         (setvar "OSMODE" 0); N$ `/ ?8 L( {; ?& J3 h% N4 g% s+ ~
  10925.         (ai_ucsp_main)& r6 u& l4 [) A; u1 T. c
  10926.         (setvar "OSMODE" old_osmode)
    7 O" u, [: d; q$ A
  10927.         (ai_undo_pop)9 o3 z3 ~$ ^* Y/ S- ?
  10928.      )
    8 c/ \9 w% N3 c; M0 F, o
  10929.   )
    ( L3 W* U& X5 }) o

  10930. ( c" p8 H, V/ z; V
  10931.   (setq *error* old_error)
    5 Q  D# j8 {& C$ M. j
  10932.   (setvar "cmdecho" old_cmd)
    . |9 f( m* W9 v7 b

  10933. 6 w" p* W  z" Q  w% E5 z2 v
  10934.   (princ)
    4 P. R* i  ?# ?
  10935. )" {  y' I6 Q8 X  D

  10936. % D) _8 ^+ o' b$ c
  10937. (princ "  DDUCSP loaded.  ")* k/ a" _- R* V
  10938. (princ)4 E6 f1 L# {* ^! Y: C
  10939. " T! b+ q9 @7 Q! w5 b, x! }
  10940. ;;;???;;;---------------------------------------------------------------------------------------
    $ x+ t+ m0 u& D: K- m( P

  10941. 0 s. C+ U6 ~4 |  ^3 I( b9 V
  10942. ;;;----------------------------------------------------------------------------3 l+ ?1 a0 {! E- L* N
  10943. ;;;
    4 u2 z: F1 B; h7 j5 a6 r) V
  10944. ;;;    EXCHPROP.LSP   
    * c9 D) ~8 U# ]/ b1 u" F9 j+ k6 x
  10945. ;;;    Polyline and text modification capabilities added by + u; r1 P; C7 d7 [9 S7 v
  10946. ;;;    Randy Kintzley  
    & }! m" m9 B6 b, G  _
  10947. ;;;
    : d3 I( _3 ~* U- L' W4 z* I
  10948. ;;;    Copyright (C) 1997 by Autodesk, Inc.
    - N0 \' y# u! w% Q) }
  10949. ;;;
    : ]2 x+ {3 ~* y9 h
  10950. ;;;    Permission to use, copy, modify, and distribute this software$ L4 j# ^6 J7 ^
  10951. ;;;    for any purpose and without fee is hereby granted, provided
    5 }. N% J7 W! q1 {
  10952. ;;;    that the above copyright notice appears in all copies and/ b* E3 D* t. e% s/ a6 e2 c
  10953. ;;;    that both that copyright notice and the limited warranty and
    . h8 J- R, Z( d$ H( v; Y, a. y2 K" k
  10954. ;;;    restricted rights notice below appear in all supporting& N, L: [5 l! d" q$ t; P/ D- p
  10955. ;;;    documentation.
    4 C4 {  @+ g& \  R7 k$ N4 c
  10956. ;;;
    . O2 l" E* S" B! M2 y3 N
  10957. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS." w% B7 Z! ]( Q4 ~( F, w) y) x
  10958. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
    2 D$ [: W1 g  O7 R" Y1 f
  10959. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
    % P& k* ]2 l9 H$ N( w  L
  10960. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE% d- W. n, x1 u
  10961. ;;;    UNINTERRUPTED OR ERROR FREE.
    # ]. Q3 [1 O2 N+ N8 T
  10962. ;;;: U# s" N4 f2 L9 n/ Q4 S
  10963. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to
    + P; _7 S( ~' q+ ^, `
  10964. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer. |8 D3 s: U2 j; W% c+ L2 c( h
  10965. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii), O+ u8 \5 A+ q' k0 t! y
  10966. ;;;    (Rights in Technical Data and Computer Software), as applicable.. a" c( [6 B" \, b  O
  10967. ;;;0 ]1 M& D. Q: T) i; |: D
  10968. ;;;.
    $ r! ]+ O/ @% w
  10969. ;;;    28 February 1997
    ' l5 y) u. P* a; Y2 }
  10970. ;;;0 e+ \. k9 K$ s7 a5 g
  10971. ;;;8 X) c$ t4 L' d- l* v4 I' J
  10972. ;;;----------------------------------------------------------------------------
    - U4 j- c& d) x
  10973. ;;;   DESCRIPTION
    ! X( d: h4 y$ B" X7 Y
  10974. ;;;----------------------------------------------------------------------------, @& p) V/ W2 i) K9 c
  10975. ;;;   C:EXCHPROP is an extended or enhanced version of ddchprop. This  
    . c7 {3 l3 ?* y) r4 O5 g, o
  10976. ;;;   command gives the user the abilitie to change several characteristics
    4 }, p6 S9 S8 D* r: u
  10977. ;;;   of selected polyline and text objects. 3 w: T% n  r# d* r# u7 B4 r. \; X, a
  10978. ;;;       The style and height of selectected text objects can be modified
    - G6 a7 k  _/ }, G* W  R
  10979. ;;;   (including text, mtext and attribute definitions) as well as, width and / U- o0 @& d" E2 J5 A
  10980. ;;;   elevation characteristics of selected polylines (includes lightweight and
    % \/ k1 l) c. o8 A( p+ C
  10981. ;;;   traditional polylines.)$ C* r' |: J) C3 U8 L
  10982. ;;;----------------------------------------------------------------------------  J# I, X6 I" s! p/ J5 N
  10983. ;;;----------------------------------------------------------------------------' B. E) G4 ~: m: X+ ?+ z+ ^- y4 W% R
  10984. ;;;   Prefixes in command and keyword strings:' {. X6 c7 G1 t; c
  10985. ;;;      "."  specifies the built-in AutoCAD command in case it has been
    , `& x* \3 M0 f- k
  10986. ;;;           redefined.6 t) ^5 D' T% y3 d. Y
  10987. ;;;      "_"  denotes an AutoCAD command or keyword in the native language6 i9 Y( ?! a% k" \
  10988. ;;;           version, English.
    " o: e; s) e4 ?% o! j$ k
  10989. ;;;----------------------------------------------------------------------------3 V0 v1 f, {+ d( c# o1 V
  10990. ;;;7 @& {+ v4 |. F: z. m
  10991. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$ c, D0 c( K/ n+ m
  10992. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GLOBAL INFO.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3 n% B/ M$ D' h
  10993. ;Functions created as result of loading file: exchprop.lsp
    2 H, k; V! h1 k% }8 ^7 {
  10994. ; DDCHPROP22 `4 I3 r4 q6 b- y( T: }6 E
  10995. ; DDCHPROP2_INIT+ J, K* \3 b( J  [  u/ a: }
  10996. ; DDCHPROP2_SELECT
    " z% O- x) h& I, g
  10997. ;6 f  d; N( a) A2 o7 _
  10998. ;Variables created as result of loading file: exchprop.lsp0 ^7 }" |# w4 {- H3 j! {% J
  10999. ; OLD_ALLOC
    & R# `: I4 d+ R$ u) L0 R0 Q
  11000. ;4 D) d6 p6 P' F- g7 m
  11001. ;Functions created as a result of executing the commands in: exchprop.lsp7 X* W7 ~1 N- R9 \" [4 V' u
  11002. ;4 f, P3 G5 t# k
  11003. ;Variables created as a result of executing the commands in: exchprop.lsp
    " J7 P3 g9 Y/ T! K+ j: A- J
  11004. ; AI_SELTYPE/ f' X* H4 j! e, d7 @
  11005. ; BONUS_ALIVE4 N0 M/ {2 c; u0 ]& v% V& v
  11006. ; BONUS_OLD_ERROR
    & t' m" I$ v1 h1 A, Z
  11007. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;GLOBAL INFO.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    & q  M' m1 u1 N- |7 F7 Q  T) X
  11008. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    * W* H+ [5 z! b' X8 k

  11009. ) }4 `) ?6 M. J- `& v: F
  11010. ;;;1 |7 T) g7 K: _  s/ n
  11011. ;;; Avoid (gc)s on load to improve load time., t* l, E" |4 \
  11012. ;;;
    . o4 t1 a8 O6 ?! {! k
  11013. (defun do_alloc (/ old_allod new_alloc)" A4 s) f7 P4 A4 D, X& i  t
  11014.   (setq old_alloc (alloc 2000) new_alloc (alloc 2000))
    " {8 C% i. [1 P& O8 y. Q' t
  11015.   (expand (1+ (/ 4750 new_alloc)))
    ' ^' I+ [% u: F0 t' n) n2 ], A( c
  11016.   (alloc old_alloc)) y/ O: F2 D; m
  11017. );defun
    . r0 ~% A3 d( R, z4 W0 y* z

  11018. " D8 u6 l2 l* Z& t
  11019. ;runs at load time - rk
    7 O  ]9 }9 ^6 N3 j0 I
  11020. (do_alloc)
    - p3 n+ i" d  E0 Q- M5 e
  11021. (setq do_alloc nil)
    4 s  G$ x/ u  o# ~7 `; u
  11022. ;;;
    : @9 ^/ B1 H! T! g- b' M
  11023. ;;; ===========================================================================6 h' Q5 H+ q; j6 r' N
  11024. ;;; ===================== load-time error checking ============================. R  N2 ~3 l: t$ r( L/ x7 k5 @0 N& B; g
  11025. ;;;
    / g- U) i0 M0 @4 X2 v

  11026. 6 i  E* i4 R$ `& T' i  t3 {1 h
  11027.   (defun ai_abort (app msg)
    + E6 |: e! U. v9 y& \; |
  11028.      (defun *error* (s)  T8 O9 D0 c( ^6 O  u1 L
  11029.       (if old_error (setq *error* old_error))+ ~! {  c" P) ]* A$ E1 k3 B
  11030.       (princ)" m) @/ G! ^9 `) I7 Y
  11031.      );defun
    9 F& d- C* ^) |5 a$ H& w
  11032.      (if msg
    / }7 x7 l+ @3 O( ^0 R2 f* M/ D
  11033.        (alert (strcat " Application error: "& C8 G: I5 q7 b/ K
  11034.                       app
    $ L/ J1 M+ e9 D! j' v
  11035.                       " \n\n  ": X5 O  o2 e2 L6 E5 L) B
  11036.                       msg( f: s' M. `% g( B  P6 K0 N- T8 I" H
  11037.                       "  \n"
    5 |  u  U# C4 @! ~
  11038.               )
    # ~6 x- k2 G: F/ q+ u
  11039.        );alert
    , J6 X5 E5 t1 l4 I1 F$ i
  11040.      );if) ]  H4 |& C1 E7 q
  11041.      ;(*error* msg)% r  D8 @# J) w- z/ ?' x
  11042.      (exit)" f) l, s) n  ~: Q
  11043.   );defun ai_abort
    * H" H: C+ ~# o' ]- v" _5 _
  11044. 5 j1 s. ?, s# i9 _6 a+ i; P  Z( g4 q
  11045. ;runs at load time - rk0 x% A; ]/ N2 T: Z  _
  11046. ;(if (and *error*      ;added the if wrapper around this - rk.
    ' n$ @, \+ {; p
  11047. ;         (not old_error)      
    6 ~/ K# h1 O$ B6 `; t0 a8 A5 C
  11048. ;    );and
    ' e2 `' G! }  u7 _3 Q4 K1 x5 {
  11049. ;    (setq old_error *error*);setq
    ( L7 ]; V  i" C
  11050. ;);if! ~0 b; u8 p0 H  K6 P
  11051. $ }  ^3 o1 ^: Z, J* f+ P* ?- C
  11052. : r# w: n3 ]# j7 j& s2 E7 J$ O% U
  11053. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,
    ; }5 c. O9 d" y
  11054. ;;; and then try to load it.
    $ {) D. O0 n" I7 c7 @: A
  11055. ;;;
    & i, h9 I' e$ p* ^
  11056. ;;; If it can't be found or it can't be loaded, then abort the
    - P! z% u! T0 |3 y/ A: F
  11057. ;;; loading of this file immediately, preserving the (autoload)* Y/ ]2 u1 a% i! }! q
  11058. ;;; stub function.0 G8 r7 ^1 U0 Q5 |6 x: Y+ k0 b

  11059. 2 R. T0 R1 z+ z/ S" w
  11060. ;runs at load time - rk.
    . [8 t; f4 B$ {0 n8 y5 r4 J% Z, `
  11061. (cond0 \* B) E- ~& l6 A' d
  11062. (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.3 t/ [9 w; \! ]& x
  11063. (  (not (findfile "ai_utils.lsp"))                     ; find it
    ) D6 `+ `- W/ D+ i1 x$ u  F
  11064.     (ai_abort "EXCHPROP"1 b' H5 O; N1 A/ _6 v
  11065.               (strcat "Can't locate file AI_UTILS.LSP."6 ]" E+ |3 X1 N8 s) I
  11066.                       "\n Check support directory.")* X! ]$ c( i8 v5 a
  11067.     );ai_abort
    ! n. E+ M( `7 @0 V+ z- S& G
  11068. )
    # p! F" P+ C+ {* a% H6 p! m% \
  11069. (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    % y1 l3 M2 E$ I, P0 u8 G
  11070.     (ai_abort "EXCHPROP" "Can't load file AI_UTILS.LSP")1 \2 a: \- Z* L) M' c* H# p/ o
  11071. )) X- k: z  C6 [  k4 {4 s
  11072. );cond close( Q0 `0 ~1 I9 y1 D

  11073. , p5 S# u9 y9 Y! `( D: G9 ^* P
  11074. (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP
    ) @- w3 w( \) B) x. l, g
  11075.     (ai_abort "EXCHPROP" nil)       ; a Nil <msg> supresses
    ; @7 }' N8 I6 L2 R! G
  11076. );if                                 ; ai_abort's alert box dialog.* o0 [$ u5 Z9 ^2 b) n9 M+ [
  11077. - U/ r; I- n" t  ?4 n  W8 n5 O
  11078. ;;; ==================== end load-time operations ===========================
    1 ]0 c+ w/ o2 z

  11079. 2 d0 q* F* i) k
  11080. ;;; Initialize program subroutines and variables.
    ; X% h; S; d; V3 }
  11081. 9 x! y; M: h' y* Z
  11082. (defun ddchprop2_init()
    % k! [& L3 j' r" `4 p5 ~
  11083. 1 e; |: h5 ?# s' _% B4 U
  11084. 0 [% U  t" y" i9 r+ d2 b
  11085. 6 q+ \' x. r8 ^2 W; i6 R1 {- F
  11086.   ;;
    7 ^6 ^, b! v" R; U3 q0 Q
  11087.   ;; Define buttons and set values in CHPROP dialogue box
    & {5 |, F& R# P" y/ z  D
  11088.   ;;0 G9 v4 z8 }* l% X  _! G
  11089.   (defun call_chp2 (/ cmdact p1 p2), x; ?) ~) q$ e- O. c3 d
  11090. ; H4 P/ A! C' `" D
  11091.     (if (not (new_dialog "ch_prop" dcl_id))
    " }6 i' L( s7 `* N
  11092.         (exit)
    / ~' b9 ^) u6 K0 P0 f3 R" r
  11093.     )7 n4 i  [" j( ~2 @: l
  11094. : D% @6 X! Q" ]$ J! Q( S4 T( a+ E
  11095.     (set_tile "error" "")5 H: q$ Y0 i0 f
  11096.     ;; Set initial dialogue tile values
    ! ]6 e  o0 O4 I+ P
  11097.     (set_col_tile)$ U+ I! b, u) C( w5 O
  11098.     (set_tile "t_layer" elayer)- z8 v8 k, N, {! ^  B' u: N
  11099. 9 o8 y% Y" q0 R1 u) P# W+ ~3 t
  11100.     (cond9 u, |" O! i6 k- X) l# O
  11101.       ((= lt-idx nil)4 I  B, ?5 Z, s( b; U, v6 ?
  11102.         (set_tile "t_ltype" "Varies")
      J0 E" o" m& k, P
  11103.       )" F4 r3 z/ b. c, g7 [1 X
  11104.       ((= lt-idx 0) ; set tile "By layer & layer linetype"3 X  m. ^' }  s+ \; h% o7 a
  11105.         (set_tile "t_ltype" (bylayer_lt))
    - H$ }- y* H4 A5 h) x$ Y
  11106.       )
    ( ]+ R  a/ A8 d
  11107.       (T
    / I  \: T$ x  t$ d( U4 d6 R* L
  11108.         (set_tile "t_ltype" (nth lt-idx ltnmlst))/ c( q2 ~2 }3 f2 R; @# ^6 w' z
  11109.       )
    , b0 A8 I7 e, U; m4 m
  11110.     )
    ( u: E  w! K' m6 w
  11111. % Z4 a+ s; _/ o1 s( X- i7 n2 s; E
  11112.     (if (or (= ethickness nil)% O5 `3 p8 s/ ?  o
  11113.             (= ethickness "")5 p) U  U( o$ o+ p; ^$ L( R  X' C' K
  11114.             (= ethickness "Varies")
    , t5 b. h2 A, Y
  11115.         );or
    / U, ^% t! Y7 @1 o$ F4 c
  11116.         (set_tile "eb_thickness" "")2 S4 W9 L5 J5 e2 x( V0 w
  11117.         (set_tile "eb_thickness" (ai_rtos ethickness))* f7 B- ?8 c! y% Y: `( F; |
  11118.     );if
    + ~. y/ S5 }7 `! R3 ]
  11119.     (if (or (= eltscale nil)
    * [' m# n( F3 `- G( ]( a
  11120.             (= eltscale "")  _, o9 V2 s8 W+ e0 m
  11121.             (= eltscale "Varies")* j" G  X) s$ u$ P4 K
  11122. % U8 r7 L% W) J7 b" o
  11123.         )
    # _/ K( P: q6 G% c7 f. p
  11124.         (set_tile "eb_ltscale" "")* A8 o3 h( h& G9 R1 [1 x7 K
  11125.         (set_tile "eb_ltscale" (ai_rtos eltscale))
    ) M4 Q3 G6 I5 ~6 L1 T; I
  11126.     )+ U# ~1 W/ f4 U/ s
  11127.     (if$ z3 K" [( Y/ \/ F) y$ j( }
  11128.       (numberp ewidth)2 y( {  O' }/ K4 V6 X' c
  11129.       (set_tile "poly_wid" (ai_rtos ewidth))% s3 R+ y7 L4 n$ D# E
  11130.       (set_tile "poly_wid" ewidth)
    ' k! F7 X, Z9 @4 I) t
  11131.     )
    4 W7 g9 l7 m5 l1 G) X5 R
  11132.     (if
    ' E: ]# G( }' e8 p! x1 }$ i8 B
  11133.       (numberp eelevation)
    + H: }& D* ?0 B- v- k" U1 b# @( S
  11134.       (set_tile "poly_elev" (ai_rtos eelevation))1 o" b; m$ ?2 ^  o- \
  11135.       (set_tile "poly_elev" eelevation)
    + a; G2 G9 X% H  c# d9 K
  11136.     )6 a* A" a7 l5 E
  11137.     (if* y. ^0 y, Q! f) x  ^
  11138.       (numberp eheight)& z( ?# r& F. g/ z5 D
  11139.       (set_tile "text_hgt" (ai_rtos eheight))
      m4 l% k8 W8 @3 j# p& Y' o  c& n
  11140.       (set_tile "text_hgt" eheight)
    & ?" A6 B/ Q3 V' O$ T8 l( ^
  11141.     )6 F( p$ {8 @! i) P$ @+ Z
  11142.     (if (not estyle)
    . l3 E, ~4 j# m5 g
  11143.         (setq estyle "")
    $ c& M% j0 V& o0 v( T( |0 Z" |
  11144.     );if . A5 q& X2 ^9 Z2 e, h# M
  11145.     (setq hair_style_list (tnlist '("style" 16)));setq
    $ N+ H, G# o8 w6 B4 x9 F, {
  11146.     (if (not (member estyle hair_style_list))7 i5 r) |$ v5 u9 ]
  11147.         (setq hair_style_list (append hair_style_list (list estyle)));setq- u/ U' y7 ]' {2 }: Y& C: C
  11148.     );if
    # L7 s9 ]/ ]& Q; e
  11149. 9 p, e9 f+ f- x8 J$ y% Y
  11150.     (setq hair_style_list (acad_strlsort hair_style_list));setq" g9 m7 Y$ y' ~3 p: O/ ]) Z
  11151.     (mpoplst "text_style" hair_style_list)! d5 K: K- _; {* s" a6 ?+ T
  11152.     (set_tile "text_style" : C( T* |& f$ w; W# D
  11153.               (itoa (position estyle hair_style_list)), I% d3 V/ C: @
  11154.     );set_tile
    9 S+ w" V& {& P
  11155. " G5 h& e& Q  |, r
  11156.     ;; Disable tiles if need be...  ;@RK$ G; m; A" K1 Q9 h+ S) c4 E
  11157.     (setq a 0)( ~% m9 m+ p+ U1 Y% g2 D
  11158.     (while ( < a  (sslength ss))+ M# T! b0 G# D- s
  11159.       (setq which_tiles
    & \( \* K7 C4 g* t8 j; z4 v
  11160.             (ai_common_state (cdr (assoc '0 (entget (ssname ss a)))))), _: f: A" [/ T- D
  11161.     7 \4 Q, X* M7 i
  11162.       ;; If all fields are enabled, don't bother checking anymore./ n" B/ h' h. t( g" T! g9 x
  11163.       (if (/= which_tiles (logior 1 2 4 8 16))( o% o- l0 B/ H* Q! Y/ p/ J& x
  11164.         (setq a (1+ a))
    - f2 e7 c8 f% i8 K: l
  11165.         (setq a (sslength ss))$ a( Y1 D$ Q6 r1 w5 }/ ]3 E. I4 q9 l
  11166.       )
    ' A5 `. @6 m; j; g
  11167.     ); Q2 b/ i+ N- v
  11168.     ;; Layer Button and Text Field2 z$ m9 n0 u' V) D1 K/ R& z! L7 I, v
  11169.   d  B& K# U& T$ C' Q
  11170.     (if (/= 1 (logand 1 which_tiles))$ n4 f& g# f/ n4 M
  11171.       (progn
    5 p$ h1 h/ ~& b$ t( s+ M, W
  11172.         (mode_tile "t_layer" 1)5 R) P3 }  R; l* O, i  |0 M( R4 t
  11173.         (mode_tile "b_name" 1)
      B! B% r4 h% B+ {* `# [* @( ?, O
  11174.       )
    * m) U' S, s3 ^; o
  11175.     )
    - C2 z/ D. l) o; u$ ?2 \2 R+ y8 H
  11176. ; ]4 }: f% M$ A! ^" e; X3 h5 H6 c( i
  11177.     ;; Color Button and Text Field& W& `1 F* V: u0 |
  11178.     (if (/= 2 (logand 2 which_tiles)). j# x. o( y8 U5 Z* H" Z
  11179.       (progn, \& @6 `" k& t, ?" \* R' o
  11180.         (mode_tile "t_color" 1)1 x# V" {$ C. `# p9 `' o' ?/ z
  11181.         (mode_tile "b_color" 1)
    , h  d0 B! I3 T2 q9 W
  11182.         (mode_tile "show_image" 1)
    % C( ~' D) [& A& G9 S
  11183.       )
    9 }$ T5 @- W, P1 }( Y) w
  11184.     )5 D* S/ n2 K6 [# Y
  11185.     ;; Linetype Button and Text Field2 a7 p5 y' F2 i& F9 G; ~
  11186.     (if (/= 4 (logand 4 which_tiles))
    # Q$ v$ E1 m- D
  11187.       (progn
    " L8 S% ?/ Q5 J- z8 ~: J+ {+ L
  11188.         (mode_tile "t_ltype" 1)2 _. ~1 z8 W( L# T# E2 z* w0 o- O3 t. J
  11189.         (mode_tile "b_line" 1)5 p2 n- x7 ~) O) f( `$ R
  11190.       )3 u4 P8 v  b! c3 ?: a" Q
  11191.     )
    * \/ Q, E) w# ^
  11192.     ;; Linetype Scale Edit Field4 D" x+ V7 H( z4 ^
  11193.     (if (/= 8 (logand 8 which_tiles))
    8 P9 I- }1 Z& |% V  u
  11194.       (progn& e$ S6 W% e1 Z/ J
  11195.         (mode_tile "eb_ltscale" 1)
    ; |9 |# I1 e7 ?5 x# a+ q% B
  11196.       )
    % e" @/ D: q, M) t% F# n
  11197.     )
    # H% R- P! j, @* R0 f
  11198.     ;; Thickness Edit Field.' ^. P  P3 [% I/ t! v
  11199.     (if (/= 16 (logand 16 which_tiles))
    ( u' U) R+ K2 Q
  11200.       (progn4 _5 U0 k9 b5 Q3 c
  11201.         (mode_tile "eb_thickness" 1)6 k7 l! }3 O( Q3 D: R  s
  11202.       )
    7 @. d4 b  d( M% r7 b  R
  11203.     )
    7 J- i% u/ `9 g; s
  11204. $ n+ h% `% l- `. \% U
  11205.     ;; Polyline box and tiles          @rk 10:05 AM 1/30/97( Q9 a6 g- `: [
  11206.     (if (not (= 2 (logand 2 eflag)))- e+ |. y1 |/ C; I, t8 b; I
  11207.         (progn
    % N0 T7 \" T0 p) Z/ E
  11208.          (mode_tile "text_hgt" 1)" x* v+ j- C8 H1 T+ Q5 H
  11209.          (mode_tile "text_style" 1)
    . H. g+ f+ V( t  u2 i3 G2 ]
  11210.         );progn
    7 @" y: {3 X6 A( L7 Y
  11211.     );if# ]5 `) U+ ]2 y7 t8 w9 M7 B
  11212.     (if (not (= 1 (logand 1 eflag)))+ S6 j+ S" G  o- R: y
  11213.         (progn
    1 t9 v8 e# R* ^* f& b
  11214.          (mode_tile "poly_wid" 1)
    4 |1 D$ }5 @& B& ^
  11215.          (mode_tile "poly_elev" 1)
    ' p+ p$ S. o3 s; B
  11216.         );progn then disable polyline fields
    : B3 D4 \8 `% p6 ?
  11217.     );if9 O: P) X" G, y2 n$ b) l5 I7 i& \! n

  11218. : U- b# A  y' ]9 q- W
  11219.     ;; Define action for tiles
    . @* W9 F9 P5 `  v( B+ u
  11220.     (action_tile "b_color" "(setq ecolor (getcolor))")" r4 B' `5 i3 _( M& n
  11221.     (action_tile "show_image" "(setq ecolor (getcolor))")9 Z. ?$ c0 \& p( q! [1 a3 ]7 m& f
  11222.     (action_tile "b_name" "(setq elayer (getlayer))")4 A$ v2 f& @3 ~5 D
  11223.     (action_tile "b_line" "(setq eltype (getltype))")
    7 p( i! H& `$ v& e3 O
  11224.     (action_tile "eb_ltscale"  "(getscale $value)"), m& r0 C/ m3 X) p
  11225.     (action_tile "eb_thickness"  "(getthickness $value)")
    8 N% B6 F; R( X0 D* V( O( O
  11226.     (action_tile "poly_wid" "(getwidth $value)")2 a+ f' o- Y- \, h
  11227.     (action_tile "poly_elev" "(getelevation $value)")0 w2 P0 k0 a! j
  11228.     (action_tile "text_hgt" "(getheight $value)"). w1 U6 C7 ^7 ^  R6 _
  11229.     (action_tile "text_style" "(getstyle $value hair_style_list)") + E+ o" `0 o( n" O! z
  11230.     (action_tile "help" "(help \"AC_BONUS.HLP\" \"EXCHPROP\")")
    2 m* T- Z2 D- H8 \# E( r$ B9 Z9 l
  11231.     (action_tile "accept" "(test-main-ok)")1 T3 Q" Z) K7 I

  11232. ' o. m$ ^8 \9 t- G) [
  11233.     (if (= (start_dialog) 1)" S1 k/ P  m2 \0 i( n+ H* ^0 b. b
  11234.       (progn
    % A2 u3 e; X  `7 a1 C% z4 P) O
  11235.         ; Update special properties for polyline and text selection-sets.
    / `" E+ @5 E/ }& ]. ]* [5 h: d& }  Z
  11236.         
    - x; K; G, g+ c# i9 i
  11237.         (if (and (= 1 (logand 1 eflag))   ; polylines rk chprop; c3 i& O# x6 D3 V. J
  11238.                  (or ewidth% B2 @4 }* s2 k9 f# G6 E8 D4 v
  11239.                      eelevation
    ) M! z# s4 y. \, o' ~7 \! z
  11240.                  );or9 S0 P: C" }- M& r5 n& [' K& v2 v
  11241.             );and
    # |$ [) P6 Q( W$ |6 S& r& i3 g# D+ C
  11242.             (progn+ z7 {7 S, E6 X
  11243.              (setq  ss-index 0 ; S/ p' z2 k5 a. Q! h
  11244.                    ss-length (sslength poly_ss)
    + J4 e) W) v+ `! z# z/ U
  11245.              );setq
    2 l' j1 m; x7 x2 i% i
  11246.              (while (< ss-index ss-length)
    * n( a8 F. h5 e) e& y7 g8 [, U
  11247.                (setq ename (ssname poly_ss ss-index)" y) @. N4 E* w0 P8 L
  11248.                      elist (entget ename)( S/ O8 z) A1 d6 Z
  11249.                );setq% q7 y7 x* s# @
  11250.                (ucs_2_ent (cdr (assoc 210 elist)));this function lives in ac_bonus.lsp1 L& c) p6 F1 {. Y1 y
  11251.                (if ewidth
    & l( G2 M% P8 P! h8 L% X  D1 j9 w
  11252.                    (command "_.pedit" ename "_W" ewidth "_x")
    % u) p+ E' d7 ]6 V
  11253.                );if ) e% |, F6 Z* ?& ?4 R) d
  11254.                (if eelevation * D1 _$ E8 U: h6 X4 q% H7 ?
  11255.                    (progn& b  t& S% Y# c  u
  11256.                     (setq p2 (list 0.0 0.0 eelevation));setq
    " M6 T! X. x+ g
  11257.                     (if (equal (cdr (assoc 0 elist)) "POLYLINE")
    6 B4 l% Y) I3 P
  11258.                         (setq p1 (list 0.0 0.0
    ) G1 S( l5 C' w) ~& ~- }7 }" B
  11259.                                        (caddr (cdr (assoc 10 elist)))( I0 W& T  T% \. |$ E+ H' J
  11260.                                  );list
    * ]$ i9 e, x1 b% H$ h9 ~
  11261.                         );setq& F5 T" M% X6 H' n5 x
  11262.                         (progn
    . ?7 C& Y! {; _1 m7 A+ m7 ~
  11263.                          (if (assoc 38 elist)0 v0 e& }) C% @& E5 r
  11264.                              (setq p1 (list 0.0 0.0; q; [' Y7 K3 W3 J& C; t/ p
  11265.                                             (cdr (assoc 38 elist))  x# g4 g) u( H3 }  P* k+ }
  11266.                                       );list' C: |4 i' V- m4 R0 `4 l' ]
  11267.                              );setq
    % ?/ \, h! _- C  B) i# a
  11268.                              (setq p1 '(0.0 0.0 0.0))/ H# h/ D0 s3 D4 C* o; }
  11269.                          );if
    ( d# f0 f7 A- ^
  11270.                         );progn   ~% Y+ j, p; O2 C
  11271.                     );if9 h: q: l: k2 c% x. q( j4 O0 A
  11272.                     (command "_.move" ename "" p1 p2)0 S! C( O6 C2 i8 w1 ]6 f
  11273.                    );progn then change the elevation of the polyline
    2 B: p2 }! d, X0 b
  11274.                );if
    ' n) ~5 l1 T- M9 x1 I- i6 q& f
  11275.                (command "_.ucs" "_p")
    3 e7 l4 @* c* J' d+ X
  11276.                (setq ss-index (1+ ss-index))  ^; T8 n; r% d1 ]! ?4 l0 k/ {
  11277.              );while. j8 V" n) R5 v/ B! g
  11278.            );progn then polylines are in the selset4 T3 [  X4 u% j
  11279.          );if
    0 ]4 m* S6 J: q* x8 s$ l$ i
  11280.          (if (and (= 2 (logand 2 eflag))     ; text
    - y5 j3 B* Y( _
  11281.                   (or eheight
    2 t+ H, y1 U+ u% ~
  11282.                       estyle
    , a0 {% D2 m/ c- z% `8 G. O
  11283.                   );or: G1 v) M- `, u+ U
  11284.              );and
      i- d: U3 d! L: C$ W
  11285.              (progn8 a: U, ]; X5 Z; T. J* \
  11286.               (setq ss-index 0 ss-length (sslength txt_ss))/ z/ ?8 o) q* @/ D5 z2 u$ m3 Z
  11287.               (while
    / I! W" V8 r5 J. g6 K* ]* E
  11288.                 (< ss-index ss-length)
    & n- Y; W- E+ `+ t3 g) f5 m& s2 Z6 r1 e0 S
  11289.                 (setq elist (entget (setq ename (ssname txt_ss ss-index))))+ t! M6 O+ D1 G" [+ T  ?
  11290.                 (if (numberp eheight)
    0 p! K- l* F, k- [) C7 }7 B
  11291.                     (setq elist (subst (cons 40 eheight)0 M( _" K. `9 K5 G; {6 ^; k. `- |
  11292.                                        (assoc 40 elist)
    4 C5 ]) N- _4 N1 a- h+ u
  11293.                                        elist# p; |7 ?4 s! b4 ]0 f# }
  11294.                                 );subst0 r5 i: k& H9 ?8 G( Z8 k
  11295.                     );setq- T, ~1 _1 g( s& Y! Q7 b+ T' ]
  11296.                 );if9 H7 D7 B% X- h  o* H# A# `
  11297.                 (if (and estyle ;(not (equal estyle ""))
    . U8 n' ?( V1 ^
  11298.                          (not (equal estyle (cdr (assoc 7 elist))))
    & R7 b" T: U( L& j$ A, A* H( P/ u% D
  11299.                     );and
    " n! T$ h! Y! Y: P
  11300.                     (progn  - J$ m$ Z$ m& q1 Z6 l/ u& r+ ]
  11301.                      ;rk. This needs to be implemented as per mtext font issue in                                                                                                          ;    ddchprop_notes.txt 9 Y3 Q! f4 f3 D  x4 g
  11302.                      ;(if (equal "MTEXT" (cdr (assoc 0 elist)))0 A$ g5 b7 k5 R& G- [  P, C- h
  11303.                      ;    (setq elist (fix_mtext_fonts estyle
      w6 t; Y' Z# k+ L' F, ^4 f1 @5 ^7 v8 R5 V
  11304.                      ;                                 elist2 N) f: M. F- p
  11305.                      ;                )
    2 D& I. {% @9 y$ t0 q  i
  11306.                      ;    );setq then5 c; s" c5 g$ C0 H- J5 q5 a' I  Q
  11307.                          (setq elist (subst (cons 7 estyle)3 i% t; w3 Y6 f, a5 i. |
  11308.                                             (assoc 7 elist)
    6 h( E$ n8 w: E- M+ d9 W& l) g
  11309.                                             elist
    # B! t  X; \5 w  @$ x" Y: z
  11310.                                       );subst& ?  c, V2 Y# F
  11311.                          );setq else: o6 Q/ @! s( B9 z1 o
  11312.                      ;);if ( j$ ^7 q" R4 X
  11313.                     );progn$ i* F- Y( h  [
  11314.                 );if
    6 [* \/ a2 a2 ]( ?+ W
  11315.                 (entmod elist)
    2 O  @$ e+ _. {( p  u' x. X# L
  11316.                 (setq ss-index (1+ ss-index))8 L6 z% h0 V/ G7 R' A6 l
  11317.               );while& H1 a) n& F, w" J: o
  11318.              );progn then# o! `$ X) m( N  L9 A. n/ P
  11319.          );if3 _" S! i* {) E
  11320. 9 K; m* d6 p6 S7 U4 Y7 x7 `
  11321.         (setq cmdact (getvar "cmdactive"))) M" _1 P9 e" f/ j
  11322.         (command "_.chprop" ss "")
    5 V+ |7 K" ]/ Q' _5 Y
  11323.         (if (/= cmdact (getvar "cmdactive"))  ; Is CHPROP actually running?
    ! Q! L4 a2 p$ N0 y
  11324.           (progn0 ?2 z+ G% J+ B! P' a% R5 m) k
  11325.             (if ecolor
    . W. i9 Y/ u9 F3 d& x
  11326.                 (progn
    - N9 }: B5 D, S# f7 g
  11327.                  (if (= 0 ecolor)   (setq ecolor ;|MSG0|;"BYBLOCK"))4 _' @$ U4 C6 ?
  11328.                  (if (= 256 ecolor) (setq ecolor ;|MSG0|;"BYLAYER"))
    0 I2 N3 {0 D8 ~$ f& z/ Y
  11329.                  (command "_c" ecolor)
    5 Q0 }9 g6 I! z0 T, I0 ~
  11330.                 );progn then) V! \0 ]! h! r. R
  11331.             )5 P7 o( ?. v- j
  11332.             (if (and lt-idx
    4 q" k" j" L  U$ M- S, m# W
  11333.                      (/= eltype ;|MSG0|;"Varies")6 F2 R& ~3 e. s7 t0 ]) a
  11334.                 )  k- q% R7 B; G3 k: x! }' T
  11335.                 (command "_lt" eltype)
    8 C; e. [6 n. Y
  11336.             )
      T0 ?; }6 t0 |4 W- I& h6 V
  11337.             (if (and lay-idx 8 _& s# j/ d# p% j
  11338.                      (/= elayer ;|MSG0|;"Varies")
    * v0 y* d& t3 n
  11339.                 )
    + @' e! N3 `) p6 l/ L1 m1 N" h9 s; v
  11340.                 (command "_la" elayer)+ B, t* @- s) e# n; r! b6 G% ]8 h
  11341.             )4 m' }8 Z$ j$ r" w! g/ |$ K
  11342.             (if (and ethickness 5 n3 I- W) j9 D# I9 M
  11343.                      (/= ethickness "")
    " q" [) M+ `% I5 Y
  11344.                      (/= ethickness "Varies")
    - g# E& S  X$ j, u3 W  a& V
  11345.                 )* o$ u  p) ^6 c6 ~- y7 C
  11346.                 (command "_t" ethickness)' ]: |4 V8 U3 r- o* k
  11347.             )! M! V' E, H* g( O* u, `
  11348.             (if (and  eltscale (/= eltscale ""))( l( a+ Q  _; r5 b3 Q2 A0 c1 o4 y% {
  11349.                 (command "_lts" eltscale)7 i" M2 H$ _$ Q  V6 a; T
  11350.             );if! U5 b% O3 t- @# `* r1 U- w
  11351.             (command "")1 @% V9 ]0 ]0 |$ ^& p
  11352.           )% @$ t, S! a* R2 ~' c$ i
  11353.           (princ "\nProperties unchanged")  ; CHPROP didn't like our SS set/ {7 ]# R0 p8 F+ d! L0 K" T
  11354.         )
    & A* z5 |  p9 M# V8 [: x
  11355. % B9 q2 [, U' Q1 |! l" q
  11356.       );progn then OK was picked in the dialog.$ k5 }0 F& \) {/ Z$ v% {
  11357.       . k5 l5 \- Z& D7 \2 ~( X8 ?
  11358.       ;; Fred GERBER - 25-AUG-94
    1 Q* z! i* P7 f: `& k+ l
  11359.       ;; Don't print the "Properties unchanged" message when the user cancels  B3 ]0 }4 u' u' Z6 A& {2 F
  11360.       ;; the dialog because he knows that already (otherwise he would have
    / Z5 p( x# V6 i, s
  11361.       ;; hit the "OK" button). Display the message only if CHPROP fails for0 [# h# P; i3 U0 n  i" x% M5 A
  11362.       ;; some reason, because it is not the expected behavior of the command., v$ F8 k, E# X4 p% v4 R2 p
  11363.       ;;( I8 N* M; l2 Y
  11364.       ;; (princ ;|DDCHPROP2_LSP_8|;"\nProperties unchanged")
    : |* c& a% ?1 y
  11365.     );if; P, @" V% n9 N4 N0 z
  11366.     (princ)
    $ z' t. t. s, F7 \: D! ?4 C
  11367.   );defun call_chp2
    - K' z8 `% o2 i; U% P- J
  11368.   ;;
    . e/ i3 [1 N' ]' [+ y5 H
  11369.   ;; Function to set the Color text tile and swab to the current color value.- U5 y  Q7 V9 m
  11370.   ;;
    , M! V" ]) d& _' `3 q- M! c
  11371.   (defun set_col_tile()
    ; j4 L3 M  k1 C. v
  11372.     (cond) t- J7 I! N% \9 a, ]
  11373.       ((= ecolor nil)+ B4 p. z! L0 V
  11374.         (set_tile "t_color" "Varies")8 h: @# G* H/ F, _
  11375.         (col_tile "show_image" 0 nil)( x2 h# e4 [  R& N" R& B" I, g
  11376.       )
    * q8 H( B& y# p! y3 b8 S
  11377.       ((= ecolor 0)3 O) ^9 @+ H8 b# Z' [
  11378.         (set_tile "t_color" "BYBLOCK")! v. Y& [$ m: I/ S  ^
  11379.         (col_tile "show_image" 7 nil)    ; show BYBLOCK as white
    # j5 y& y  h* ~  z2 F) `
  11380.       )$ S9 o7 u/ P% z( k( i- N
  11381.       ((= ecolor 1)
    ( w7 f0 Z" G4 L
  11382.         (set_tile "t_color" "1 red")
    / ^' k. S1 b& Q2 v) E6 y
  11383.         (col_tile "show_image" 1 nil)% C6 N4 k' t  R4 k2 O
  11384.       )2 A/ p& a& B9 S/ I5 N7 d/ L3 {4 |
  11385.       ((= ecolor 2)
    * J+ m* m& W2 C. |4 y$ b; l& y
  11386.         (set_tile "t_color" "2 yellow")
    " [1 o& B0 H8 I* k* a/ D, R- B
  11387.         (col_tile "show_image" 2 nil)
    ( C5 D3 n4 R' q7 i
  11388.       )
    1 u; D6 h9 t, [' Q! {- \
  11389.       ((= ecolor 3); D* D% x% z; L. Y  a1 Y2 `
  11390.         (set_tile "t_color" "3 green")
    3 n4 t: E' J# H! G, H/ \
  11391.         (col_tile "show_image" 3 nil)
    " C& V! z: S, t0 n+ ~4 z- E
  11392.       )+ b4 X/ @, q/ `+ S
  11393.       ((= ecolor 4)
    $ ^( D6 z7 o& Q8 n- n! c
  11394.         (set_tile "t_color" "4 cyan")
    ' b9 N2 y) u8 `
  11395.         (col_tile "show_image" 4 nil)0 Y* G# z* o3 d, b6 t7 ]6 g
  11396.       )
    ' F2 V# ~9 e  o7 k4 e
  11397.       ((= ecolor 5)( q0 `& G/ n/ l+ B; _
  11398.         (set_tile "t_color" "5 blue")3 M; C: J! G5 F$ p7 y. h
  11399.         (col_tile "show_image" 5 nil)
    % v: K# U3 ~* x: I
  11400.       )$ S7 R# T: v4 M- M
  11401.       ((= ecolor 6)  F" y4 {. ~/ T. H
  11402.         (set_tile "t_color" "6 magenta")0 n5 U6 u  \# R2 M3 }. z0 o
  11403.         (col_tile "show_image" 6 nil)$ _/ v% w) g5 n1 h5 e1 g1 U
  11404.       )
    , J8 P+ {! j3 l: r# |% \. _+ |0 {
  11405.       ((= ecolor 7)
    & V& i; a+ b- ~  u) h0 ~' B
  11406.         (set_tile "t_color" "7 white")
    + R/ m) Q" l/ Q. j; o
  11407.         (col_tile "show_image" 7 nil)
    ; l  N2 \1 s+ D4 ?, @* W) A" S
  11408.       )
    , \1 a; _0 e  a0 m  x8 ?% t! U* Y
  11409.       ;; If the color is "BYLAYER", then set the tile to
    ! P" @5 d* a8 B) C, U
  11410.       ;; show it's set By layer, but also indicate the! r3 W; T5 D% @3 J0 g$ O- G
  11411.       ;; color of the layer - i.e. By layer (red)
    ' Q1 ^# R2 b$ k: s2 |
  11412.       ((= ecolor 256)* P' ~0 t  |1 y( V6 S9 v: W
  11413.         (set_tile "t_color" (bylayer_col))+ h4 X% h5 a' C. c( F1 o. s5 e* ?
  11414.         (col_tile "show_image" cn nil)6 K8 ~4 t- J$ y5 k
  11415.       )
    ; @( q9 ^% A! i: t2 f
  11416.       (T
    " e6 r% N+ r' I
  11417.         (set_tile "t_color" (itoa ecolor))5 K$ T$ ~! l3 f  s5 h" ~
  11418.         (col_tile "show_image" ecolor nil)
    9 s# m" [0 R7 ^4 o% S3 l3 x, \7 U
  11419.       )+ g# O: q/ G2 h- c1 M6 i7 g. d
  11420.     )
    3 V8 {8 G$ y4 H
  11421.   ), y6 T* ~$ h/ G
  11422.   ;;
    " {) u8 j7 n* ?6 r0 W* G5 A8 F
  11423.   ;;  Function to put up the standard color dialogue./ r* a/ y& c0 e1 t! G8 s, d
  11424.   ;;
    6 R% O1 U: ~! A% G7 G1 e
  11425.   (defun getcolor(/ col_def lay_clr temp_color)
    9 X) H. k+ X7 d( i4 _3 ?
  11426.     ;; col_def is the default color used when rq_color is called.  If ecolor
    ( g. k1 o. c; H. |
  11427.     ;; is nil (varies) then set it to 1, else use the value of ecolor.+ j9 K6 W3 n9 [( v0 C7 N
  11428.     (if ecolor
    9 k9 J( t5 Y6 h. Q# t. D
  11429.       (setq col_def ecolor)
    ( G; V& v2 [" A
  11430.       (setq col_def 1)
    ( A9 q+ g" b) s
  11431.     )
    5 r# n" K5 `2 h

  11432. ( \' S( H" \3 d! z5 p; Z  I7 @- j3 R
  11433.     ;; If we're working with a single layer, get its color
    # B: m0 ~0 C' t' A0 i/ w
  11434.     ;; for use in the color swatch if the user selects color BYLAYER.( j) |) l9 d0 f. F
  11435.     (if (/= elayer ;|MSG0|;"Varies")
    3 S8 u# t# [  {, U5 Z
  11436.       (setq lay_clr (cdr (assoc 62 (tblsearch "layer" elayer))))) v( e, K3 s7 X/ s, H8 }/ w4 e
  11437.       (setq lay_clr 0)  {6 `% c# Z4 N/ b6 t/ K% a0 q% K
  11438.     )6 R1 c* ?4 h- Y- G* _$ E9 J
  11439.     (if (numberp (setq temp_color (acad_colordlg col_def T lay_clr)))* s% A' C3 _7 M# [* x
  11440.       (progn$ a: E3 ~$ ^9 u  ]; {0 M# v$ O
  11441.         (setq ecolor temp_color)  i9 E3 R8 m) L
  11442.         (set_col_tile). X4 R+ Y+ x# @" ?- _
  11443.         ecolor
    ' H- i  j# o2 ~$ W% N
  11444.       )
    4 E0 E9 O+ ?/ I: Y" }
  11445.       ecolor
    , b/ o9 a7 N& a, u4 d( R+ W
  11446.     )+ S- y4 i2 W9 c: Y! P, Q
  11447.   )
    : O6 c% F4 z7 L% @
  11448.   ;;
    ) z* N5 {3 K% n& G, W
  11449.   ;; This function pops a dialogue box consisting of a list box, image tile,
    " |1 a# C3 Z- f9 O' d
  11450.   ;; and edit box to allow the user to select or type a linetype.  It returns
    0 k8 {/ \% Y3 F0 p( V
  11451.   ;; the linetype selected.  j, r. O3 R' x7 ]' W8 Y
  11452.   ;;- C# {1 C- K) P" P
  11453.   (defun getltype (/ old-idx ltname)
    9 M& S' O9 L9 K; b, V7 M# G6 y. P
  11454.     ;; Initialize a dialogue from dialogue file
    8 J& f9 |7 _9 Z, ~. E* M/ B; W  ]
  11455.     (if (not (new_dialog "setltype" dcl_id)) (exit))
      l: \& M' K" \6 t5 Q
  11456.     (start_list "list_lt")% N# b* l# i) j' h# @
  11457.     (mapcar 'add_list ltnmlst)         ; initialize list box% i/ `7 u4 O6 D! v+ P8 ?0 P
  11458.     (end_list): v; Q; @) t5 S! @0 D) l+ a
  11459.     (setq old-idx lt-idx)
    6 a* b1 ]0 _9 ]& e
  11460.     ;; Show initial ltype in image tile, list box, and edit box4 p" [/ n/ }$ Y$ m9 ?
  11461.     (if (/= lt-idx nil)5 [7 w7 p6 b2 C# ~7 t; x! y4 e# ~
  11462.         (ltlist_act (itoa lt-idx))
    8 I8 z) o, A5 v5 c4 R% B
  11463.         (progn! U8 U3 |& a) [- k5 ?
  11464.          (set_tile "edit_lt" "")
    " N5 A: F# u; f" F+ I) y' z
  11465.          (col_tile "show_image" 0 nil)
    - w' s" y) p* [1 a7 p
  11466.         );progn else
    - ], \1 b" b5 C" z) v/ F
  11467.     );if/ L) ~& R2 n. H& C4 W
  11468.     (action_tile "list_lt" "(ltlist_act $value)")
    ; `/ |% `: E4 B* y* T" D) `
  11469.     (action_tile "edit_lt" "(ltedit_act)")+ ^- P  F) G+ n, a! ]9 E2 p
  11470.     (action_tile "accept" "(test-ok)")
    ' [  |+ o: b) m+ o  N
  11471.     (action_tile "cancel" "(reset-lt)")& g: W$ L- M% ?
  11472.     (if (= (start_dialog) 1)           ; User pressed OK: A/ u* \4 o+ p  l# E7 j
  11473.         (cond
    ( v, q& C, [8 z( @. I+ }
  11474.          ((or (= lt-idx nil)
    , [. |; u  s0 J
  11475.               (= lt-idx (1- (length ltnmlst)))9 [- k( h; F8 \7 V# E% n# ?4 z
  11476.           );or
    ( b2 j. _- Y3 e4 }; Z1 e* q# O
  11477.           (set_tile "t_ltype" "Varies")
    6 Z0 ]. T1 v" R8 O; O) ?& \$ ?" K
  11478.           ;|MSG0|;"Varies"
    + P- K. u, [8 Z  W; |. P( ]
  11479.          )
    9 M2 {7 \5 [- s; u) }
  11480.          ((= lt-idx 0)1 Z1 d0 P6 K  Y# j
  11481.           (set_tile "t_ltype" (bylayer_lt))" @2 W& t6 O7 l0 g
  11482.            ;|MSG0|;"BYLAYER"1 [7 }* a0 m) r& @' T" `
  11483.          )5 A7 L, ]! z( ^) l6 c6 P" y# u  V/ t
  11484.          ((= lt-idx 1)
    / i& e$ `8 V  V. D" C! _: q: I
  11485.            (set_tile "t_ltype" "BYBLOCK")# `& f8 q3 z5 f8 Z! P2 V
  11486.            ;|MSG0|;"BYBLOCK"# g; A9 e5 H7 u
  11487.          )
    5 ]- l1 A' |: q
  11488.          (T$ T3 q0 e2 s' }% ]7 }
  11489.            (set_tile "t_ltype" ltname)4 v3 z9 U! p, {4 V9 a. G% q  k
  11490.            ltname
    6 F" k/ q0 ^! M2 N  h$ e8 G
  11491.          )
    4 [8 E7 k% c( V/ k; z& U
  11492.         );cond then  U4 v! ^: j: w" }$ |( s3 p
  11493.         eltype) p9 E8 P/ y2 N
  11494.     );if
    % u) c4 p$ J* p$ Q: Z( e  l2 p
  11495.   );defun
    $ S9 n- [6 U: H! S) f
  11496.   ;;
    6 M. {- u0 k" g7 [, ]# D# E
  11497.   ;; Edit box entries end up here
    5 a6 X7 ~9 o2 b1 d% _7 q1 L
  11498.   ;;
    4 ~! w; x# r, x1 }7 ]4 F5 g/ x8 H9 E
  11499.   (defun ltedit_act ( / flag)
    ! J# O6 O  N  F# I
  11500.     ;; If linetype name,is valid, then clear error string,7 k! H  d2 A: K
  11501.     ;; call ltlist_act function, and change focus to list box.
    1 L) H5 `, h* @( Q) g
  11502.     ;; Else print error message.2 t7 I' ~3 G5 o( y5 e* _
  11503.     & _2 }5 v; W/ D
  11504.     (setq ltvalue (xstrcase (get_tile "edit_lt")))3 M; E1 B4 _& H* E- X  e0 q
  11505.     (if (or (= ltvalue ;|MSG0|;"BYLAYER")
    ( A2 [! }7 Z' o7 Y* n% q! `, g! H
  11506.             (= ltvalue "BY LAYER")/ S$ C; t. f* e3 n$ W. P
  11507.         )8 y) F6 h( b/ r6 r8 W
  11508.         (setq ltvalue "BYLAYER")% |  k. f: g2 v8 X( b2 t! F* J
  11509.     )1 j7 P7 {) v0 m3 y
  11510.     (if (or (= ltvalue ;|MSG0|;"BYBLOCK")+ C8 u2 S+ m; d* ]) }1 h
  11511.             (= ltvalue "BY BLOCK")9 v- u& ~8 a, Q
  11512.         )
    ! ~1 m. i) ?9 r& w9 V
  11513.         (setq ltvalue "BYBLOCK")
    1 @3 Z& |: j0 a: B3 j
  11514.     )
    5 E" ~5 D" [9 J8 d* ^
  11515.     (if (setq lt-idx (getindex ltvalue ltnmlst))- h" B: h9 K, L. c& |+ j
  11516.         (progn
    ! M, U' I* P6 N. o7 v5 U* x, X
  11517.          (set_tile "error" "")7 H  Y' |$ r- m8 f2 j: X
  11518.          (ltlist_act (itoa lt-idx))8 M1 W* t$ Q& t; s+ g# E
  11519.          ;(mode_tile "list_lt" 2)
    7 d+ M/ n( u6 a$ Q$ w
  11520.         );progn then+ x# ~( j) X/ f) w5 j0 `: t
  11521.         (progn5 q4 s, i5 L9 e9 \& g
  11522.          (if (/= ltvalue "")# X5 _' K' A+ K" `7 c
  11523.              (progn2 W$ P- p2 ~. K
  11524.                (set_tile "error" "Invalid linetype.")% M3 [3 C" X0 }' h) k& U
  11525.                (setq flag T)
    , r6 |0 V" ~2 o# Y
  11526.              );progn
    " n, L5 G; s' }! v9 L
  11527.          )
    0 E9 I0 P8 f) i" W! e: L
  11528.          (setq lt-idx old-idx)
    - K% ]9 {! Y+ q2 N# [! B
  11529.         );progn else) u# ]; X9 b1 x' {% c7 V$ |" u) h( H  F
  11530.     );if
    + z" }8 l. [; W) d, G
  11531.     (if (and (not flag) ;added so a return will take you out of the dialog.) F5 y- o+ K. I3 ^% Y, F, s* I; T
  11532.              (= $reason 1)
    ( k8 ^9 w( o' H  B9 o4 `& d$ H4 M
  11533.         );and
    7 y$ J$ u( ~0 X% v; N6 ^, q8 |
  11534.         (done_dialog 1)
    ( P6 d- x0 F$ z1 \( V0 Y" z. K4 _
  11535.     );if ) }) ~  M7 D. n. }0 S
  11536.   );defun ltedit_act2 o5 p% n9 Q) N9 Q$ y+ U
  11537.   ;;
    3 ^9 [) d; i' ^: _9 z
  11538.   ;; List selections end up here; X2 J- P0 B& j+ y! p* j
  11539.   ;;
    * p  G$ k" A% m' o7 ~
  11540.   (defun ltlist_act (index / dashdata)
    ' P  z2 ?- E* e) R9 s" H2 h
  11541.     ;; Update the list box, edit box, and color tile
    # K0 u5 e) c3 n8 g+ m
  11542.     (set_tile "error" "")$ L/ x5 N4 \2 [+ V6 j
  11543.     (setq lt-idx (atoi index))* ?- ~+ m2 Y. D9 N2 g6 Y
  11544.     (setq ltname (nth lt-idx ltnmlst))2 G7 S6 d5 p) x- x1 X
  11545.     (setq dashdata (nth lt-idx mdashlist))
    ! m$ b" i* ~) B2 w
  11546.     (col_tile "show_image" 0 dashdata)+ X! V: r' [3 ?7 Z6 R! G1 Y
  11547.     (set_tile "list_lt" (itoa lt-idx))
    * J" [0 s2 c" U0 }0 e
  11548.     (set_tile "edit_lt" ltname)" Z8 H7 d  j! ?, w0 m4 e$ P2 a
  11549.   )  r" }2 a+ e( b2 |1 }  j! S, h8 V+ u
  11550.   ;;
    + G% U' P( O# ^: O! A
  11551.   ;; Reset to original linetype when cancel it selected; ]  l' Z3 Z. j6 f
  11552.   ;;
    0 F/ w; V6 g. b3 y
  11553.   (defun reset-lt ()
    $ j  u- b' l, W* k
  11554.     (setq lt-idx old-idx)$ ?5 |8 `: U; J# k
  11555.     (done_dialog 0)
    6 Q' v! g* f# N" m5 |( |
  11556.   )* w0 [# w5 A  g& k
  11557.   ;;' g0 F6 e. ^* p" U* D7 R9 v
  11558.   ;; This function pops a dialogue box consisting of a list box and edit box to
    ) n; I$ H" d* U( n
  11559.   ;; allow the user to select or type a layer name.  It returns the layer name' ^3 E- J9 f9 o( F- \& c
  11560.   ;; selected.  It also the status (On, Off, Frozen, etc.) of all layer in the
    6 M; }' N5 E2 D( D2 X$ u- N9 {
  11561.   ;; drawing.
    ( r( I, Y0 [9 \+ z" ]! c3 _: b
  11562.   ;;
    8 H; X" H) s0 J$ n0 `
  11563.   (defun getlayer (/ old-idx layname on off frozth linetype colname)* i/ [* i, Q. J! p) T
  11564.     ;; Create layer list the first time the layer1 Y0 y* Y: v6 e" j) ]
  11565.     ;; dialogue is called.
    * q$ V6 q$ w* k2 i8 {+ d0 I6 J8 C
  11566.     (if (not lay-idx)# f8 v- u6 a+ l+ P& _
  11567.         (progn
    5 Y: o% T; ?; L9 K5 t1 Q/ A
  11568.          (makelaylists)                     ; layer list - laynmlst- A; _+ ~7 ?9 ?( w1 a; ^8 _
  11569.          ;rk
    ' J/ G- k. U7 W
  11570.          (setq lay-idx (getindex elayer laynmlst))
    5 o# t1 K; s# V1 i
  11571.         );progn4 R# C" J9 T& v: ]0 b
  11572.     );if
    : B5 a# _' j: m" \( l/ S# H

  11573. ; t! C( }2 c2 t% ]; u; y
  11574.     ;; Load a dialogue from dialogue file
    " ~, {7 ?! j' d, Q- F
  11575.     (if (not (new_dialog "setlayer" dcl_id)) (exit))9 @. {" B0 g  A5 Z# E9 x1 ^
  11576.     (start_list "list_lay")- E! P$ F8 R$ p' S& k/ g
  11577.     (mapcar 'add_list longlist)        ; initialize list box
    5 A& N" q3 ], |7 z2 E( d
  11578.     (end_list)$ [* G9 I* B! h
  11579.     ;; Display current layer, show initial layer name in edit) L; @5 A7 T1 s  Q4 F# R
  11580.     ;; box, and highlight list box.
    $ z7 e7 U* |4 d! w# s2 Y9 [% p
  11581.     (setq old-idx lay-idx)
    & T: e+ T) u  D, J' k
  11582.     (if (/= lay-idx nil) (laylist_act (itoa lay-idx)))
    & ?8 }3 }+ h: `8 J, c4 C" u/ i; B
  11583.     (set_tile "cur_layer" (getvar "clayer")): B. Y; n% K8 R
  11584.     (action_tile "list_lay" "(laylist_act $value)")* }' I  t& k, ?  Y
  11585.     (action_tile "edit_lay" "(layedit_act)")9 L( u. m1 Z5 i1 P
  11586.     (action_tile "accept" "(test-ok)")& ^  x5 ]  {# u' a/ ~" i/ H
  11587.     (action_tile "cancel" "(reset-lay)")1 F! G; F8 y0 O( [
  11588.     (if (= (start_dialog) 1)           ; User pressed OK
    6 R+ l, S' ]8 D2 H
  11589.        (progn4 g, o1 b" a" `6 x9 I1 {, {8 L
  11590.          (if (or (= lay-idx nil)
    8 I1 x2 |  }! Y! T1 s
  11591.                  (= lay-idx (1- (length laynmlst)))
    3 O! V! c5 ^) M+ ^* H* o
  11592.              );or. `' Y# b3 E' V! _! F* b
  11593.              (progn
    * s0 l( {: ~4 E3 f: w$ j8 L
  11594.               (setq lay-idx nil)  
    ' |7 N& ~! x, f, l: r
  11595.               (setq layname ;|MSG0|;"VARIES")
      Z4 l5 i. ^  Z# Q6 f/ h1 _+ A  u
  11596.               (set_tile "t_layer" "Varies")" ^$ n% b  f9 j
  11597.               (setq layname "")
    & z' v+ n' C6 d+ q' G) D
  11598.              );progn7 F. {# z% g0 V2 z9 k
  11599.              (set_tile "t_layer" layname)' q/ J7 N6 F( `; J! M- v4 c
  11600.          );if& C" E9 @/ T# l) U% j# K
  11601.          ; If layer or ltype equals bylayer reset their tiles2 {7 v0 k3 R: V( i% `% i0 W3 D* ?) h5 Q
  11602.          (if (= lt-idx 0)# k! u- O  o3 Z
  11603.              (set_tile "t_ltype" (bylayer_lt))! w; l) T; f( R: }# x8 t% ~) p
  11604.          );if
    4 L+ S$ J' w5 m4 S
  11605.          (if (= ecolor 256)
      W+ }- s% w$ ]/ a
  11606.              (progn4 u. ^( ]) s! U8 D/ P) I
  11607.               (set_tile "t_color" (bylayer_col))
    ( C5 k3 z# x7 {  s
  11608.               (col_tile "show_image" cn nil): J, h8 Q9 s' m6 u1 {$ m8 u2 }
  11609.              )
    . d1 ?* h8 T& h5 L- V, ^
  11610.          );if) ], o5 ^' e. ^3 ^( r& \* N2 T
  11611.          layname
    3 y3 r& P( W+ C" p% K! R, ^3 _
  11612.        );progn  ?* a) g* a* y  S$ a
  11613.        elayer
    5 [  e3 w8 j& f  J$ w2 o# G
  11614.     );if
    % [, b1 P$ g# j$ `$ C& c! R
  11615.   ), K' M; }' Q) E% T! h
  11616.   ;;
    / i7 |: {/ |0 ~9 q1 L4 I
  11617.   ;; Edit box selections end up here
    . P. d8 V6 f: s" F
  11618.   ;;
    8 e5 o+ W# A3 E- L8 `4 w( r0 z
  11619.   (defun layedit_act()
    ; Z3 R+ L2 C7 p, P" H& K
  11620.     ;; Convert layer entry to upper case.  If layer name is3 i- j$ c/ M: R6 x5 h
  11621.     ;; valid, clear error string, call (laylist_act) function,6 \/ A5 n0 G, c8 I2 Y' c5 E* I
  11622.     ;; and change focus to list box.  Else print error message.
    9 ?# l+ ~8 h0 j1 Z" K
  11623.     (setq layvalue (xstrcase (get_tile "edit_lay")))9 B" T" ~* b( j6 ^
  11624.     (if (setq lay-idx (getindex layvalue laynmlst))( O  R: b$ u; S9 g! n7 m9 z
  11625.         (progn- w6 L7 d, \% m' \
  11626.          (set_tile "error" ""): T2 ^" J' c: s; B3 O1 B
  11627.          (laylist_act (itoa lay-idx))
    # R; J2 i0 I# c/ `0 L/ W: U
  11628.         )- U8 M: Y  n) @4 ^) n: @
  11629.         (progn! x2 q! a* U8 P  s1 z. k0 W
  11630.          (set_tile "error" "Invalid layer name."), [9 L% c3 \3 s8 N, ]
  11631.          (mode_tile "edit_lay" 2)
    ; y/ y0 Y7 l2 Z; |" W
  11632.          (setq lay-idx old-idx)* F! k1 n  y$ G  X+ K; }9 h3 E
  11633.         )7 s2 v% u* @3 n& p# D# N3 ]9 b5 w, U
  11634.     );if
    0 H3 ~- f1 u  W0 J# C* S
  11635.   );defun1 S2 s5 V: U+ T# L7 l: h0 Q# S
  11636.   ;;
    8 l7 U$ ^! i/ l) S! o
  11637.   ;; List entry selections end up here2 E9 p3 h( S3 r4 J& U6 |
  11638.   ;;8 F8 P* [) E- t3 S& q+ R
  11639.   (defun laylist_act (index / layinfo color dashdata)3 l* Y. V3 Q* z" ]$ A; k" l
  11640.     ;; Update the list box, edit box, and color tile+ B  S5 J. Y7 L1 U. j  r5 x
  11641.     (set_tile "error" "")
    . W' k" |  L' Y& P: [
  11642.     (setq lay-idx (atoi index)). J) c, X: D- c% Q) O
  11643.     (if (not (equal lay-idx (1- (length laynmlst))))0 }* X! L. t* p" a4 Q
  11644.         (progn 4 v" ]7 `: V% Z# b; T
  11645.          (setq layname (nth lay-idx laynmlst)). p( t' m) g6 i9 T# |* x
  11646.          (setq layinfo (tblsearch "layer" layname))
    " p5 N4 y! W/ }* R4 q- Q
  11647.          (setq color (cdr (assoc 62 layinfo)))8 }. @7 @1 m  B1 }8 x! \9 e
  11648.          (setq color (abs color))
    7 ~9 W1 c" K- b3 D9 s
  11649.          (setq colname (colorname color))/ g& X' I) B8 k. x% t3 H* m
  11650.          (set_tile "list_lay" (itoa lay-idx))3 C6 i1 e4 ], k& v
  11651.          (set_tile "edit_lay" layname)
    % Z+ {- o) B7 l9 v3 {1 w; n8 u. K
  11652.          ;(mode_tile "list_lay" 2)( ?4 s: o1 k9 d% e! @
  11653.         );progn then 6 ~; D, ~( u0 j6 B3 Q# |3 L, v
  11654.         (set_tile "edit_lay" "") + x7 ]" z' Q& E6 C
  11655.     );if
    : ]# _6 a; \) x" p
  11656.   );defun laylist_act7 D6 V8 d8 g; ~
  11657.   ;;5 W5 `0 l. {& \/ m2 N1 Q) z
  11658.   ;; Reset to original layer when cancel is selected+ S/ ^( K! x! l0 m; M
  11659.   ;;& h5 V" [/ C2 M
  11660.   (defun reset-lay ()  ~# M3 \& q7 K2 K* t
  11661.     (setq lay-idx old-idx)$ |* H  H1 F/ Q! X5 Z0 C7 i
  11662.     (done_dialog 0)$ c8 f. B, G) W/ A% R! {7 `" j
  11663.   )/ i0 p& t- ?! B2 K/ G$ t5 S" L  R
  11664. . W  r6 ?5 z; n5 U" x1 I
  11665.   ;; Checks validity of linetype scale from edit box.  It checks to/ ^; f; P8 x0 K7 n
  11666.   ;; see if the value equals "Varies".9 V9 n2 Y# o) Q* Z- t% i
  11667. + L) w- L+ T4 U! |- R
  11668.   (defun getscale (value / rval)5 L! ~* L7 d6 @8 |$ x
  11669.     (setq value (strcase value)6 _' F( R/ p0 F0 o0 \6 r/ G) m
  11670.            rval (distof value)# I, u' C7 G/ w' {5 B2 N, `; j
  11671.     );setq
    $ J- x" C/ K7 V9 t8 w' |& T- X
  11672.     (if (or (= value "")
    + ?- f+ |4 a* e4 W) O
  11673.             (> rval 0.0)
    + [, \. k, J/ c. H3 w6 ]  l
  11674.         )
    ( ~" k+ }9 p" ?6 z
  11675.         (progn
    ; `* ?- h4 p( z4 E
  11676.           (set_tile "error" "")
    - K4 w. l# m8 f; ?, \
  11677.           (if (= value "")) R% ~0 v! a9 {7 [8 t- G, X
  11678.               (progn
    ' D+ J+ l. d3 J' D1 R
  11679.                (set_tile "eb_ltscale" "")2 @0 ?3 D0 C' ~% k+ M) Z7 |2 G. Y
  11680.                (setq eltscale nil)
    8 n- ?1 P+ T( m2 Z
  11681.               );progn then. [5 i5 D% S7 T8 [: @
  11682.               (progn+ R3 j: m- u; [  ?7 f
  11683.                (setq eltscale (distof value))
    4 t0 _; l9 t$ t+ O, [& K4 ?, v
  11684.                (set_tile "eb_ltscale" (ai_rtos eltscale))
    3 g: t  c' O4 Z( X
  11685.                eltscale, c* Z0 b3 }7 n3 l$ G, v
  11686.               );progn else; s+ [8 `: `$ _
  11687.           );if
    0 P4 G7 w, M7 _& ^3 A
  11688.         );progn
    & ~3 X6 v, |( E+ ?* A* V) Q
  11689.         (progn
    ; J" n! m0 K6 g% ]
  11690.          (set_tile "error" "Invalid ltscale.")1 M. s. l2 b6 e1 P; |
  11691.          nil
    & b: M- t6 ~2 a( d$ x$ `/ @+ y/ `
  11692.         );progn else8 N; s( ^' M  T" \; }* H% b
  11693.     );if
    & y8 E3 @/ E5 K& T
  11694.   );defun4 i2 J* i: ^0 Q6 d' L
  11695.   ;;; |8 [# z* w- y; Q1 M1 M4 d7 b
  11696.   ;; Checks validity of thickness from edit box. Since (atof) returns 0 when a
    2 y3 ]: Z7 X# R; S
  11697.   ;; string can't be converted to a real, this routine checks if the first8 w" W6 Q) n/ N
  11698.   ;; character is "0".  It also checks to see if the value equals "Varies".- w$ r0 U+ P2 `1 T$ U( o# e, q- L
  11699.   ;;) a! U' j/ r* a5 B, h: Z
  11700.   (defun getthickness (value)
    9 F  ~2 w( v) A1 H; L7 o' |7 r9 E
  11701.     (setq value (strcase value))
    . `2 m( }4 r3 K0 @9 @6 p' w. `* `
  11702.     (if (or (= value "")5 G' J7 y' _% N& l5 q5 J( |
  11703.             (distof value)! r* j) s5 {# p$ _
  11704.         );or0 Z! w& z5 K) l  u' K& H1 I- v
  11705.         (progn5 ]* o4 ]4 }3 S9 u) x
  11706.          (set_tile "error" "")
    3 V: {. e+ V/ p9 K, }5 G" Y9 x
  11707.          (if (= value "")4 V9 M9 e7 R3 T8 f0 i3 [0 R, e7 O
  11708.              (progn+ @+ P8 t# Z* Q8 G/ @; @
  11709.               (set_tile "eb_thickness" "")
    1 Y/ b/ {8 [0 O3 C/ H
  11710.               (setq ethickness nil)
    6 f. d6 C" M" l# B$ Z4 [
  11711.              );progn
    ' f5 c( O9 K3 p2 M
  11712.              (progn
    8 {5 Y$ i2 N! \0 c" s  |
  11713.               (setq ethickness (distof value))
    9 i9 p6 D% t9 u
  11714.               (set_tile "eb_thickness" (ai_rtos ethickness))
    ; F, ]! J. |5 A9 U
  11715.               ethickness# N- {) f  R( r# j% t& b) c. m( i
  11716.              );progn
    + i. K9 X* o& B* ]7 X9 u; O1 K
  11717.          );if# E" R- w. F- L8 h) z5 {
  11718.         );progn8 l! f& |: J* ~' r4 O7 M
  11719.         (progn
    $ Q1 f$ a2 y0 V) B/ I6 j: U/ L
  11720.           (set_tile "error" "Invalid thickness.")3 y% l( y1 a3 J2 R
  11721.           nil2 Y- ?% ]5 A. Z
  11722.         );progn
    # K6 ]9 A, U6 _% i/ }2 _
  11723.     );if# U& Y/ w/ ^$ T! O4 D
  11724.   );defun & A, W  L9 a$ Q* w6 L2 x
  11725.   ;;
    * x; E* Y7 V+ h- H  }
  11726.   ;; Checks validity of polyline elevation from edit box.
    : K: x2 x$ |& m. P5 y0 Q
  11727.   ;;4 D7 N8 q! f8 ~
  11728.   (defun getelevation (value)
    # R" t5 c  p. Q6 ~/ P
  11729.     (setq value (strcase value))
    ' I: x) g9 t1 K' g! B
  11730.     (if (or (= value "")
    2 d" Z. J$ i9 j
  11731.             (distof value)
    + I9 s+ n% x! O( R# B
  11732.         )! u+ p* d1 D- g/ T: a& Z3 {
  11733.         (progn: ]( m8 b, r% N" V+ O) L: E8 @
  11734.          (set_tile "error" "")* S" m$ \* k( S7 ~
  11735.          (if (= value "")# }. d- n/ G; f
  11736.              (progn/ E0 q( N) t  v+ }) ~5 @7 b3 @
  11737.               (set_tile "poly_elev" "")
    / d2 P% Q  g- i: Z+ O4 T- R& N) S. b
  11738.               (setq eelevation nil)
    " d& N% v5 s1 ?9 o# W4 o
  11739.              );progn
    % o+ ^( B* W+ S: q9 S" U
  11740.              (progn
    : e$ t' J% q" u! w  F- P' r  w/ |
  11741.               (setq eelevation (distof value))
    0 @+ c: q2 Y" b# E
  11742.               (set_tile "poly_elev" (ai_rtos eelevation))
    3 H+ W5 r& ~, o
  11743.               eelevation3 X( P8 ]3 ?% S: U6 e
  11744.              );progn
    ) T" b6 B$ \8 _- L" F/ h( n
  11745.          );if6 N. a  d$ ]) t
  11746.         );progn
    % f* v3 v: G7 l4 J
  11747.         (progn
    0 c9 x0 M0 [& H6 x: U( p
  11748.          (set_tile "error" "Invalid elevation."): K1 K, D' @; T8 n
  11749.          nil" W% e* y4 B! a# n8 F7 a7 x4 a/ T
  11750.         );progn
    & h2 D4 S2 P0 ^- u# G/ S
  11751.     );if9 V7 M: d& c0 Y
  11752.   );defun: l, C, z, O: @4 a8 |& X
  11753.   ;;2 R% M) @0 [8 N! I
  11754.   ;; Checks validity of polyline width from edit box.  v2 i$ j  t/ B2 B; j. g! O- Z, C
  11755.   ;;
    ( A) H: Z/ ^2 _9 N" O" Y
  11756.   (defun getwidth (value / rval)
    $ w" p- z5 z- s
  11757.     (setq value (strcase value)
    . \3 U; ]6 H" W% w! q+ ^
  11758.            rval (distof value)
    5 a: S# |8 P7 t* H. c( \! ~6 O3 Y
  11759.     )4 {, L+ b3 c& }. m, y' {
  11760.     (if (or (= value "")/ Q/ k7 O& h! l
  11761.             (>= rval 0.0)1 ^9 F7 W9 I: m8 J0 Q7 x4 M
  11762.         )
    0 M, C6 Y: j! f/ f
  11763.         (progn6 e) h3 I0 L3 b( K0 t& x
  11764.          (set_tile "error" "")
    ( }3 W# v- t1 a6 p( I7 y
  11765.          (if (= value "")
    ( T  @* S5 J# h% W0 y) m
  11766.              (progn+ G6 \" J+ v4 C, }9 j8 d
  11767.               (set_tile "poly_wid" "")
    9 ~( U$ G" Z9 [8 d' u# S$ L
  11768.               (setq ewidth nil)9 g5 G7 N( b7 c) \7 M, W% G6 x
  11769.              );progn0 p( ^4 q9 ~; ~0 ^; t! u2 ]
  11770.              (progn$ d' p9 b! w) C: ]6 \4 ~
  11771.               (setq ewidth (distof value))! D  D- u; }' v- V
  11772.               (set_tile "poly_wid" (ai_rtos ewidth))
    - j/ I7 v1 D- Q6 S4 }' A# L' e3 y
  11773.               ;width+ I1 J" [8 w* `/ d! L
  11774.              );progn" s7 a  @( n5 O! D: O8 d/ ?( G
  11775.          );if* Y" e& B; p- `7 C: N+ \4 A/ }. u3 U
  11776.         );progn/ @& T' c) N/ c, [" g* C
  11777.         (progn" M0 T- }) `/ \
  11778.          (set_tile "error" "Invalid width.")( ?- i% j& F; C4 R
  11779.          ;(setq ewidth nil)$ M% a$ e, v# k3 t* w
  11780.          nil ( s% f* {$ i8 K0 Y$ i
  11781.         );progn- ], d! e9 P/ [8 }' _( ?
  11782.     );if
    - u  W* k9 U0 i9 C
  11783.   );defun7 Y1 R- e* D5 U' F& T7 ^' K
  11784.   ;;7 F6 b9 k6 S6 m3 J+ s0 w8 ^- _  Y
  11785.   ;; Checks validity of text height from edit box.. ~* [1 q. K3 X" l; Y, c5 |: T( F
  11786.   ;;6 O( c. |) y* g+ j9 `! H
  11787.   (defun getheight (value / rval)4 H& n, b9 w& S& R$ l5 @0 f
  11788.     (setq value (strcase value)9 p3 }* B/ ?( ]: e
  11789.            rval (distof value)
    2 ]3 J/ n! n% Y, \0 `5 `$ w, }; E. U  w
  11790.     )
    ) ?2 q. ^( h' T5 B& ~1 }/ l+ o
  11791.     (if (or (= value "")
    $ {* G4 S) _; l0 H# A
  11792.             (> rval 0.0)6 `" z1 b1 M3 X! N" _& `! w- N
  11793.         )+ B( B0 E$ M2 S
  11794.         (progn2 m, G4 _- ^% y
  11795.          (set_tile "error" "")
    & X; P: q- n" X1 i" @4 P4 K' h
  11796.          (if (= value "")
    : h9 I+ }0 M2 q6 ?2 n- }
  11797.              (progn; g/ I% i" Q( _7 l/ F; B
  11798.               (set_tile "text_hgt" "")
    6 A8 `4 h5 o% z! ~  O
  11799.               (setq eheight nil)3 f9 s& r: ?% b. x" d' j0 ~% M$ K
  11800.              );progn
    ) h# _, j6 @: m' B7 V! Z
  11801.              (progn1 ^! ?/ \' N$ K( ?% ^
  11802.               (setq eheight (distof value))
    9 c9 z* f  i2 w; [6 _; v, g& g
  11803.               (set_tile "text_hgt" (ai_rtos eheight))* F0 g- t* G. }" q
  11804.               eheight
    ) V# ~& P, Q" V9 o$ G0 F8 G
  11805.              );progn
    6 [3 S% S7 M* e: j
  11806.          );if' C( g" V, K( H1 c
  11807.         );progn  G( w4 ~5 ]3 O% p* s! e5 @! O
  11808.         (progn
      v& r  Y+ r6 A& y* x
  11809.          (set_tile "error" "Invalid height.")
    1 v0 b8 ~' U6 H
  11810.          nil
    1 n) z4 \, \5 a( H) L- a
  11811.         );progn) J+ h9 j; G: k
  11812.     );if
    1 F& u8 O+ n/ `3 J1 D& }
  11813.   );defun9 u2 Z, a1 P! s8 _/ V

  11814. 6 R4 }# [: M( t3 S: e9 c# v
  11815.   (defun getstyle (value lst / rval)% b! a* ~, P, d' ^7 a
  11816.     ;(setq value (strcase value))0 n' P8 m% W0 x  V1 F. W" X
  11817.     (set_tile "error" "")# e! i& g5 I! r' B
  11818.     (setq estyle (nth (atoi value) lst))
    & v( g: V8 p1 R; R" b9 o+ S
  11819.     (if (equal estyle "")4 _8 A# y3 \7 ~% e7 M
  11820.         (setq estyle nil)
    " i- T" n- S8 d1 k" s. S4 B0 \
  11821.     );if
    3 s# n2 R' d7 U$ v2 U

  11822. ; z0 k8 {5 t2 ]/ I8 z, n8 }+ a
  11823.   );defun getstyle' S, p4 V4 T0 R5 w" }4 @

  11824. ; l4 W0 u1 Y: s5 m" C# Y) U' ?
  11825.   ;;6 J# y7 }1 o3 E; M/ h
  11826.   ;; This function make a list called laynmlst which consists of all the layer
    1 v, t) ]' _& m! B8 ^# i
  11827.   ;; names in the drawing.  It also creates a list called longlist which
    , x1 ^1 i* C4 e1 B
  11828.   ;; consists of strings which contain the layer name, color, linetype, etc.
    / w) ~: x" Y/ M" X
  11829.   ;; Longlist is later mapped into the layer listbox.  Both are ordered the! Z+ H& R2 t3 A9 A$ _
  11830.   ;; same.
    ) e2 q) s# P% n' w
  11831.   ;;. ~: O2 B" f6 Y; k) I
  11832.   (defun makelaylists (/ layname onoff frozth color linetype lock vpf vpn ss cvpname( `* u* A1 k/ P- B1 u
  11833.                          xdlist vpldata sortlist name templist bit-70
    3 F9 S0 M+ O5 @2 y7 c1 c" `% A
  11834.                          layer_number
    , b( [7 M/ A+ s6 N
  11835.                       )
    2 F! m7 B% ?9 x4 U
  11836.     (if (= (setq tilemode (getvar "tilemode")) 0)
    9 ?  i; p1 b, Z" M, T1 D
  11837.       (progn+ a) }, j: X) w
  11838.         (setq ss (ssget "_x" (list (cons 0 "VIEWPORT")$ b7 _' m, x8 l# C- H2 {% n
  11839.                                   (cons 69 (getvar "CVPORT"))! M# x  A$ }1 B- v- I% y& P; B
  11840.                             )
    : ~# m$ ?) c9 ~* h' n' x6 N
  11841.                  )
    - i0 N0 v) o2 A8 b
  11842.         )
    & q/ V; c: I2 s2 M
  11843.         (setq cvpname (ssname ss 0))9 V9 m* n4 h; y1 Y
  11844.         (setq xdlist (assoc -3 (entget cvpname '("acad"))))6 t* @! P' Z  Z: i  N2 Z
  11845.         (setq vpldata (cdadr xdlist))7 @' U& ^; x5 ~8 K# D
  11846.       )4 r, A! d+ u8 f6 e% C- W/ W( j
  11847.     )
    7 K: _; s: l: I' z" R, Y
  11848.     (setq sortlist nil)$ Y  p7 \6 Z- R4 m8 H2 I
  11849.     (setq templist (tblnext "LAYER" T))
    8 U$ H9 Q. X, Z( p# H
  11850.     (setq layer_number 1)
    & T. d  e: X2 j2 B
  11851.     (while templist
    6 D/ E) M+ j( v4 `$ r  V
  11852.       (if (not (equal 16 (logand 16 (cdr (assoc 70 templist)))))  o; _! E' j$ I: {% z
  11853.           (progn  
      B( F$ |% Z3 n, d1 H
  11854.            (setq name (cdr (assoc 2 templist)))
    6 n5 G7 V. q" H( P1 H6 u5 L7 ^
  11855.            (setq sortlist (cons name sortlist))
    ) y- p3 _. }5 Y$ i, G1 G' V
  11856.            ;; Not dead message...
    ' f) r3 O+ [7 ?2 q, m4 p3 T
  11857.            (setq layer_number (1+ layer_number))
    ( T2 p1 H9 |6 X3 F  t' Q* N; P
  11858.           );progn
    : U1 b7 y' u4 O0 k) [
  11859.       );if! J& b5 L$ W7 w$ d( n
  11860.       (setq templist (tblnext "LAYER"))
    " g& }9 i8 X2 Y0 K8 t
  11861.       (if (= (/ layer_number 50.0) (fix (/ layer_number 50.0)))3 S) v' {% A' F, m9 e+ ~
  11862.           (set_tile "error" (strcat "Collecting..." (itoa layer_number)))" o* j1 t6 z, H& |( x" `
  11863.       );if
    9 i1 m  c8 \& C/ _0 `5 Y
  11864.     )- \/ ?5 C8 N& v( O8 q' ~% c& ?
  11865.     (set_tile "error" "")
    9 s& B  L5 J6 d5 {; e# T
  11866.     (if (>= (getvar "maxsort") (length sortlist))
    ) H5 |& d! V2 i& m' k% Z# \
  11867.       (progn) s, C7 _+ q+ C9 ?7 M2 ]" h
  11868.         (if (> layer_number 50)
    + b* O) l1 ]% s: e
  11869.           (set_tile "error" "Sorting...")+ o' X' ~0 ^, M& D
  11870.         )& G% c! ?+ H1 ?4 Z3 h% _
  11871.         (setq sortlist (acad_strlsort sortlist))
    9 e  D) F; _: S" M
  11872.       )6 }. V+ W0 ]& |- H3 }
  11873.       (setq sortlist (reverse sortlist)), H/ h: R7 L* F
  11874.     )! C+ }3 l6 V) |1 ~8 r
  11875.     (set_tile "error" "")  F" _" N8 \3 w* J
  11876.     (setq laynmlst sortlist)9 @: w8 D% D* i: E8 Z
  11877.     ;rk
    ' T# U7 e/ t' \4 N; Q8 }
  11878.     (setq laynmlst (append laynmlst (list "")))     
    , n$ C* T5 U$ [8 B) G* T
  11879. / t9 C* ]7 B: @5 s( G" D# T9 M
  11880.     (setq longlist nil), i& b. ]3 F( f" N3 B
  11881.     (setq layname (car sortlist))) D, I8 U: f  l  y+ ?
  11882.     (setq layer_number 1)7 A# I: C4 S0 `1 o# b# y8 h
  11883.     (while layname$ O+ e/ |: p% B5 @2 R) i! {
  11884.       (if (= (/ layer_number 50.0) ; i. D1 z( g; l4 A. @& X3 w
  11885.              (fix (/ layer_number 50.0))$ q7 c% [' Z- y4 R
  11886.           )6 i9 l: F% i3 g3 ?/ G. x
  11887.           (set_tile "error" (strcat "Analyzing..." (itoa layer_number)))$ d/ `5 Q# V5 A( M5 Y; j% A+ y7 U
  11888.       );if; C0 F, X$ U  _+ H, Y
  11889.       (setq layer_number (1+ layer_number))
    3 `- a  N# K- j" u0 s
  11890.       (setq laylist (tblsearch "LAYER" layname))" y: A3 @' P' h- s, r- d
  11891.       (setq color (cdr (assoc 62 laylist))): Z  S& q, B/ i9 N, |1 u
  11892.       (if (minusp color)
    ' \3 I% ^3 A' D  e" r
  11893.         (setq onoff ".")' \* E4 W* B( G+ {
  11894.         (setq onoff "On")# ^6 |8 o7 y( |5 c8 J' G
  11895.       ), Z. w' _' v" b9 q2 e
  11896.       (setq color (abs color))& x+ \! k7 ~5 k1 v6 \
  11897.       (setq colname (colorname color))$ U7 n, ~. H3 ~7 z6 O! t1 n- M
  11898.       (setq bit-70 (cdr (assoc 70 laylist)))
    ; P. u" ^7 ^& S  ^
  11899.       (if (= (logand bit-70 1) 1)
    + {8 c+ I4 X2 k, A$ K" O" W7 c
  11900.         (setq frozth "F" fchk laylist)
    0 ]% \) i+ k1 ]  C; |
  11901.         (setq frozth ".")& a# e6 u' e$ G, |# w( M
  11902.       )* j" g( q1 n7 V$ y8 H
  11903.       (if (= (logand bit-70 2) 2)5 u4 f) Z2 v0 T1 Q  q
  11904.         (setq vpn "N")
      s: _, z% K5 c4 W) d$ }# ?  T
  11905.         (setq vpn ".")+ |" k+ D" Q! z& ~) t2 }
  11906.       )
    9 _& G' r5 l" b( f: q
  11907.       (if (= (logand bit-70 4) 4)
    5 U( p8 \( N! l+ e* O
  11908.         (setq lock "L")
    * G% F, I) O/ w" |9 S4 b
  11909.         (setq lock ".")' ?& a& s& V" W' J5 h0 `) R' w. q
  11910.       )
    : C& L. V8 n; j3 b* ?1 T
  11911.       (setq linetype (cdr (assoc 6 laylist)))
    & P: B& M9 Q# p
  11912.       (setq layname (substr layname 1 31))
    % A* n; O9 M1 M& s
  11913.       (if (= tilemode 0); [: I: D$ p; r$ u. G9 }9 q, |1 C- V# L" C
  11914.         (progn: |* {" f/ O  j9 C1 i8 ~% Y' c3 u
  11915.           (if (member (cons 1003 layname) vpldata)
    ; p+ ~0 G. R' o) G0 ^2 J9 D
  11916.             (setq vpf "C"). a' n1 u/ G( M; ^& q$ |
  11917.             (setq vpf ".")
    ! |: G, p$ N/ r" L9 r% D( b. n+ Z
  11918.           )
    6 v5 _* s% R0 c. w5 h
  11919.         )' [8 b, s# r- a/ ~# u7 W/ T; g
  11920.         (setq vpf ".")$ a8 Y4 h7 T& r, M1 a: m
  11921.       )4 B, u% e3 b1 _0 P- l9 g( K
  11922.       (setq ltabstr (strcat layname "\t"8 J- W4 z# o  n1 P4 O5 g* k
  11923.                               onoff "\t"7 ?& A3 w3 Z( h& u: U0 q( _" I
  11924.                              frozth "\t"5 p' q5 {5 `  f1 y$ |$ a
  11925.                                lock "\t"
    ! X% b* X% P# _. s+ S
  11926.                                 vpf "\t"
    ! m1 B! \. u$ E" r/ O. X4 U
  11927.                                 vpn "\t"" S7 M' g& V( ]4 j
  11928.                             colname "\t"
    ) M3 P0 w& c& j" f
  11929.                            linetype
    2 p0 V! @# _( F1 h( B. G  ~
  11930.                     )
    4 a/ V/ x2 p: R; F! Y; n
  11931.       )$ b! j5 r2 c! M/ }: x' q
  11932.       (setq longlist (append longlist (list ltabstr)))- l8 K9 ]% ^% E0 c2 x
  11933.       (setq sortlist (cdr sortlist))
    # s( o; V/ h9 q" u; U
  11934.       (setq layname (car sortlist))* }- P3 T* u& p1 r! t
  11935.     );while6 P: D$ |3 ]* K7 i3 c4 |
  11936.     (setq longlist (append longlist (list "")))
    ' z! R8 j& t4 L2 @3 f+ O: _$ m/ H: X
  11937.     (set_tile "error" "")
    # X% {% g% Q# ?" q+ ]) v! B% W2 f1 K- k4 K
  11938.   )1 L4 K0 r/ \7 C- W/ I
  11939.   ;;
    9 c" Z- p7 o2 |: H2 ~1 H
  11940.   ;; This function makes 2 lists - ltnmlst & mdashlist.  Ltnmlst is a list of
    - O( v' {' j; ~% I6 ]
  11941.   ;; linetype names read from the symbol table.  Mdashlist is list consisting" \- H2 V- p) l( U" k: P6 `3 U
  11942.   ;; of lists which define the linetype pattern - numbers that indicate dots,7 s2 U. K6 T- T: W& Y% u  w
  11943.   ;; dashes, and spaces taken from group code 49.  The list corresponds to the
    7 M- A- A: D. Y, P
  11944.   ;; order of names in ltnmlst.4 b9 u5 S: f9 c% q: O' |# V4 v
  11945.   ;;) y1 f4 P6 s9 h
  11946.   (defun makeltlists (/ ltlist ltname)' ^+ o# V' c7 o1 X& z
  11947.     (setq mdashlist nil)3 N4 q' h4 t4 Z
  11948.     (setq ltlist (tblnext "LTYPE" T))& Z3 X" d. `& _8 L0 I8 `
  11949.     (setq ltname (cdr (assoc 2 ltlist)))
    ' T; {+ K2 k; k' I* ~+ @& W
  11950.     (setq ltnmlst (list ltname))
    ! G" g) F- V; h" T1 v' M0 u
  11951.     (while (setq ltlist (tblnext "LTYPE"))
    " s& y& }4 f; _4 L2 J! x
  11952.      (if (not (equal 16 (logand 16 (cdr (assoc 70 ltlist)))))
    $ R$ d3 w/ o; B! R0 p
  11953.          (progn
    ; A' G$ w6 i  T' F; A) s0 P/ O
  11954.           (setq ltname (cdr (assoc 2 ltlist)))/ t' A& h# }# n5 _7 [: g
  11955.           (setq ltnmlst (append ltnmlst (list ltname))), o  N/ i) R) `1 |3 d. X# }! Z
  11956.          );progn3 u9 m, Q: i& X' z# \7 p
  11957.      );if
    5 h+ ]4 b: E3 R
  11958.     );while8 l4 O' n  {0 V+ A: C  o3 H' D
  11959.     (setq ltnmlst (acad_strlsort ltnmlst))# m# a1 P5 {4 E# i' U% Q
  11960.     (setq ltnmlst (append ltnmlst (list "")));add by rk 8 Z5 u/ X9 o! ~7 m) S5 v% m
  11961.     (foreach ltname ltnmlst
    " N5 _5 t' ?$ }
  11962.       (setq ltlist (tblsearch "LTYPE" ltname))
    # k  L8 m8 j6 M. l! d6 I2 T. R
  11963.       (if (= ltname "CONTINUOUS")
    / H+ y+ U- J2 X. N. \* P
  11964.         (setq mdashlist (append mdashlist (list "CONT")))
    $ b9 D$ c# O$ h' Q0 J1 c! z; D! e
  11965.         (setq mdashlist( V+ X! ]# L9 K1 Q
  11966.             (append mdashlist (list (add-mdash ltlist)))
    4 d% r, |9 \" w( d8 x0 Q
  11967.         )
    7 t( G5 ^, _( B9 N3 d. y) C" N* C# d
  11968.       )4 f4 t1 k5 I* O. C2 f. h/ l
  11969.     )% b5 P) o. T4 g$ q; P3 ~! g
  11970.     (setq ltnmlst (cons "BYBLOCK" ltnmlst))
    # d( p- \- q  D7 {
  11971.     (setq mdashlist  (cons nil mdashlist))
    / A% X( U! Q5 b8 T8 v
  11972.     (setq ltnmlst (cons "BYLAYER" ltnmlst))- U( ?* ?* @" {/ j' t6 H6 F
  11973.     (setq mdashlist  (cons nil mdashlist))5 M# u" X+ _5 f5 B0 }
  11974.   )# a) q8 y( ]# x6 C4 Q8 ~1 w
  11975.   ;;
    / v+ z  z6 U5 {
  11976.   ;; Get all the group code 49 values for a linetype and put them in a list
    $ Y& o2 |* G. s3 \% v
  11977.   ;; (pen-up, pen-down info)
    " O2 M" E  R$ K) t5 d& s
  11978.   ;;
    - T2 x  q8 P( E
  11979.   (defun add-mdash (ltlist1 / dashlist assoclist dashsize)
    ; z2 q" T! V8 u6 a; G' Z3 W
  11980.     (setq dashlist nil)
    / I, u( r1 I; ]0 u! I/ y  ~
  11981.     (while (setq assoclist (car ltlist1))( Q3 F  c: j1 K2 @# T  R! O
  11982.       (if (= (car assoclist) 49)" V- y$ [  X1 U% l& W* z: y1 e
  11983.         (progn
    9 w8 A& l2 T0 q3 h3 K. Y( G. F
  11984.           (setq dashsize (cdr assoclist))+ d; Q1 d% l* L  D: q0 n  i
  11985.           (setq dashlist (cons dashsize dashlist))
    / m0 x& n  G! F" h  g- K: p
  11986.         ); t; U; C  {& C( _
  11987.       )8 f. P9 \8 Y) {" K+ G8 Z
  11988.       (setq ltlist1 (cdr ltlist1))
      {9 b3 S$ P3 w$ K- o0 x" c
  11989.     )0 G* O  B& M' b% j& U# Z1 ^
  11990.     (setq dashlist (reverse dashlist))
    $ M7 [% P. S1 `9 e* j5 @, g
  11991.   )
    % f! T- r/ t6 v$ L
  11992.   ;;* n: E& x) a% A' N) f
  11993.   ;; Color a tile, draw linetype, and draw a border around it. g5 Q8 o+ ~, L: g* D6 `
  11994.   ;;
    9 v) {1 n$ k) f" ~/ G' i( N9 ]
  11995.   (defun col_tile (tile color patlist / x y); v$ B4 T( F2 G1 b
  11996.     (setq x (dimx_tile tile))
    + T; h: ^" S  K7 D5 ]' c1 ?
  11997.     (setq y (dimy_tile tile))
    # s9 u& ^' Z4 }% K; ]
  11998.     (start_image tile)
    ' g. A4 q5 [' T: O6 B) @* [2 u
  11999.     (fill_image 0 0 x y color)$ H! l' Z- s7 U
  12000.     (if (= color 7)
    ; M) d" X/ N) {$ ]3 K
  12001.       (progn
    ( S* y1 U* X9 N0 \8 n
  12002.         (if patlist (drawpattern x (/ y 2) patlist 0))
      ~' s. W- j; m
  12003.         (tile_rect 0 0 x y 0)
    ; L5 Q' o$ N: ]7 O& m, g) y
  12004.       )4 C. Z: t% I. B- n' D- N/ c
  12005.       (progn
    * g$ p# N9 E4 p/ c) G
  12006.         (if patlist (drawpattern x (/ y 2) patlist 7))
    " `8 d. P. r( y( }$ c
  12007.         (tile_rect 0 0 x y 7)
    9 f$ \5 q4 P  a' r
  12008.       )
    , k" Z. ^+ t$ N  o- y
  12009.     )- Y/ g% v2 B: Q( s  m) p# V" E
  12010.     (end_image)* o% Q  V' w( E  d& w
  12011.   )$ w. D5 v  z6 w
  12012.   ;;
    4 n- ^5 k8 \8 M+ v7 r9 ?
  12013.   ;; Draw a border around a tile
    + \4 x; m; U9 Q9 V
  12014.   ;;& V1 i8 G5 W/ Y& b
  12015.   (defun tile_rect (x1 y1 x2 y2 color)2 f( U1 c# y( V: c+ o+ x9 a; b2 `
  12016.     (setq x2 (- x2 1))
    ) r* B  X" W- q% j  `
  12017.     (setq y2 (- y2 1))7 [- |) r- E; S/ d( ~- O( S
  12018.     (vector_image x1 y1 x2 y1 color)
    ! Q# ^4 |1 D9 q- _8 y; l. ]
  12019.     (vector_image x2 y1 x2 y2 color)8 [8 G* K. w0 O. y* Z
  12020.     (vector_image x2 y2 x1 y2 color)% Y0 h* E- S+ B2 ?+ Z
  12021.     (vector_image x1 y2 x1 y1 color)- W1 ^& s& B8 N- K  i3 _
  12022.   )" h' b+ V% G% t4 C( x: A( \3 \
  12023.   ;;# i- d$ P, q/ l, J* f4 j
  12024.   ;; Draw the linetype pattern in a tile.  Boxlength is the length of the image- u" {5 r: f+ D( h1 u% j
  12025.   ;; tile, y2 is the midpoint of the height of the image tile, pattern is a# B" n. ^9 W# l7 t* q1 m
  12026.   ;; list of numbers that define the linetype, and color is the color of the! f' f  C5 N+ j7 u
  12027.   ;; tile.3 |+ l8 k2 P4 C8 ?* P
  12028.   ;;
    * `! O# f7 ~0 S
  12029.   (defun drawpattern (boxlength y2 pattern color / x1 x2
    # K. x5 e( i3 z7 w* G, A8 M
  12030.                       patlist dash)
    & v$ i9 V8 R5 I2 b5 p% p
  12031.     (setq x1 0 x2 0)
    ! @; c" m. z& ]' n7 r+ k6 R
  12032.     (setq patlist pattern)
    8 w  @0 W7 T$ e; o
  12033.     (setq fx 30)
    9 N; [( R* A% r$ w" X
  12034.     (if (= patlist "CONT")5 T6 y  k& N( m" ~, g
  12035.       (progn
    6 r: ~% N# U" I. D4 ^1 v+ O- B( {
  12036.         (setq dash boxlength)
    ( T- _  H) u5 K
  12037.         (vi); u% B! N3 F$ I# I! ^
  12038.         (setq x1 boxlength). {& b7 S8 E) o& g/ H
  12039.       )7 W; H+ u/ k7 ~% G
  12040.       (foreach dash patlist
    4 O  s  F" P* q$ {8 D) ~2 `$ M
  12041.         (if (> (abs dash) 2.5)9 k) |4 }  U* @3 A& a
  12042.           (setq fx 2)% t1 I+ N7 Q  K# Y4 {. k5 o( a) k1 j
  12043.         )2 k+ A' n2 p0 }" O! w( A
  12044.       )
    6 @6 D7 p; S9 t% r. f
  12045.     )7 B$ h0 V2 P3 j2 X0 Q
  12046.     (while (< x1 boxlength)
    # Q$ |! B' s# a+ w/ L5 V
  12047.       (if (setq dash (car patlist))2 H( f/ ~( G5 ?! q5 l
  12048.         (progn/ \. N/ U/ H- j- B
  12049.           (setq dash (fix (* fx dash)))
    : T* S# Z. X# z0 ~% f" i
  12050.           (cond0 N( A, f0 V) p/ i3 J8 \
  12051.             ((= dash 0)9 |" }6 _1 @3 J% a. t
  12052.               (setq dash 1)( G" p+ r. _: n+ @* M' s2 B6 J
  12053.               (vi)
    . d& o8 _, o; u8 ?- K- w
  12054.             )
    , C% h- a( W# Y6 ]
  12055.             ((> dash 0)+ K4 j  b; x. x4 W
  12056.               (vi)
    5 Y9 L+ \9 j! R4 x7 g9 b
  12057.             )
    " |  o+ Y3 A! p' s2 W
  12058.             (T: K$ X* A8 A/ P' r  m
  12059.               (if (< (abs dash) 2) (setq dash 2))% B+ d1 K2 T; j1 k1 \/ }$ f
  12060.               (setq x2 (+ x2 (abs dash))); u; t* q, ^0 U1 F' H" ^$ n
  12061.             )
    4 \+ U- ?' f$ E' l& N/ N# S) l
  12062.           )% c$ Q' s, t' M; e2 T
  12063.           (setq patlist (cdr patlist))' r4 M, `! Q4 M% x  ]' V
  12064.           (setq x1 x2): n9 T) z, l. a9 F+ X: H
  12065.         )
    6 ?3 }1 Y- [  a& h8 i1 h7 P
  12066.         (setq patlist pattern)5 ?# Y5 U1 e4 }% Z/ Y; O
  12067.       )! P5 J! U5 h5 Y6 B- F) }; H2 }3 w
  12068.     )
    2 |# |3 R  y: w& a2 \, k! J8 ?+ m
  12069.   )
    $ U, o! ?& [% [. K# E+ k1 I7 E
  12070.   ;;8 Y* @2 U4 x6 ?7 S% t
  12071.   ;; Draw a dash or dot in image tile, h& w, V5 a! @
  12072.   ;;
    ! z3 x* y# w6 p  W* H
  12073.   (defun vi ()
    + b7 T$ u( l/ |) e9 w  W6 z* u
  12074.     (setq x2 (+ x2 dash))& M7 T# E( p$ Y: ?7 }+ v& D* V
  12075.     (vector_image x1 y2 x2 y2 color)
    : Q* a3 C8 O/ v0 R3 \7 X
  12076.   )% _: z9 U( H( T% \0 l0 X" f( B

  12077. 5 ~' o; V/ J* M/ B4 ^2 S
  12078.   ;; This function takes a selection and returns a list of the color,7 R" q" O/ W2 u6 N& d$ @
  12079.   ;; linetype, layer, linetype scale, and thickness properties that
    ' q8 }! b  \4 m3 @" V( A
  12080.   ;; are common to every entities in the selection set - (color
    2 w* T8 o. v" L0 _
  12081.   ;; linetype layer thickness).  If all entities do not share the same$ ]. s9 F; u! S( S& a/ k
  12082.   ;; property value it returns "Varies" in place of the property
    $ M3 f3 m+ ]" H
  12083.   ;; value.  i.e.  ("BYLAYER" "DASHED" "Varies" 0)
    ! I0 b7 t6 n- j' l
  12084.   ;; The last item in the return list is an integer flag for the; V3 k0 a9 k; L$ Y' k6 i
  12085.   ;; homegenity of the selection-set object types.
    & t$ P3 c. o5 R) s8 m
  12086.   ;;   1 = All polylines- y3 d3 X! ?) W! O1 Y: i
  12087.   ;;   2 = All text or mtext or attdef, or a combination of the three1 B8 Z3 k! v* U2 S- E7 a% {
  12088.   ;;  -1 = Any other mix of objects
    - t) m) p# \1 z
  12089. ( `/ N9 ?2 c& ^. P0 j; X. b
  12090.   (defun getprops (selset / sslen elist color ltype layer ltscale thickness& l0 E; K0 U+ [$ {# _# w
  12091.                           width elevation height go ctr
    1 f, z( Q' b2 u2 o( Q* C
  12092.                           eflag   l' E- m/ u' s  E" D7 b
  12093.                           etype temp
    6 B$ V# w' n; j. A" R1 a4 ~% M7 p* l( R
  12094.                           txt_ss     ;;;;rk 11:24 AM 1/30/978 _" X6 ?6 R$ s$ y, n: g3 M3 p
  12095.                           tmp
    ; z2 d) T, {( z3 A
  12096.                           poly_ss   6 O8 g: N( @; {1 O% z- w) D
  12097.                           style
    9 \* S5 f/ x- x, _# y: q
  12098.                   )6 `' b* U% B& w
  12099. / F* x. c8 Y) l9 b1 x* G

  12100.   B! S6 t! S2 [, \- v
  12101.     (setq     sslen (sslength selset)' v, ~% c& y" C: j. |
  12102.               elist (entget (ssname selset 0))
    ! D7 Z$ N9 p" t- {0 \
  12103.               etype (strcase (cdr (assoc 0 elist)))) E5 o8 Y' q1 f( Y- ~* ]
  12104.               color (cdr (assoc 62 elist))
    : n+ t5 W) [. y7 I4 ~. p( U
  12105.               ltype (cdr (assoc 6 elist))- K& X7 Y* D' Z4 n1 ]8 Z# q
  12106.               layer (cdr (assoc 8 elist))
    , ]8 H' h' i2 l! n# x
  12107.           thickness (cdr (assoc 39 elist))- e0 c# d/ ?/ z
  12108.             ltscale (cdr (assoc 48 elist))
    4 `, ~! J" x; [& `- @2 d7 A
  12109.     );setq. P5 m& p8 D5 M  a- r  W3 [2 W( {

  12110. 9 f  L$ z! f9 h. E  z) }
  12111.     (if (not color)     (setq color 256))
    6 T4 \* o$ |( ]/ E1 W6 B6 H# W* r
  12112.     (if (not ltype)     (setq ltype "BYLAYER"))8 i7 j7 V* l- ]1 r. p3 F
  12113.     (if (not thickness) (setq thickness 0))
    9 l% p" n4 R, L- c* r/ }6 O
  12114.     (if (not ltscale)   (setq ltscale 1))1 w- c+ }0 g, x4 w3 T

  12115. ; k. q* y6 y) z# W
  12116.     (if (not width)     (setq width ""))- \9 @; ^! n7 k9 {
  12117.     (if (not elevation) (setq elevation "")): M+ E5 k! r7 R6 w4 e! x
  12118.     (if (not height)    (setq height ""))0 b: U/ e0 `& |9 j
  12119. 1 J4 c2 g  t/ F2 }4 Z
  12120.     (setq      go T
    5 l+ D) M3 k! @) `) q" k
  12121.           chk-col T 3 D6 O0 Y* n0 C0 W7 f
  12122.            chk-lt T : O' f8 u) w! d6 r! j
  12123.           chk-lay T
    ' S& a! {1 c( ~' z) A" ]- P3 C) m' c
  12124.           chk-lts T
    ( `- b. g7 T, y: F; Y7 n1 Y8 H
  12125.            chk-th T
    ( q2 l$ o) }- X0 R
  12126.               ctr 0
    1 C  Z6 `6 z; |' {- A( r" b
  12127.     );setq
      J- t8 r& s" @1 ~
  12128. 6 N7 U5 `  o- w
  12129.     ;; Page through the selection set.  When a property7 O2 k% Z1 S" }" g/ G4 ~
  12130.     ;; does not match, stop checking for that property.
    2 S( O6 b7 x; K) x  X1 |( i+ X
  12131.     ;; When the selection set is not homogenous, stop checking.
    " e. o7 Y3 f* a  L- s9 m
  12132.     ;; If all properties vary and the set is not a type 1: h& @, D3 ]  I- A4 h$ q1 s/ J
  12133.     ;; (polyline) or type 2 (attdef/text/mtext) set, stop paging.* T8 E* {' L3 h) S
  12134. / Q; W) Q' M% Q
  12135.     ;Lets set the eflag so we know if the selection set includes any
    8 q/ F' P8 i% F/ j* \
  12136.     ;combination of polylines, lwpolylines, text, mtext or attdefs.5 M1 e. _; I3 D/ O; y2 f! {- p0 n

  12137. % y/ r3 ^1 \) Q" O
  12138.     ;watch out for 3dpolyline and 3dmeshes here! @rk 10:17 AM 1/30/978 h; O. {# [5 w8 i( }, U
  12139.     (setq eflag 0)# n0 l: f& ?/ S! e3 ]+ K5 A0 Z
  12140.     (if (setq poly_ss
    & m1 |( B3 G3 t; s  m% E
  12141.               (ssget "P" (list '(0 . "*POLYLINE")
    2 p3 `* Z6 x* Y; ?& e$ L
  12142.                                '(-4 . "<AND")
    . M" l( G( }1 c) Q: z
  12143.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 8)  '(-4 . "NOT>")
    ; m3 p/ }/ h$ [$ P( N6 ?; Q: q
  12144.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 16) '(-4 . "NOT>")4 M% b2 a' N- E9 E! _5 @
  12145.                                   '(-4 . "<NOT") '(-4 . "&=") '(70 . 64) '(-4 . "NOT>")
    - X5 \# n+ A; c
  12146.                                '(-4 . "AND>") & ^" s% q. G2 d" a! H, ?& M
  12147.                          );list
    , T) Y( D2 m- t
  12148.               );ssget get 2d polylines (legacy and lw), ~2 b: ?2 y0 c6 F% G
  12149.         );setq* o$ ~+ X. R4 p) G) ~
  12150.         (progn$ X9 U; R, A5 I" t
  12151.          (setq eflag (+ eflag 1))
    4 S6 N' f+ w0 [* {; \/ ^% I+ ]
  12152.          
    / X9 e8 I  \* b0 }1 B1 ?
  12153.          (setq tmp (entget (ssname poly_ss 0)));setq
    & w, C4 o# H# _* Q

  12154. 3 v3 S- A' J# c9 ?4 A4 p  I
  12155.          (if (equal "POLYLINE" (cdr (assoc 0 tmp)))
    + Y% ~7 L; H* e# a
  12156.              (setq elevation (last (cdr (assoc 10 tmp))))
    7 j) i, I% A8 r, B5 g
  12157.              (setq elevation (cdr (assoc 38 tmp)))* ^6 w. O; S& t! \, N6 T* I
  12158.          );if1 J3 r. w- S3 C- y
  12159.          (if (not elevation)
    9 B, |8 B5 o1 Q3 t5 k6 P
  12160.              (setq elevation 0.0);setq
    ; U; y. Y$ z% H& y6 ^
  12161.          );if
    , z! ?% N. H" y

  12162. ) D; H4 Q. D8 Z
  12163.          (setq tmp (ssget "P"
    : ~  C; i; L5 E! u
  12164.                           (list + J/ a5 u' b$ e$ m5 g
  12165.                              '(-4 . "<OR")- y& w  H7 B. V! H
  12166.                                '(-4 . "<AND")
    + A* o) |9 y+ K8 W- R2 Q
  12167.                                  '(0 . "LWPOLYLINE")7 n1 S( y! y! j+ K. @
  12168.                                   (cons 38 elevation)* Y& ^' K, m- L. k
  12169.                                '(-4 . "AND>")
    " L( q; c0 \, H0 }2 E/ O- u$ B
  12170.                                '(-4 . "<AND")' N6 ~( O# v* |5 v; D7 W0 ~
  12171.                                  '(0 . "POLYLINE")
    " B& _' R* q: J0 Z; v
  12172.                                  '(-4 . "*,*,=")
    4 J+ C/ B" @) j+ v9 Z: R
  12173.                                   (cons 10 (list 1.0 1.0 elevation))6 H' V- ^7 j9 P# e) C
  12174.                                '(-4 . "AND>")
    ) |5 N1 L: |" Z5 J4 G3 L
  12175.                               '(-4 . "OR>")$ {! W' k. h& |6 B1 I
  12176.                          );list
    . v# Y( r5 T- d3 ^) h( i! y2 L
  12177.                    );ssget
    4 J& ~1 z! x! i3 L7 E5 f- H' {
  12178.          );setq
    8 ~# o' Z9 F7 X. W  B

  12179. . W! `1 Q4 U+ i( y2 k( z  L6 f
  12180.          (if (and tmp 3 ~6 u- g, _4 ?3 W2 y
  12181.                   (equal (sslength tmp) (sslength poly_ss)), I; O' F/ B) \! O
  12182.              );and# y/ b+ J0 g3 f1 Q2 P, W; {
  12183.              (setq elevation (ai_rtos elevation));setq* U+ n. p* z1 E1 H
  12184.              (setq elevation "")0 r- }/ C" c9 h' T
  12185.          );if5 H. N, r4 w+ P  i- C
  12186.          
    : }7 g4 v* v$ Y' G
  12187.          (setq width (pl_width_getter poly_ss));setq/ H" u/ `$ k/ b0 ^# Z  u
  12188.          
    * {5 q9 P" B' J. k2 s4 j
  12189.         );progn then 2d polylines and/or lwpolylines are in the HHHHHOUSE!
    / x* b$ X; R1 ]
  12190.     );if
    # m6 l- {; E- S% B6 {9 }/ U
  12191.     (command "_.select" selset "")5 Q- O4 W- U; h( I" e# A+ ~
  12192.      
    8 }7 R- K' b$ \$ E5 X- @
  12193.     (if (setq txt_ss
    ! H2 `1 ?1 c% M' p* Y
  12194.               (ssget "P" '((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") 6 ~/ Z* N3 |# o# N6 S* [
  12195.                            (0 . "ATTDEF") (-4 . "OR>"))% B+ B2 K) O- \
  12196.               )  1 [' w# V: o* @; H5 @5 w' _* `$ P
  12197.         );setq7 B0 [, B4 n  }# t
  12198.         (progn" \2 ]3 M9 n% e
  12199.          (setq eflag (+ eflag 2))
    ) S5 q- x+ D) e/ b5 v
  12200.          (setq height (cdr (assoc 40 (entget (ssname txt_ss 0))))& ~! j5 x: a* o( E4 Y* m
  12201.                   tmp (ssget "P" (list (cons 40 height))) ! T8 \; z$ @1 G. J" e7 `; U5 R
  12202.          );setq 2 ?6 d: M5 c7 ^% b2 f% `
  12203.          (if (and tmp
      B& [6 ^' t% J
  12204.                   (equal (sslength txt_ss) (sslength tmp))                    0 Y4 B2 \  w( U( E" B7 ]* Q. }
  12205.              );and
    5 K! x1 F' g& [! U1 P
  12206.              (setq height (ai_rtos height));setq  ;@rk need to translate from float 6 P' \& Q. F6 j. U% T4 l
  12207.                                                    ;to string and back again easily, f) O4 S; T; Y
  12208.              (setq height "");setq else the height varies
    9 ], P' w; \7 d0 ?! s
  12209.          );if5 ~# n+ _  K, f, L2 C; z
  12210.          (command "_.select" txt_ss "")
    $ M  X0 _7 Y* v; u* @
  12211.          (setq style (cdr (assoc 7 (entget (ssname txt_ss 0))))
    ; b0 Q' o/ b5 ^. W' l, C$ L
  12212.                  tmp (ssget "P" (list (cons 7 style)))
    ( R% J$ p2 n( z+ g  G& d- n2 B4 W
  12213.          );setq
    0 Q5 p4 R- A* u; s- y+ e# T4 o
  12214.          (if (not (and tmp' g/ {  p2 Q7 g9 I
  12215.                        (equal (sslength txt_ss) (sslength tmp))                    
    - e1 v# j5 J$ p: D% F& F# m- o4 r
  12216.                   );and; w9 O& r6 T- k" {) F
  12217.              );not
    7 E) N8 s7 b4 r" B' W
  12218.              (setq style "");setq then the style varies
    6 n' }: W9 d, {; H
  12219.          );if% v5 L7 f* @( r2 w" i9 [
  12220.         );progn the text type objects are in the selection set  i$ i2 M+ v% u# D# Z% |: g. v/ Q
  12221.     );if6 U% H" E( R- Q* }, K( W
  12222.     (command "_.select" selset "")
    2 S0 x# i5 n9 A4 S( T+ |/ ~5 t& i( U
  12223.    
    " J4 s5 m: ?3 ^3 S
  12224.     (while (and (> sslen ctr)
    1 T8 p' m4 i* ]: l, d, X, q
  12225.                 go9 J: E% o; w7 r  F
  12226.            );and
    - ?' Q# ?' j4 f# _! w2 ^! c4 I4 e
  12227.       (setq elist (entget (setq en (ssname selset ctr))))
    " ]5 O+ z; a$ \  A0 w1 }
  12228. 1 i* b/ X+ r! l+ a3 G$ [( D: B
  12229.       (if chk-col (match-col))6 T( t2 i  t, N9 {
  12230.       (if chk-lt (match-lt))8 f$ E, F9 \6 W4 N
  12231.       (if chk-lay (match-lay))+ M" T! J, Q( ]
  12232.       (if chk-lts (match-lts))2 G9 d: @4 V# P$ y& V$ A  j+ I
  12233.       (if chk-th (match-th))9 N( a  F2 K5 t1 Y% ~

  12234. ( T5 T0 D- V1 }( u, v
  12235.       ;(if chk-etype (match-etype))  i, ?; w1 U: d9 X( P; g4 W
  12236. 4 }9 E! I9 _2 l9 s
  12237.       (setq ctr (1+ ctr))
    7 O, [2 \, }" |6 p8 S
  12238.       (if (and (not chk-col): |: d$ G" Q( h2 B1 h. O
  12239.                (not chk-lt)
    : N  ^2 \. ~# E# b' M
  12240.                (not chk-lay)
    % l3 P0 B* B( S. |  r! Q* E
  12241.                (not chk-lts)
    4 {. C5 Y. ^/ \7 B" u2 Y4 K" l
  12242.                (not chk-th)
    6 p- [! p5 |& g3 x( F
  12243.                ;(not chk-etype)
    # t; m! X) o( r: T; f/ Y$ f1 j
  12244.           );and
    + z8 q% E( Q2 N: ^3 p
  12245.           (setq go nil)7 ]9 W7 _6 @( c! p, [
  12246.       );if  B. O+ Y$ B+ a* D2 R9 z
  12247.     );while3 C4 b4 [! w8 V6 m
  12248.    
    4 ]$ B# C4 L! \
  12249.     (list color ltype layer thickness ltscale  x9 c' ^) \; K
  12250.           width elevation height eflag 0 \& C" x+ x2 J5 `& k5 n
  12251.           style poly_ss txt_ss% I4 M% o1 X  |' [' g- L* x1 Y& v! D
  12252.     )& Z/ o, e2 e, i0 s! E/ V% b1 i
  12253.   );defun getprops" i+ i1 A8 `! U) y6 I  W+ K
  12254.   }% R2 P/ h( m# K3 J
  12255.   ;  This is a speedy little routine to tell whether the polylines in : B- M1 N/ R' ?$ n3 @
  12256.   ;the selection set argument are of varying width or a constant value. # }/ f' M) F) r6 u/ Y) A3 O
  12257.   ;Looping through the vertex's has to be done for old polylines when
    / f0 C3 L+ c- c  ?8 h. G
  12258.   ;the polyline header has width values of 0.0. Basically, in this case,
    ( [" r6 F2 o% R$ f, d$ Y0 l
  12259.   ;information in the polyline entity header is abmiguous. Width values
    7 |! ^$ ~1 ~/ u( L. `5 E  m/ q3 D
  12260.   ;of 0.0 in the header entity could mean the polyline has a constant 7 A; K, O8 N" \5 N4 X. k
  12261.   ;width of 0.0 or it could mean that the polyline has vertex's of varying ! }2 u, I0 u; Q9 G
  12262.   ;width.: s1 s7 l) d  k+ v" e
  12263.   ;
    + D+ a7 w" S; h
  12264.   ;  It's all in wrist. Err a.., I mean it's all in the 'if'
    ( f) i3 J& o; h( b
  12265.   ;;
    $ \  y! D% l/ ?. t5 H- C0 }8 R" U
  12266.   (defun pl_width_getter ( ss / ss2 ss3 n na e1 width width_a width_b flag flag2)
    ) Y% n- V# ^( c
  12267. 0 M) S+ d* Y/ e9 Z+ f2 L8 M
  12268.    (if ss 3 p" j" [. r! e3 T7 v
  12269.        (command "_.select" ss ""). d) K& J1 e4 P
  12270.    );if; o  N* X- q$ u3 c
  12271.    (setq width ""
    ( i3 w6 m! [6 P/ w5 j
  12272.           flag nil
    ) a6 {4 X! f6 [- W
  12273.          flag2 nil9 k8 }. h% I6 i, e4 @$ ^4 f! t+ M
  12274.    );setq% A) e9 ]5 k4 d) e! [
  12275.    (if (not : P0 K0 A7 ~3 y6 @; @' {
  12276.          (and ss
    1 E: x1 A8 B) A. P7 Y* G
  12277.               (setq ss2 (ssget "p" '((0 . "LWPOLYLINE"))));setq* j, v( m4 z7 k% g
  12278.               (setq    na (ssname ss2 0)5 }  U; W' W6 d0 l1 m- w  Y
  12279.                     width (cdr (assoc 43 (entget na)))
    1 I8 P9 @: I0 U1 c* I/ H. D
  12280.               );setq
    / [% `& l6 P$ S1 _
  12281.               (setq ss3 (ssget "p" (list '(0 . "LWPOLYLINE")' L/ {1 s( ?- T9 O9 Y; L! c
  12282.                                           (cons 43 width)
    $ p/ p3 D1 c  C
  12283.                                    );list
    + j% f2 l& p( R) e& z  j
  12284.                         );ssget
    1 C/ K' y, r7 a7 w' N
  12285.               );setq
    1 [- f2 \& k+ J- V% s' p
  12286.               (setq flag T) $ W2 Y$ \% M6 a  }: \
  12287.               (equal (sslength ss2) (sslength ss3))
    2 H( O# \+ {0 K% j% D! x4 Q/ R* U
  12288.          );and* M9 Y  R6 @" a
  12289.        );not
    , i( m9 X9 N; o* [+ {- y
  12290.        (progn' I+ c: H0 T" n& j- L1 x
  12291.         (if flag# k' `+ F4 n( T" v: c# o7 g
  12292.             (setq width nil)
    0 E+ ]6 t8 g, ~
  12293.         );if
    . b+ `  f) v* t$ R  q
  12294.        );progn4 i* b. w3 D2 Y1 N/ `: V
  12295.    );if
    6 D3 z6 c0 K. n' k: ~
  12296.       
    / Q1 x4 t1 C" |6 E# w5 M
  12297.    (if (not 5 Q2 |; z  _$ [4 x- O/ U; Y- B: d
  12298.         (and
    3 |, t" l0 I; u# T. \
  12299.              ss5 ^4 K$ W3 b* [) y
  12300.              (progn (command "_.select" ss "") 9 Q2 W+ k- ?( K* G& M3 O
  12301.                     (setq ss2 (ssget "p" '((0 . "POLYLINE"))));setq
    8 d/ V1 ?6 B' ]# t
  12302.              )
      I7 f  V7 f8 A5 ~2 y: _( {
  12303.              (setq      na (ssname ss2 0)1 O2 G' t5 M9 \% L
  12304.                         e1 (entget na)  j* Y7 q7 @0 `% Q, K! j" j
  12305.                    width_a (cdr (assoc 40 e1))
    3 @) }: G# c0 \6 u7 x. R* c
  12306.                    width_b (cdr (assoc 41 e1))* z8 `1 B' K1 T/ g
  12307.              );setq
    & Y/ a( [( f+ f3 U+ G
  12308.              (equal width_a width_b)! W' t# w% _% P
  12309.              (setq ss3 (ssget "p" (list '(0 . "POLYLINE")
    / A# V* V! J7 O$ [+ r- b2 [
  12310.                                          (cons 40 width_a)' z: t& P( w9 x* ~% h: V1 Y1 o
  12311.                                          (cons 41 width_b)" \% Y0 \; i6 H! A% ]( W7 H2 Q3 l- A
  12312.                                   );list
    ! b% f' A1 K7 b
  12313.                        );ssget
    " Y" w' U  m9 r7 ^
  12314.              );setq
    0 z4 |# |5 v* V1 w- J( \% @
  12315.              (setq flag2 T)
    9 t  T) s5 ^, h) Q$ S: u) D- w( x
  12316.              (equal (sslength ss2) (sslength ss3))
    3 B5 r0 N! ^; l+ C4 [6 b; t
  12317.         );and
    6 ?( _) V0 ]6 n1 [% ^2 a
  12318.        );not
    ' x; J  r8 ^9 H4 z9 P, M
  12319.        (progn; T" X/ Y1 V6 O
  12320.         (if flag2
    2 k: Y3 z+ j8 \
  12321.             (setq width nil);setq
    2 @3 u5 m) x3 H0 e& ^( N3 Q$ k0 I
  12322.         );if
    ) \4 V9 j' Z) B% T2 Z
  12323.        );progn then
    - s. m7 I9 U" c- J- z, v  c
  12324.        (progn1 v7 x$ T+ x* i% h5 a$ j+ w
  12325.         (if (or (equal width "")/ Z# L4 h: x. O) y! c. B  b, i
  12326.                 (not flag)
    + h* F- J* U0 J& \" t  x4 C% c4 B/ F
  12327.             );or
    ( d/ ~- ~, h  P; @# G4 t0 g! R
  12328.             (setq width width_a)- I& _% v& w4 H$ d7 Q! z
  12329.             (progn
    $ _, w6 ?- b: _- h, a( ~
  12330.              (if (not (equal width width_a))7 \) m. ^3 K( j8 r+ n  c
  12331.                  (setq width "")
    $ d" P5 p1 S- c- U
  12332.              );if  
    . @( C0 J3 s4 r
  12333.             );progn- s; _" h# \2 \+ `" F
  12334.         );if
    . Y0 l* K) Z/ n: m! g
  12335.        );progn7 L4 p9 b$ K4 |1 b1 w
  12336.    );if+ `8 u) L) l+ {
  12337.       - J5 I8 |' k) L- v, R3 N- i

  12338. . }1 m& K/ R. ]: i, h
  12339.    ;now for the special handling for old polylines. Y4 L" D4 b+ ~! R3 [4 x
  12340.    (if (and width % y% G- U& B2 Q; A; ^" A. {& g0 q
  12341.             (equal width 0.0)
    " |' Z& H  P' G# c9 V6 P4 j0 m
  12342.             flag2
    3 H, t3 @- T4 {8 p: v
  12343.        );and
    5 [! O# K: T) C6 d0 y7 @2 A
  12344.        (progn6 }" s+ M& S/ C
  12345.         % K" r$ e+ ]8 I; T! d' x2 @' {/ k
  12346.         (setq n 0);setq0 r8 ?3 M& N8 b* ~" j
  12347.         (while (and (equal width 0.0)
    ; _3 j; U2 U' U% K* d6 ~: F
  12348.                     (< n (sslength ss3))* \/ a; V+ z, o0 x6 j, {/ A) @
  12349.                );and
    # H3 x) O8 L5 ]& {! T) L
  12350.          (setq flag nil
    ( n  C/ V# X  H6 k7 |5 [
  12351.                  na (ssname ss3 n)+ O, J  j/ H( c1 n
  12352.                  na (entnext na)2 w* V1 t  w6 |7 K3 K( G  l# }/ U
  12353.                  e1 (entget na)
    3 m) X" O! o9 u9 [& h
  12354.          );setq. g$ l% x! X: @8 k
  12355.          (while (not flag)1 ^4 P' V' X# X( k1 j
  12356.           (if (or (equal (cdr (assoc 0 e1)) "SEQEND"): m& L  Q, P3 c
  12357.                   (not (equal (cdr (assoc 40 e1)) 0.0))" s# j) j# z4 k' q. g' s
  12358.                   (not (equal (cdr (assoc 41 e1)) 0.0))
    3 f6 V9 S: s# a8 e% P/ b
  12359.               );or
    ) v- m+ f7 w0 z  l2 X$ w: R+ W" w
  12360.               (progn- A5 b/ P" j) ?4 h; l- {
  12361.                (setq flag T);- D  x& U2 h/ J5 n6 e- s: X
  12362.                (if (not (equal (cdr (assoc 0 e1)) "SEQEND"))
    ' h- c* C  s; y6 }4 k1 }5 D
  12363.                    (setq width nil) $ h0 J0 s9 Z; [# h5 G
  12364.                );if
    ! N/ V: L9 p) f( ]6 M) |
  12365.               );progn then jump out of the loop- }5 p9 ^4 E/ T4 @# j
  12366.               (setq na (entnext na)
    & G5 `% A0 g9 v8 S: U9 c
  12367.                     e1 (entget na)
    9 v! _& k5 N) ?7 R: F( m" m0 g
  12368.               );setq
    5 J' T* K* I2 R
  12369.           );if
    ' I/ d8 a. q% }+ `
  12370.          );while
    7 d' m  `1 H$ l) j# F2 @; y
  12371.         (setq n (+ n 1));setq  + @4 h# k" ~2 u6 i$ ]% W
  12372.         );while 9 C/ V7 s  y3 D/ g6 c
  12373.            
    9 b0 z/ k1 m! r: M  `
  12374.        );progn then it's a legacy + l$ A  {& _4 t# q. g
  12375.    );if    ;legacy polylines that may have varying widths  
    ! k+ T2 c5 }' I- x3 S  w: ^/ s- @

  12376. # h7 R8 e+ ^! V' m
  12377.    (if (not width)
    ! x" b7 t, h9 x* J9 e2 ]8 h# i
  12378.        (setq width "");setq
    0 h$ X. X/ z5 a5 o" J9 c
  12379.    );if* w5 @. Q+ V( |7 ~! G
  12380.    (if (not (equal 'STR (type width)))
    9 V6 h5 C& y9 M: z/ W3 w
  12381.        (setq width (ai_rtos width));setq 6 R3 ^6 V" H3 r6 d
  12382.    );if
    7 ^/ O% Q- N4 o9 \* ~4 F
  12383.     4 z1 Z0 z9 ^5 }- z) k- L7 _
  12384.    width   - Q1 l+ E& u" n; q4 K9 {7 n
  12385.   );defun pl_width_getter* T1 B0 A* [9 ]+ Y( z3 T
  12386. + b$ o/ ?" \% ], {) d2 c: W& o
  12387.     0 U, @4 |7 S; l9 Y7 [: [: y
  12388.   (defun match-col (/ ncolor)
    3 i# y7 a. Z  s6 q( V, D
  12389.     (setq ncolor (cdr (assoc 62 elist)))1 E. ~' W. A5 D& ~' q
  12390.     (if (not ncolor) (setq ncolor 256))6 {7 `4 Z% G/ ~9 n5 t
  12391.     (if (/= color ncolor)
    & ?6 p) k# k  s! [  s9 d0 z
  12392.       (progn
    " E" Q' i9 Y7 p6 Z; m/ c7 z
  12393.         (setq chk-col nil)+ x* o$ P. b3 Z; A1 U3 ?
  12394.         (setq color nil)
    - }; O: }1 F  x4 `1 u/ d0 W
  12395.       )3 ~* L9 Y& ~; _; b" V8 I
  12396.     )
    2 J! o' j) b0 `4 H# t
  12397.   )8 k6 m; r& G1 A0 l
  12398. * W& o; [) i; Q% e8 U# N
  12399.   (defun match-lt (/ nltype)8 _& F6 F% A: T* L
  12400.     (setq nltype (cdr (assoc 6 elist))); ^; @8 K; i( m" C
  12401.     (if (not nltype) (setq nltype "BYLAYER"))# A1 ]+ x& |4 ?9 u1 X
  12402.     (if (/= ltype nltype)+ D# W4 m1 I7 W$ R' |! `" ?
  12403.       (progn) H: ?; O; j* h% |; Y+ K1 D
  12404.         (setq chk-lt nil)
    8 J4 n+ n1 ^% w
  12405.         (setq ltype ;|MSG0|;"Varies")
    . b# m9 ]8 q+ q
  12406.       )" Z& u# o7 w9 e( f' E
  12407.     )
    & p' W. q: V5 E6 p
  12408.   )
    $ S. x6 ?2 }. h5 s/ w
  12409. ( H1 [6 p- E3 ]
  12410.   (defun match-lay (/ nlayer)/ y2 l% ]1 E7 x  p, u/ a' ]
  12411.     (setq nlayer (cdr (assoc 8 elist)))
    6 \" U( v5 n0 K
  12412.     (if (/= layer nlayer)( Y' t8 @1 J, _6 W
  12413.       (progn
      B- \5 Q+ C2 R$ \% ~' p+ s6 j& E; D
  12414.         (setq chk-lay nil)* Y+ ]( A" `, N2 n3 i% J
  12415.         (setq layer ;|MSG0|;"Varies")
    ! g) S3 N0 H$ r# o
  12416.       )& K' f' t2 v! R
  12417.     ), ~7 [- h( I7 ?
  12418.   )$ T9 G0 D6 f# f  |! R
  12419. # N6 F! k- Y4 l. l1 Q
  12420.   (defun match-th (/ nthickness)6 M- l6 M# G/ P( S9 d  W
  12421.     (setq nthickness (cdr (assoc 39 elist)))* Q2 B; K! H. X4 D: O
  12422.     (if (not nthickness) (setq nthickness 0))
    2 Y  k/ R+ k, Q, N6 W
  12423.     (if (/= thickness nthickness)
    1 ^3 j, X+ Q; ~  m2 i! b' G
  12424.       (progn! p7 X9 ]5 o- ^% j" S$ e' r
  12425.         (setq chk-th nil)
    8 K$ b6 c8 K) C( V2 ^5 o: Y( K% {" H
  12426.         (setq thickness ;|MSG0|;"Varies")
    / C: D3 S0 q1 J+ H7 h
  12427.       )
    5 F1 R/ w* |/ W- U( Q( M( f* `! f* n
  12428.     )
    3 V8 E% V6 a8 M! O1 }5 y
  12429.   ); i2 V" j6 E* v9 J
  12430. * @4 I) e- K6 e  M4 Z3 s, ]( i' \
  12431.   (defun match-lts (/ nltscale)+ y0 j% L9 J5 {* W
  12432.     (setq nltscale (cdr (assoc 48 elist)))
      [7 ^1 F) Z. a% s0 W
  12433.     (if (not nltscale) (setq nltscale 1))& J: W& Q! R5 S8 ]( J) w- }/ d
  12434.     (if (/= ltscale nltscale)
    - ^! \9 P- P  l: d8 F+ D* O) q
  12435.       (progn& t6 Z/ f; S5 h7 i& A
  12436.         (setq chk-lts nil)
    ' ]7 T. o( }. t( \5 ^" u8 w
  12437.         (setq ltscale ;|MSG0|;"Varies")8 w+ v$ K  W. y/ U8 Q4 ^
  12438.       )8 ?+ d5 f* ~, {
  12439.     )) C: |# @( `' c0 {; `1 P/ q, H
  12440.   )0 O4 a; e& G5 Q5 r0 j, z# m
  12441. 7 [6 B7 F4 A; y# U5 E  ]0 D/ u) h
  12442.   ;;
    % p* k% @6 g: G/ v1 [
  12443.   ;; If an item is a member of the list, then return its index number, else
      I% y$ s( g% f2 b0 ]% I! O
  12444.   ;; return nil.& i( X) i  h2 X, Z! p
  12445.   ;;
    ) _- c, U& Y- P
  12446.   (defun getindex (item itemlist / m n)( n3 u6 p2 y5 d7 ^+ P9 C) J
  12447.     (setq n (length itemlist))
    + v4 P- M) D% O
  12448.     (if (> (setq m (length (member item itemlist))) 0)) j! |* ?2 I/ p- a0 Z+ S& H, u
  12449.         (- n m)
    1 Q/ F+ U6 z& B( I) c( R
  12450.         nil& D" Y0 F+ f6 E/ }
  12451.     )
    . X5 d6 v, S  F9 a" i0 s
  12452.   )3 Y% z# k% X: W
  12453.   ;;( B0 ?' Q" R0 n% e3 v
  12454.   ;; This function is called if the linetype is set "BYLAYER". It finds the: M: o  A+ Z0 @0 L$ I2 [- h. v
  12455.   ;; ltype of the layer so it can be displayed beside the linetype button.
    2 j' K/ u( j- l
  12456.   ;;
    * i/ x! i# \" S( r' x- c
  12457.   (defun bylayer_lt (/ layname layinfo ltype)% k( Z: l0 B& E$ B) P0 f
  12458.     (if lay-idx
    " E+ p2 k, g' w8 ^/ S
  12459.       (progn
    " k* G  X% c3 V1 M; K
  12460.         (setq layname (nth lay-idx laynmlst))
    8 f3 l; F# ~4 E% D8 F7 u: j, j
  12461.         (setq layinfo (tblsearch "layer" layname))3 u5 W6 n# W# d. \, h9 v" L2 p/ ]/ E
  12462.         (setq ltype (cdr (assoc 6 layinfo)))6 J5 w* Z' G8 l# J
  12463.         (strcat "BYLAYER" " (" ltype ")")
    2 \' ?# |  a* w9 b( c3 I
  12464.       ): c9 G7 H/ e+ k
  12465.       "BYLAYER"
    . \: @& d. N& m! |0 ]
  12466.     )
    ) e) N1 p& n  u& m3 h/ x
  12467.   )! E: I7 k. y- R) \* G- |) |! A" J
  12468.   ;;
    7 H6 _4 N1 p1 w# O
  12469.   ;; This function is called if the color is set "BYLAYER".  It finds the
    : R$ r+ Z0 ^9 G) t4 j  a
  12470.   ;; color of the layer so it can be displayed  beside the color button.! A& W! G# _) A
  12471.   ;;3 j- X+ U! d9 {
  12472.   (defun bylayer_col (/ layname layinfo color)
    ! b. j) s5 ]6 _
  12473.     (if lay-idx
    ! V$ i- B2 v8 Q- J6 K" D" O" ^
  12474.       (progn
    5 [1 n% E3 z0 t% \1 c6 W
  12475.         (setq layname (nth lay-idx laynmlst))
    ' }/ k7 K5 R: I% ~
  12476.         (setq layinfo (tblsearch "layer" layname))- X" y1 d# G! m2 e' k: P0 u
  12477.         (setq color (abs (cdr (assoc 62 layinfo))))
    9 f2 D, O: y# R6 I4 h
  12478.         (setq cn color)' l9 [2 N& h8 a7 E4 z( F) S
  12479.         (strcat "BYLAYER" " (" (colorname color) ")")( D0 Y. C/ @, I3 y8 h  }& T
  12480.       )
    , y/ P; |3 g$ E
  12481.       (progn
    $ B, f- L  [. i( J
  12482.         (setq layname elayer)4 s  U9 d, [) b8 q0 S
  12483.         (if (and (/= elayer "")
    # z3 B( v+ O$ W. d3 N( M' D% {
  12484.                  (/= elayer "Varies")# m  x1 K2 t9 B; H
  12485.             );and0 _8 s1 _2 g; z
  12486.             (progn( Q9 Z: o/ ~) F
  12487.              (setq layinfo (tblsearch "layer" elayer))
      Y* y- c9 S1 X: P+ \2 S2 {
  12488.              (setq color (abs (cdr (assoc 62 layinfo))))7 d2 K( s' Q; D  f: N( W
  12489.              (setq cn color)
    - D+ U5 q& B$ }
  12490.              (strcat "BYLAYER" " (" (colorname color) ")")& F3 s% E  G: q* a, \# ~9 e5 ?* k* I
  12491.             )# @* U8 |/ M2 D9 f, a( Q5 \
  12492.             (progn9 u8 |1 T7 N' E" }/ x$ h" a
  12493.              (setq cn 0)
    - j  [5 R+ U4 |: b: Q/ M- t
  12494.              "BYLAYER"! j3 c; e: ^. |7 ]. o% _1 S: R
  12495.             )
    " H3 C( E% V" A: X2 c
  12496.         );if
    * s" P7 T; o1 Y- @
  12497.       );progn$ O8 m4 N# ?8 p: i: A2 W* C( l
  12498.     );if
    ; j$ B8 j( X; W
  12499.   )4 T) X- X0 N' k  s- x& [) }
  12500.   ;;, u" Z' N5 U- s/ l* m
  12501.   ;; If there is no error message, then close the dialogue0 k0 a. O# e3 W4 W  |! _
  12502.   ;;/ [' t4 g( f; v1 |) O1 ~' @( r# u
  12503.   ;; If there is an error message, then set focus to the tile
    5 e, i' s6 I: c
  12504.   ;; that's associated with the error message.8 L- c( d  X% c
  12505.   ;;
    2 l4 }1 {9 Y9 v
  12506.   (defun test-ok ( / errtile)  l; V) N7 [1 y) d6 y. z7 ]$ A2 x
  12507.     (setq errtile (get_tile "error"))) G4 B/ q7 t6 \+ B, t8 o" v
  12508.     (cond
    - Y  F+ d2 E% H( A) R
  12509.       (  (= errtile "")2 n  E* _, d+ D: ^6 b
  12510.          (done_dialog 1))
    6 v5 q. \7 [5 h! j% D. h0 D
  12511.       (  (= errtile "Invalid thickness.")6 f  ?! ~) n. @5 _8 `3 N
  12512.          (mode_tile "eb_thickness" 2))
    1 Z, n( E5 c! r) c; Y' }7 T
  12513.     )
    & @0 k* y5 ^; g& t  A$ ?
  12514.   )8 O% p$ g1 J5 Z+ i# o4 K/ Y0 r
  12515.   ;;) R" `& A' F2 T% }( d- t' N
  12516.   ;; OK in main dialogue.
    , l6 g: O6 ]- b' |2 ]% O: J
  12517.   ;;% l- F1 U: W  ^4 w9 l3 T
  12518.   (defun test-main-ok ( / flag)5 ~9 e1 l6 Q7 n2 E9 q4 ~
  12519.    (setq flag T)
      E2 c! }8 e1 s" t4 j
  12520.    (if (not (or (distof (get_tile "eb_thickness"))
    . W/ V8 c$ h' C" T* n; e9 b
  12521.                 (= "" (get_tile "eb_thickness")), P6 h0 P/ l1 n4 h8 I% o( L4 m/ L
  12522.             );or) p* @2 X8 ?. V* |" h
  12523.        );not; b1 R5 i; l) ^. R
  12524.        (progn
    7 Z2 d$ u  h4 ^! A
  12525.         (set_tile "error" "Invalid thickness.")
    % B" o+ s0 S, |0 P
  12526.         (mode_tile "eb_thickness" 2): G" o3 y6 m6 E+ |: `: o9 f0 U
  12527.         (setq flag nil);setq
    . {8 P  S4 [( u8 A
  12528.        );progn2 M5 Y: \, s+ p& J
  12529.    );if: @7 M& N0 X1 ]
  12530.    (if (and flag
    ; G: Y0 x' f! ^8 X9 V  R
  12531.             (not (or (< 0 (distof (get_tile "eb_ltscale")))* Q7 [0 t- p4 L* b0 b1 n/ c
  12532.                      (= "" (get_tile "eb_ltscale"))
    ! O5 E) z' R# @. z2 ^
  12533.                  );or      
    0 C* O1 b" X( d8 P
  12534.             );not% D1 P1 p" N- d; ~1 n# S
  12535.        );and
    $ D$ ]9 k# a/ s
  12536.        (progn
    * Y- T1 V+ E) d5 Q- h, K
  12537.         (set_tile "error" "Invalid ltscale.")$ L# r# v, E6 A& V
  12538.         (mode_tile "eb_ltscale" 2)
    : @! l! f( I- H# W) ^9 A" ?
  12539.         (setq flag nil); ( ^7 e! l0 A# M2 y; s  {4 e/ r
  12540.        );progn then
    * `+ |) E: q& [% G( _( C
  12541.    );if1 S( ]$ o( U8 o  N
  12542.    (if (and flag4 y$ I! T, l, Q& w6 m% c
  12543.           ; Don't test the tile's value unless it's enabled.
    $ M& s4 t5 e* v" _! k, H2 f5 |; w
  12544.           ; We're not set up for the display-only value
      O/ ]1 Y5 i* b5 m; s) O
  12545.           ; of "" here in the error handler., f8 W4 q' }- l0 _" J3 Q
  12546.           (= 2 (logand 2 eflag))
    : @( m! X. h" A: b6 F9 k
  12547.           (not (or (< 0 (distof (get_tile "text_hgt")))2 _: x, G$ O2 \7 H" m# a# z  a
  12548.                    (= "" (get_tile "text_hgt"))
    1 i- B8 F# }6 P* Q4 [
  12549.                );or2 n% w" D- q* }4 b! Y7 w
  12550.           );not0 n  i. @9 d2 c1 U- u; Y2 ?
  12551.         );and1 r$ m! T( X2 D7 o
  12552.         (progn) Y2 D: v/ A4 }* ~: C, R3 S
  12553.          (set_tile "error" "Invalid height.")& p5 O% ?5 b# v% ?* T
  12554.          (mode_tile "text_hgt" 2)
    ( G2 X# [. @! I
  12555.          (setq flag nil);
    7 J! U' }5 H. s- e5 f# _: l
  12556.         );progn then: @  u# z, L7 [9 a+ R- \
  12557.    );if! k4 r2 b- [% J: z
  12558.    (if (and flag2 y) M5 \6 y+ D, D9 E. S
  12559.             (= 1 (logand 1 eflag))% K5 M; G% ?5 _. I; a
  12560.             (not (or (<= 0 (distof (get_tile "poly_wid")))9 K) k, i1 i. ]1 M
  12561.                      (= "" (get_tile "poly_wid"))
    7 \. {4 B/ ]6 U( ^; G6 q; n
  12562.                  );or  ^7 Q/ h5 y0 n2 B+ \9 f4 Q! l6 |
  12563.             );not
    , S3 i! h5 R4 l* j' R
  12564.        );and) ^% {8 v: f8 s- f  @4 A
  12565.        (progn
    $ W! @: \8 P. H8 y6 F; ]2 o
  12566.         (set_tile "error" "Invalid width.")  s2 e' x0 B; p) D) c
  12567.         (mode_tile "poly_wid" 2)
    6 }8 J3 |! h+ ^+ }+ m6 j
  12568.         (setq flag nil)4 Q% ?5 q) T3 x$ d& D, F
  12569.        );progn then/ q) n4 Y9 m" Z; v' K, s
  12570.    );if & A5 x$ |, W: [
  12571.    (if (and flag2 P6 I) R4 {; |4 v
  12572.             (= 1 (logand 1 eflag))% c. l* I+ T( T) X* n
  12573.             (not (or (distof (get_tile "poly_elev"))
    0 B" h& K. Y% m  D9 Y3 m
  12574.                      (= "" (get_tile "poly_elev"))
    6 |; [+ ^3 E1 ^- a. u- T+ a
  12575.                  );or
    . a& t( i" c; D1 w7 S- B& A. _1 T
  12576.             );not: ~9 r- q+ }% B8 k
  12577.         );and
    0 f, w6 W* x2 M: O$ j7 \3 F: A
  12578.         (progn
    . S) m; W. J; Q7 @* N  d
  12579.          (set_tile "error" "Invalid elevation.")+ K  R& c' h8 K2 q/ L, ]% N* ~' x
  12580.          (mode_tile "poly_elev" 2)8 {+ c2 [+ }7 K% X& a
  12581.          (setq flag nil)) K+ Z% I5 o, A9 b7 T0 S  V* U$ i( y8 c
  12582.         );progn then1 N  b, y) G) z# j/ s  u+ D1 a
  12583.    );if  + \4 y# E) S/ n3 R  j5 x8 i* I- y
  12584.    (if flag
      D$ z# j. M2 D6 R0 q! M
  12585.        (done_dialog 1)
    3 k1 G8 @' K2 [; k/ V
  12586.    );if
    $ m5 I; P: w8 ^5 t
  12587.   );defun test-main-ok$ K# C- y4 }" v0 [( b- p

  12588. , S: l6 p' B7 c& i
  12589.   ;;5 `2 V0 s4 ]. U2 }, b" `' D( n
  12590.   ;; A color function used by getlayer.- d2 f7 S1 t$ E
  12591.   ;;
    ! x" ]; b! L5 d6 N  |6 `/ _
  12592.   (defun colorname (colnum)
    : V, w* t% U/ Z7 V2 d
  12593.     (setq cn (abs colnum))) \( w+ c7 D+ E  x  V7 C
  12594.     (cond ((= cn 1) "red"), D) Z4 N; `! t) _( d( n& l
  12595.           ((= cn 2) "yellow")+ {1 f* e9 u3 p
  12596.           ((= cn 3) "green")2 Y  M# Q  h$ S) ]
  12597.           ((= cn 4) "cyan")3 x0 J+ h. g, g% H6 Q0 u
  12598.           ((= cn 5) "blue")
    0 T6 |" K1 P" I. |2 I. ]5 l
  12599.           ((= cn 6) "magenta")6 @& A2 W2 M- w( C+ T% c+ @
  12600.           ((= cn 7) "white")
    * e+ `3 R( C  B+ ?# q
  12601.           (T (itoa cn))
    5 i; x8 `3 D9 Y) B5 I1 }1 t
  12602.     )
      N5 I% Y/ O, K, v' F3 p
  12603.   );defun
    . n: }& X2 R# {

  12604. + M( X' h9 P% o; a$ |# r
  12605. ;;; Construct layer and ltype lists and initialize all
    % I. p+ L0 {+ v$ j& {
  12606. ;;; program variables:$ F1 i0 f0 M. R  n9 w! V& Q
  12607. 3 t) a8 R5 H8 @  _
  12608. ;  (makelaylists)                     ; layer list - laynmlst
    1 A1 y2 K" b$ @3 M& F, s' g& b3 _

  12609.   C) I5 n' }; c5 G0 f  h
  12610. 1 O$ n; J9 L$ R9 Y# S6 j6 I; N/ Y
  12611.   (makeltlists)                      ; linetype lists - ltnmlst, mdashlist5 E* N* V3 t. o% I1 L( y

  12612.   j" n& I( O& A+ M. q& m
  12613.   ;; Find the property values of the selection set.
    4 }% y) {7 q+ E# i9 I
  12614.   ;; (getprops ss) returns a list of properties from
    + I3 T5 C1 O8 @* `& b- k
  12615.   ;; a selection set - (color ltype layer thickness HEGHT STYLE WIDTH).
    0 _  h3 L  Z& H7 |8 h

  12616. & g9 s3 u. G/ U
  12617.   (setq proplist (getprops ss));@rk interesting things happen here% U; Y. s7 ]4 z1 d6 S9 Q- a9 @: `

  12618. 2 s* V# c( K$ {5 w' J; U
  12619.   (setq
    0 k6 s0 L  y, q# w
  12620.             ecolor (car proplist)7 G) Z7 K& K0 B
  12621.             eltype (nth 1 proplist)
    ' o( f4 t: J! W0 K; A2 J
  12622.             elayer (nth 2 proplist)
    7 S, q; j! x& n7 D% g
  12623.         ethickness (nth 3 proplist)5 B, F* d4 i! ^
  12624.           eltscale (nth 4 proplist), }# \, ]; j4 s, p
  12625.             ewidth (nth 5 proplist)
    . E7 ~. N7 d* f
  12626.         eelevation (nth 6 proplist)2 \0 R  }, U1 c% h
  12627.            eheight (nth 7 proplist)4 s/ x# ~$ _0 |# a- b
  12628.             ;etype (nth 8 proplist);commented out and replaced with the line below. RK.
    $ c! U# W" \7 B( i! s
  12629.              eflag (nth 8 proplist)
    * V: w+ C; I1 o& M( v0 V/ ~
  12630.             estyle (nth 9 proplist)
      |& }% x' X: U( L2 i9 N% F% p3 X, v3 H
  12631.            poly_ss (nth 10 proplist)
    ) V2 ?( C6 j1 x: p/ z
  12632.            txt_ss  (nth 11 proplist)2 [3 b" M  m: A. b
  12633.   );setq
    8 [& d- N7 F1 K! \

  12634. 5 f# T! w" ~( B+ O2 W, s5 O# [
  12635.   ;; Find index of linetype, and layer lists5 m* q# R; u# T2 D  @' d$ e& i
  12636.   (cond. \( n/ C0 V$ n6 B4 D
  12637.     ((= eltype "Varies") (setq lt-idx nil))
    4 \) Y! x  b- |
  12638.     ((= eltype "BYLAYER")' ^# c* u/ g! s/ n' C+ v7 S6 s3 j
  12639.      (setq lt-idx (getindex "BYLAYER" ltnmlst)))
    ; |/ z1 Z+ z6 V, b  ^
  12640.     ((= eltype "BYBLOCK")
    ( y# X, d1 l2 k: o+ N' f6 r
  12641.      (setq lt-idx (getindex "BYBLOCK" ltnmlst)))
    ( ?/ _2 y& H& F
  12642.     (T (setq lt-idx (getindex eltype ltnmlst)))+ U- }! \) U( t( `9 j5 c& r5 R
  12643.   )
    , B1 {6 }3 c) P- S4 C+ n' K
  12644.   (if (= elayer "Varies")7 l3 y+ S' h7 b
  12645.       (setq lay-idx nil)
    9 n# E# [0 _) k4 o* E! b" d
  12646.       (setq lay-idx (getindex elayer laynmlst))
    0 @: S3 Q% M' N! O  Z/ L
  12647.   );if* k: W. v! E; Y
  12648.   (if (= ethickness "")
    + z6 Y. l0 B) H# J, V5 m
  12649.       (setq ethickness nil)0 q/ m6 Q6 s) m+ e9 A. O
  12650.   );if$ X8 ~& t4 J0 k* I& U
  12651.   (if (= eltscale "")
    & H. F) P( D0 ?( |# G
  12652.       (setq eltscale nil)
    ' w. f  z. j& N& g  e) T- f
  12653.   );if; A+ Q' p' h9 h

  12654. 3 L* w- Y- Q: S( \
  12655. );defun ddchprop2_init   ; end (ddchprop2_init)9 u( e- X1 J! i* `  U' H; f6 a
  12656. 9 K, K# a; [" Z
  12657. ;;; (ddchprop2_select)
      |( `% Z- H& ?8 N; A
  12658. ;;;0 ^& z6 E  h8 k
  12659. ;;; Aquires selection set for DDCHPROP2, in one of three ways:% {+ \9 U$ s/ C  |0 F$ |* C
  12660. ;;;
    5 U1 e2 K# D1 s6 l/ Q
  12661. ;;;   1 - Autoselected.! ~: x/ Y7 ^- j% y; |: t
  12662. ;;;   2 - Prompted for.
    1 z, {( U6 d" [
  12663. ;;;   3 - Passed as an argument in a call to (ddchprop2 <ss> ); z: P1 M+ `6 x) ~" G$ M
  12664. ;;;: [, q9 U7 G9 }8 A
  12665. ;;; The (ddchprop2_select) function also sets the value of the
      J2 P7 l3 |# l5 h$ U* y
  12666. ;;; global symbol AI_SELTYPE to one of the above three values to
    5 m1 }5 Y- |1 }' s
  12667. ;;; indicate the method thru which the entity was aquired.
      E& |! l  W$ H8 }
  12668. $ g  ]! \" I0 a; U

  12669. " V, ?8 J. w; o3 h6 z1 C
  12670. (defun ddchprop2_select ( / )
      v$ I2 [/ k; Z1 T
  12671. ) N3 X0 q, u! O0 V5 A, a: _0 T% M
  12672. , X; F4 t% O* w4 q1 s
  12673. ;returns only entities in ss that are in the current space.
    6 p2 T& \" x$ S( q# g0 x9 A( |
  12674. (defun ss_in_current_space ( ss / a cur_space ss2)  \5 h. v3 S4 F5 _6 m6 ?$ e& n
  12675. 9 _; m  j, _2 g) x1 v$ \
  12676. (if ss
    ! ^$ ^0 E3 R: r# C# B$ W+ w
  12677.      (progn, o/ t% z1 l6 x
  12678.       (if (and (equal (getvar "tilemode") 0)
    & s' p0 b* \3 B& }
  12679.                (equal (getvar "cvport") 1)
      U2 e2 }. `. O) I) `: O; n, i* P
  12680.           );and
    + j: z! p$ V# V/ F! v  G
  12681.           (setq cur_space 1);then paper space is where we are.  F/ Z9 ?. s+ k: \
  12682.           (setq cur_space 0);else model space.
    - C. ~$ G/ u) W7 E/ [
  12683.       );if
    5 ~; x3 v) G: `7 n  a
  12684.       (command "_.select" ss "")4 R8 o. P/ T7 v# j* v7 V+ D; p
  12685.       (setq ss2 (ssget "p" (list (cons 67 cur_space))));setq
    & N- w# N0 w2 d6 U8 U) ~
  12686.       (cond                              ;;;;;tell the user what's going on.$ @/ x7 x. W6 m, A9 `! P
  12687.        ((not ss2) (princ "\nNo objects found in current space."))
    4 P1 V: a- B( |; R1 u  c* ^
  12688.        ((not (equal (sslength ss) (sslength ss2)))
    ' q5 j. [: o1 I! K. x
  12689.         (princ (strcat "\n" (itoa (- (sslength ss) (sslength ss2)))
    6 b( v& k" u0 m# n
  12690.                        " object(s) were not in current space."
    . T6 g  v2 C' K! x1 V  r# \
  12691.                )4 g6 e& e1 _& T) q0 N6 Y3 N
  12692.         )
    + |: P$ I& a4 `& C  ^
  12693.        )
    ( x5 J1 G9 g5 }- Q9 G) \
  12694.       );cond
    $ M0 ~! P1 H0 e& |6 \! S  T
  12695.      );progn then$ q, O. C4 \# u0 P4 S
  12696. );if  
      S" h" P3 ~  \
  12697. ss2
    , t6 H- P; i' e, o. g  S
  12698. );defun ss_in_current_space4 p8 i. k1 {  r3 r' d8 m. r

  12699. % X. u7 C( ?, N" c8 W

  12700. + w4 w$ T1 M9 t: P( `% O) @
  12701. ;;;begin the work of ddchprop2_select
    ' G& C) K: ^2 c( A* ]

  12702. ) Q  C4 }& |$ B8 \
  12703. ;; temporarily restore original highlight setting.
    3 [5 W6 z# F% e$ g
  12704. (b_set_sysvars (assoc "HIGHLIGHT" (car bonus_varlist)))
    * X3 V# a) ~% r8 t
  12705. (cond9 H7 |; E6 z$ ]6 |( V& z
  12706.    ((and ss
    , h- M8 Z& r- Y- ~5 ^
  12707.          (eq (type ss) 'pickset): N+ S) v3 G# P# I% ~" d* Q- G
  12708.     )        ; selection set passed to
    0 T/ e. A; S5 A/ \4 O& R
  12709.     (cond                                   ; (ddchprop2) as argument# L& C- g# c+ Y# b  k
  12710.      ((not (zerop (sslength ss)))       ;   If not empty, then
    * ~2 s/ P9 V- |: b( k- V% G
  12711.       (setq ai_seltype 3)               ;   then return pickset.
    9 A  M+ p9 Z& g+ L, |- e
  12712.       (ai_return ss)$ |" [  F. K! y7 P9 a) w' R  r
  12713.      ), @& ?' g- D/ A8 \) ^
  12714.     );cond close6 m* h7 r# w* C( B
  12715.    );cond #1+ U* H* t" d+ N; L% {5 s# s
  12716.    ((setq ss (ai_aselect)))                          ; Use current selection
    7 Y# o/ Q4 g1 H: y# r9 b  ~* q' c% m$ F
  12717.                                                      ; set or prompt for objects( y6 A( b) |6 ]. c; Q
  12718.    (T (princ "\nNothing selected.")$ W$ l( A. X1 s  s5 a
  12719.       (ai_return nil)' b- X# W) \6 q- W3 C5 F5 [- {
  12720.    )
    - ]2 }. [7 @* B' Z- ^
  12721. );cond close
    ; g. ]1 M4 y6 D, W/ N+ ^
  12722. (b_restore_sysvars)
    5 g9 _( k7 j* n. g
  12723. # [% D$ V* ^, Q
  12724. ;(if ss
      T1 }; N. T/ G8 P
  12725. ;    (setq ss (ss_remove_locked ss))
    - K# x6 q, ^4 ?1 q7 ^. F4 H' J
  12726. ;);if& s. e' ]7 g# {  N3 v
  12727. (if ss
    5 y6 \3 r1 b7 @3 h6 P
  12728.      (setq ss (ss_in_current_space ss))
    & h- U/ ^9 F$ I3 A  N( i
  12729. );if
    ) y" W& h' Y& b

  12730. ( I$ m0 l4 z% Q3 u  d
  12731. ss/ g6 [2 \) A+ C; I" `
  12732. );defun ddchprop2_select8 x4 M7 c+ y4 Q( k
  12733. 7 a/ K! v  Q. q% Q' E, X

  12734. 0 N6 b- u; ~& J/ r! e' J
  12735. ;;; Define command function.. E' g$ p7 B6 C
  12736. (defun C:CCH ()% Q) ~- @+ b' l& a9 x
  12737.   (ddchprop2 nil)
      X1 ?: F4 w, b- o+ h4 _) a
  12738.   (princ)
    4 k$ S2 F* m- }9 Y" x! J, f2 t
  12739. );defun9 n* U. a  K/ ]$ O5 }
  12740. 5 Q2 Y4 Y( E' e
  12741. 5 L1 A3 `, u7 {& s9 ]
  12742. ;;; Main program function - callable as a subroutine.
    3 Y' ]  [# h. s9 L$ X* V
  12743. ;;;! A+ o7 @8 S- O* C0 ]- P
  12744. ;;; (ddchprop2 <pickset> )# I# p! I# n8 t+ `9 H
  12745. ;;;/ [4 @7 a" F) y- z: O+ H0 R2 V2 Y
  12746. ;;; <pickset> is the selection set of objects to be changed.
    " s+ e9 G! Z. Z$ Y) f
  12747. ;;;
    5 y: ~3 ~/ I3 z" x+ k2 |! X
  12748. ;;; If <pickset> is nil, then the current selection set is4 i; K' W8 }0 _% R
  12749. ;;; aquired, if one exists.  Otherwise, the user is prompted
    0 v& G. |6 k" {( `. H
  12750. ;;; to select the objects to be changed.
      ~1 d/ J3 t$ A
  12751. ;;;
    # n" R! L$ n3 d: c' |4 \+ V
  12752. ;;; Before (ddchprop2) can be called as a subroutine, it must
    . x7 ?( Z1 U7 j( M* p
  12753. ;;; be loaded first.  It is up to the calling application to9 d* L+ z2 n4 P2 a; j& O
  12754. ;;; first determine this, and load it if necessary.
    4 n$ g& {7 Q% S) v0 C
  12755. % M5 ~8 O8 `/ @& g& j4 L# ]
  12756. (defun ddchprop2 (ss  /
    + Y6 ?8 E: m, R5 P

  12757. + e! d- z4 D; q
  12758.                   a
    6 D, l$ P- q! X7 k& E
  12759.                   add-mdash+ `2 O  b* \5 ?2 W# f! I( I% k  @
  12760.                   assoclist
    1 n' ^, [7 L6 d
  12761.                   bit-70% U: _$ r* k; j. W
  12762.                   boxlength9 R& y+ l2 T. _9 e4 L6 I% T
  12763.                   bylayer-lt" E4 o  k2 S& D- k: p
  12764.                   bylayer_col. ]: \; |' L4 d$ [, h& r
  12765.                   bylayer_lt
    * [5 @' j" V. {* y" a
  12766.                   call_chp2# V+ K  U7 A, g1 l- Z
  12767.                   chk-col5 c- ]0 ]3 n0 S3 k6 N9 n
  12768.                   ;chk-etype        ;var removed by rk
    0 G8 `4 e# s* w4 ^! o) A
  12769.                   chk-lay    ( g5 j6 L/ l" I
  12770.                   chk-lt, h" Q! G6 P$ B1 i* y* @3 N( b
  12771.                   chk-lts           ;var added by rk 6 V( G' M+ `" V0 H  ^8 P1 A( G
  12772.                   chk-th1 L( E  |* T& D" S% L
  12773.                   cmd
    % Z  p$ A' R5 B* S% e; J
  12774.                   cmdecho
    : Z9 C; F5 c  ~
  12775.                   cn& w1 T9 @( `( Y$ x- G9 t. x
  12776.                   cnum
    - n0 J1 b) y! R' f
  12777.                   col-idx
    8 y# ~8 G! d+ O8 ^. g( w! }, ^
  12778.                   col_def
    ( z- B5 C+ m( Z8 F" [7 n
  12779.                   col_tile' i. O6 b  M+ I& J
  12780.                   colname
    , x* m' y- J8 Y9 F4 S4 T/ B/ o
  12781.                   colnum
    / K! [! P" z; ~/ J4 H7 d# T7 t5 W
  12782.                   color' \$ o; E( v' T# E0 i( r
  12783.                   colorname
    & ]7 W8 ?" n' S* V
  12784.                   cvpname
    0 S( O: t- D+ L3 Z. V
  12785.                   dash
    - ~* E( I  V  h; s6 v( v7 e
  12786.                   dashdata
    2 \  V) _: i3 U/ b7 n
  12787.                   dashlist
      C! Y# k, s! _! W- }
  12788.                   dashsize5 [9 t+ P- n( b" g
  12789.                   dcl_id
    8 k7 @. p$ |) {. b7 l6 e) ?7 S
  12790.                   ddchprop-err0 r/ l- }; M  q& r
  12791.                   drawpattern1 L' g1 z; o5 h4 p3 g4 O
  12792.                   ecolor2 v( r5 B1 N; d* ~
  12793.                   eelevation
    2 r: E: b' D9 p
  12794.                   eflag
    8 P' p/ R7 e4 G! W5 g
  12795.                   eheight
      v/ ]8 T+ ]8 n  A
  12796.                   elayer/ V) l/ o" O6 v8 }' h
  12797.                   elevation
    ; o9 X& J- {$ c) f* n
  12798.                   elist/ ^0 C5 R) p# ~- s: B( G
  12799.                   eltscale; A1 r; P- a2 t
  12800.                   eltype2 z2 n( c$ d) m0 v; R. k
  12801.                   en
    & a5 n. W# z% W. K) D' M
  12802.                   ename
    & V, @! P) O. F( e
  12803.                   ESTYLE             ;var added by rk2 |1 v# K+ f& x* g3 A3 X: {3 Y
  12804.                   ethickness4 a3 {' K) H! @) `
  12805.                   ;etype             ;var removed by rk
    7 @8 n; j9 a# R9 ~+ T4 f
  12806.                   ewidth
    ' [8 H' U5 ~+ W. k2 P6 g
  12807.                   fchk
    % v9 J2 _) K5 j8 o- g
  12808.                   frozth
    ; H2 w8 j2 _. s+ m; K
  12809.                   fx
      O+ Q0 `+ r* J" E1 ?4 T
  12810.                   getcolor% @$ H' w( f( M. w+ p% Y* v
  12811.                   GETELEVATION      ;function added by rk
    $ Z; Z6 v3 g+ V: i+ d
  12812.                   GETHEIGHT         ;function added by rk
    # L' q3 t4 m1 J, n. V
  12813.                   getindex: X' G/ a/ L8 J
  12814.                   getlayer
    ' R; _" b: B2 N# O, S& P
  12815.                   ;get_locked_layers ;function added and then removed by rk
    % N. J% Q# Z) R$ y0 X* v) A
  12816.                   getltype/ d4 h# p4 V% X/ l& ^6 a. c! z
  12817.                   getprops8 w! S3 V3 B; S4 m  C% `
  12818.                   getscale          ;function added by rk
    3 e2 \! a5 x2 h' A+ P
  12819.                   GETSTYLE          ;function added by rk
    4 g9 m  g# b* B; a1 }, g
  12820.                   getthickness8 h0 n# M  G" K) J6 ?  o
  12821.                   GETWIDTH          ;function added by rk
    9 }  c& R1 U) g4 `3 V
  12822.                   globals" I. \8 g. ~+ |; j2 P" ?
  12823.                   HAIR_STYLE_LIST   ;var added by rk' ]) T: [7 b: C) g
  12824.                   height
    4 B/ X" D5 z3 Z8 D9 k4 d3 {0 J
  12825.                   index  X$ t- W4 w( }7 H5 G
  12826.                   item
    5 h" L) C& u. ]
  12827.                   item1
    7 v6 `/ v' p. E0 k) k
  12828.                   item2' |' ~6 F: \3 E7 D/ j
  12829.                   itemlist4 |# E4 H/ G1 H% b- n. S
  12830.                   lay-idx
    " s( T$ b- m, V, z
  12831.                   layedit_act+ z" K$ _2 D/ z7 ]# T  B' O& C' \* I
  12832.                   layer
    , H5 ^( Q- }9 t" g2 p/ s
  12833.                   layinfo* S$ \+ j: K8 @
  12834.                   laylist# L. o4 O' u2 k
  12835.                   laylist_act( {; F& M4 G9 o; p4 C  S$ n* P& v
  12836.                   layname
    2 N' N' H  o4 L& @9 {
  12837.                   laynmlst$ j+ d1 O# t4 Q/ J- T7 i: g, D4 i
  12838.                   layvalue
    4 V9 j, C, ?/ ], |) S- Y# D
  12839.                   linetype; x0 H2 N, F( @9 X, _# p4 s
  12840.                   list1
    - ~* p; d1 n1 {9 S
  12841.                   longlist
    " a7 v' Z; Z% q0 b* I! T, i" f
  12842.                   lt-idx) }5 y2 d: d; Y: ~  v
  12843.                   ltabstr; w+ K6 J3 h8 s
  12844.                   ltedit_act% Q# c1 |0 A# I. W9 ~
  12845.                   ltidx% W! U1 n9 |& W) y% Y3 O; e3 d% S1 z
  12846.                   ltlist
    2 U+ L. C8 L; J% e8 H* T+ [1 \
  12847.                   ltlist1
    * N& S) `4 J. ~1 R6 U( p2 s
  12848.                   ltlist_act
    1 H' t& P8 `- Z9 `7 Z, y+ G
  12849.                   ltname
    - Z+ I$ v/ u* n' s- {5 t+ D7 L
  12850.                   ltnmlst
    , v0 T% A1 Y/ u# ?4 i4 J( y$ t6 w
  12851.                   ltvalue+ R: L0 z* T- m9 E' F
  12852.                   ltype
    5 C8 |5 L# \- U6 t
  12853.                   m2 R* j1 @/ p6 }+ p# J1 O) N2 n
  12854.                   makelaylists1 T9 [/ K5 _0 o3 [1 z
  12855.                   makeltlists0 p& _' R; F* ]; d
  12856.                   match-col
    3 {" l0 N3 }4 C9 ^, E
  12857.                   ;match-etype          ;function removed by rk. ~. n5 R7 X* S) p  g4 R" i1 j8 m
  12858.                   match-in/ y. ]  B/ K8 b+ b! Z* n
  12859.                   match-lay
    - d) z: Q6 I" C9 K3 N4 f3 T
  12860.                   match-lt
    / p% P2 ^2 }: N! L3 ?- W
  12861.                   match-lts
    8 o, E, |, ^2 X' U* P/ `' i# R8 V: j
  12862.                   match-th
    1 Y' N# B8 S1 T% P
  12863.                   match_col) _) Z$ w( s$ H
  12864.                   mdashlist: J+ Z0 C' m& d: O# G( E; [4 _
  12865.                   ;MPOPLST               ;function added and then move to ac_bonus.lsp by rk
    " g* a3 r1 q# }# K0 S
  12866.                   n
    * o1 f& H5 i5 _* F* h7 E. v
  12867.                   name
    : x3 I: g# R6 Y& E  ^6 p/ u# U& W
  12868.                   ncolor' n( j* Z4 b1 z8 h- O
  12869.                   nlayer
    5 t) h' g- h2 S& y6 `; Y2 E- X! x
  12870.                   nltype
    3 g5 n2 D) |- @9 C  h" v$ `" [
  12871.                   nthickness6 Z2 i2 b0 N1 d! {* p" ~/ I
  12872.                   off# X) d5 z3 H, V: S# P( y) G& J
  12873.                   old-idx) U) j2 W5 S, o+ Y/ t8 ?0 D$ B$ w
  12874.                   olderr* ^5 y8 O1 P, y9 V3 r% L# Z  \
  12875.                   on
    7 Y; s, y0 Z, t3 V- I) M6 I* Q
  12876.                   onoff
    % }' \' n7 F* J1 Y* m% W  E5 @- x" m
  12877.                   patlist
    & k& u0 O* ~/ k" ~, s  j4 V( u# k
  12878.                   pattern* c  a$ E. e2 A. `) i! ~! m/ n
  12879.                   PL_WIDTH_GETTER       ;function added by rk
    ( X/ \3 G% _6 F  l$ h
  12880.                   POLY_SS               ;var added by rk
    - c9 G' E* `7 W& `
  12881.                   ;POSITION              ;function added by rk and then moved to ac_bonus.lsp
    % o' |0 ]5 t. q% L- |% D7 I, O
  12882.                   proplist* q4 A  M4 f8 R
  12883.                   reset-lay+ u; s, D, J0 `( s! j
  12884.                   reset-lt
    3 ?8 a0 H5 N. M
  12885.                   s
    1 P$ P1 L- y: @) }# N6 F1 \: z
  12886.                   selset
    0 P4 Z1 S  ?9 M: S
  12887.                   set_col_tile
    3 e' F' U4 ^1 g
  12888.                   sortlist2 U3 |9 i3 s2 `2 }
  12889.                   ss
    9 c$ D2 {+ p% _  r$ {
  12890.                   ss_in_current_space  ;function add by rk., `* a/ x9 B% O8 _5 O  Y2 w
  12891.                   ss-index
    # O% B: r" L2 \; C# A+ v5 H! g
  12892.                   ss-length' z5 j1 U' y% S& `* h2 T
  12893.                   ;ss_remove_locked     ;function added and then removed by rk.$ i5 G3 L- h1 B( X) ~4 E
  12894.                   sslen/ k9 _: W# \9 o+ z4 F1 b( S
  12895.                   temp_color. b# \0 h- Y, `* J& z, P/ H* E' X
  12896.                   templist. H' q4 p3 M1 U! L3 f  e
  12897.                   test-main-ok
    7 k* H# `2 `8 R; G/ C3 e, z5 o( @
  12898.                   test-ok
    8 O9 e5 o( R( |- q5 e
  12899.                   testidx* L( y+ a) s2 @
  12900.                   testlay
    & H  u+ C3 \/ k( K6 d+ K5 D
  12901.                   th-value0 G# U( T8 Z+ z& I( G
  12902.                   thickness
    # G6 r- l: t) O
  12903.                   tile2 q, j' Z  p% s# N
  12904.                   tile_rect6 Z; g8 w; P# l* S6 H
  12905.                   tilemode9 ~1 L* [) o. h) T% K0 a
  12906.                   ;TNLIST           ;function removed and moved to ac_bonus.lsp by rk
    , f5 d  W; ]" Y5 O! u
  12907.                   TXT_SS            ;var added by rk
    3 X1 Q2 J0 C2 V( U7 e9 s5 h. K
  12908.                   ;undo_init        ;removed by rk.+ X# u  @$ ~/ d! w, X7 Q
  12909.                   vi1 h5 z( A3 O/ C+ t" \3 D) q1 ?5 b! b6 ^! L
  12910.                   vpf% ^, E! a( z* E7 N  C/ Z- h; t
  12911.                   vpldata
    4 b  K4 d+ `: L' P7 g
  12912.                   vpn
    # U1 W% u8 |4 [
  12913.                   which_tiles
    5 Y, C' c0 A0 y: W+ H/ c
  12914.                   width
    / w. K4 c1 |; y) K! i& Z
  12915.                   x8 C- o( m) K( i9 k6 ~! |' e0 y. E
  12916.                   x1
    ) [3 u; V8 Q( X5 {; V' e) ~4 q- O) ~
  12917.                   x27 f1 J$ }) h& Q8 w( p3 d: g' I; G
  12918.                   xdlist" u9 |3 i) a- F# M* I4 d: q; V
  12919.                   y* Z5 e5 w' Z: s* t* a- h
  12920.                   y1. E4 v  a+ I7 E& G- P* w0 {
  12921.                   y2
    # U; ?2 J. m# O: q* p) N  o
  12922.                 )( i5 p  y. n* h4 A9 o" k
  12923. : |+ A: l, ?2 S3 S
  12924.   (if (and (not init_bonus_error)
    % i4 `: V: P& t
  12925.            (equal -1 (load "ac_bonus.lsp"  -1)) 1 R3 T& Q  r7 X
  12926.       );and
    7 U8 R) k0 S* f$ j- Z3 b$ Y' F
  12927.       (progn (alert "Error:\n     Cannot find AC_BONUS.LSP.")(exit))
    4 l6 c. N& `- I7 \& ?! L! ~
  12928.   );if) n  ]. o- m0 P8 k% C2 w! p
  12929.   (init_bonus_error (list/ a$ I- L8 O! Q& P" g
  12930.                      (list   "cmdecho" 0
    + ]0 _% K7 ^# ?! D. u
  12931.                            "highlight" 0
    - ]6 Y! X: m0 R' J* x0 H7 R9 @6 v
  12932.                            "regenmode" 1
      h6 _8 z+ g# b) H6 t: O  J
  12933.                              "ucsicon" 0; r6 m9 j) K) e
  12934.                      ) % v3 }- v# Y2 w* t7 Y1 }* F' C, A
  12935.                      T     ;flag. True means use undo for error clean up.                    
    ; d2 f3 `! R+ u9 t  [8 l+ |3 D$ }
  12936.                     );list  6 z# r' _6 u* Q3 v( e6 C8 }2 {8 q
  12937.   );init_bonus_error+ }- ~6 y7 k* E" k7 y
  12938.   X6 C- S" Q, o. k  t
  12939.   (cond
    6 `0 o: {1 C  h% r
  12940.      (  (not (ai_notrans)))                       ; Not transparent?
    # B& x' r; w# D* J0 S: R1 s$ h
  12941.      (  (not (ai_acadapp)))                       ; ACADAPP.EXP xloaded?2 r2 W/ {5 J5 j* l$ T0 |
  12942.      (  (not (setq dcl_id (ai_dcl "exchprop")))) ; is .DCL file loaded?
    ) j" w0 M! Z. A7 y' b3 a6 f4 I
  12943.      (  (not (setq ss (ddchprop2_select))))       ; objects to modify?
    2 y1 @+ R) ]  }* X7 Z* i
  12944.      (t
    , I6 s$ E* Y* _: a+ w
  12945.         ;(ai_undo_push)
    ; y5 I  k2 i! \8 M# r3 ]9 ]/ \
  12946.         (ddchprop2_init)                          ; Everything's cool,! l3 X5 Z/ G: X4 U/ S) r8 ?; J
  12947.         (call_chp2)                               ; so proceed!+ d4 r. R0 C) Q
  12948.         ;(ai_undo_pop)! S- G, {' q5 B* z; T
  12949.      )
    + G8 X1 w) l- z/ H, ^& k
  12950.   );cond close
    : J' d1 c0 h# B7 _

  12951. , o. f7 c2 ?, ]' c/ ^1 y/ E
  12952.   (restore_old_error)
    , C. ]1 l- [2 C) Q0 w

  12953. , Z. I0 m+ ^- H9 h# {8 B4 o% k
  12954. (princ)- ^! p% q. w# C5 W9 A" x
  12955. );defun ddchprop21 _3 U0 k* d9 q  s# O1 I, N
  12956. ! r/ ^+ ^  G# U1 Y4 C, ]3 m% ^
  12957. ;;;----------------------------------------------------------------------------  O5 P" w& E' p# R
  12958.   o2 b& w  D% q* v6 I- a: u
  12959. (princ "   EXCHPROP loaded.")
    7 [! S0 ?  @& ~. G6 w- k# r( _
  12960. (princ)
    ) o% O' R/ U" w5 @# h+ v! Y3 T

  12961. $ K) e: C1 v3 b4 z: K
  12962. ;;;----------------------------------------------------------------------------/ U2 o- ^+ A- P" t
  12963. ;;;---------------------------------DDCOLOR_LSP--------------------------------. s' @5 S3 k" [/ f8 Q0 I
  12964. ;;;----------------------------------------------------------------------------/ K9 Q8 P3 U7 C$ n% S) X6 F
  12965. 4 ?, x6 }/ k7 w! `
  12966. ; Next available MSG number is    24
    . j$ N' t  u; @% r
  12967. ; MODULE_ID DDCOLOR_LSP_
    5 \8 T1 u" |  k0 s1 ~$ }( v
  12968. ;;;
    . j5 T/ R' {" w! V; x
  12969. ;;;    ddcolor.lsp
    . |. \/ ]: Y/ W, @
  12970. ;;;    * t  H5 I# n- G6 u% t
  12971. ;;;    Copyright 1990, 1992, 1994, 1996 by Autodesk, Inc.+ E- y6 S( ~- z& u, b' M, C: J/ s9 z
  12972. ;;;) ]# ~3 u9 r! u5 L$ [* \
  12973. ;;;    Permission to use, copy, modify, and distribute this software+ z6 }: c" i- V0 r( X  o) l
  12974. ;;;    for any purpose and without fee is hereby granted, provided
    - G9 d8 S8 A- t6 f( W" |
  12975. ;;;    that the above copyright notice appears in all copies and
    % D) S; @! j6 l& e
  12976. ;;;    that both that copyright notice and the limited warranty and
    . J, D1 T4 i/ I( k& @" b
  12977. ;;;    restricted rights notice below appear in all supporting
    % `$ Q7 j8 i0 f- E; o3 |! F! ]. R; |* z
  12978. ;;;    documentation.
    1 c" |& v  \6 [4 i1 h
  12979. ;;;
    ! k  D5 S# c, w* c
  12980. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
    1 F- `5 g0 E9 |, @! `/ K$ z
  12981. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF; R) C3 k2 Z; a# h0 i$ [+ K
  12982. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.! T  S& R3 }. {
  12983. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
    ; H( g' E, L6 z: c/ W) Q. d
  12984. ;;;    UNINTERRUPTED OR ERROR FREE.
    ( v6 a" }! T1 c5 Y4 q
  12985. ;;;" s/ f( l( s; o4 P$ m( d
  12986. ;;;    Use, duplication, or disclosure by the U.S. Government is subject to" W, N: \8 Z3 D( P/ v
  12987. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer# c, d  e0 Q) L7 K% F9 k
  12988. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) ) G# [- W4 Y6 G. F: G, |; ~3 S
  12989. ;;;    (Rights in Technical Data and Computer Software), as applicable.+ Y7 B8 k0 Y; _; ]& Y- M
  12990. ;;;3 Y! K+ K# ?' c/ ^, _
  12991. ;;;.$ C5 j2 O" o% ~2 P. }* `0 C5 l
  12992. ;;;0 F2 f3 X( N( s6 w0 ]
  12993. ;;;----------------------------------------------------------------------------
    . |; y# P4 U$ \) E! g+ \9 E
  12994. ;;;    DESCRIPTION
    ) [% }( p% u4 ^7 @2 f8 K8 f- `+ L# E" ~; F
  12995. ;;;     
    5 |! U/ ]% {, \& x' T
  12996. ;;;    Chromatic Pallete style color selection dialog.
    ' G0 s& H( ?0 O& |; l0 F
  12997. ;;;   
      }0 ?, A% _1 p& Z6 V: {
  12998. ;;;    Globals:
    . w% n9 r8 \6 b* N& A
  12999. ;;;    # j- [" i; Y: V. {
  13000. ;;;          chroma_color - Integer color index.  The last value selected
    ) v0 b; Y5 c$ K7 }: H
  13001. ;;;              by the user in chroma dialog.  It is not cleared or reset
    * S5 i: M, u% a, |4 B% p
  13002. ;;;              by a cancel.  Only used for communication between callback: \4 s3 h" N% C! m) ^
  13003. ;;;              functions and the (chroma) funciton.1 X) A% W! k! _
  13004. ;;;   
    6 y, E  _$ A1 {# [% S$ |' ?
  13005. ;;;    Depends on the definitions for the dialog provided in chroma.dcl.
    2 S. h. i4 j+ E
  13006. ;;;    . {1 [6 B/ [; w: a1 d+ `* N
  13007. ;;;
    7 m' \+ r& z: j7 z
  13008. ;;; C:DDCOLOR -- Dialogue front end to the CECOLOR sysvar.  Uses the chroma
    & V' ^% V, \, z- H$ ~' c
  13009. ;;; pallete style color selector.
    * W6 u" L. V, [
  13010. ;;;0 T0 l4 `$ o. N4 w0 O+ V
  13011. ;;; ===========================================================================$ H, j" j8 |! ]( K
  13012. ;;; ===================== load-time error checking ============================3 z7 K9 h0 j5 x8 w
  13013. ;;;) E2 [# o: \# G/ L" a. @

  13014. 6 G/ Z2 b8 f4 T
  13015.   (defun ai_abort (app msg)
    8 B& `' H8 |' D9 {& @% T
  13016.      (defun *error* (s)1 l: W  }  \' G& H# O" B7 ~) Y
  13017.         (if old_error (setq *error* old_error))
    8 {6 }7 Z. l" I. v* R
  13018.         (princ)1 t' z9 c* R' w; `6 Z7 V
  13019.      )
    ) `3 H" F4 u. I+ X% S0 U
  13020.      (if msg1 C: Z3 J/ A6 X9 D! E
  13021.        (alert (strcat " Application error: "
    / `8 w: m, J; B+ {+ t+ X- x
  13022.                       app
    8 l4 t' u; h# N- Y0 |: S3 M, P
  13023.                       " \n\n  "3 z7 M5 T3 y: ~: u6 _
  13024.                       msg) K1 z- Z) e: G- e1 G% @3 w  U
  13025.                       "  \n"+ N% E- o" l) c. ^
  13026.               )
    ( Q0 o& J9 V' }' b6 H
  13027.        )
    " T" i( _: `- }
  13028.      )
    $ \; w1 C" H0 ~! C
  13029.      (exit)
    & r0 w6 c; e. [# b, u2 s3 W$ H
  13030.   )0 M' v& r8 M8 R9 u4 c( M1 q

  13031. 2 S7 N" u0 c. J3 U' \
  13032. ;;; Check to see if AI_UTILS is loaded, If not, try to find it,1 V+ ]' o) o8 R: r6 ]7 ^7 Y; V
  13033. ;;; and then try to load it.4 B! P4 ?7 w- ]( c  D% w; K
  13034. ;;;
    + @" R% @! C- T
  13035. ;;; If it can't be found or it can't be loaded, then abort the4 W4 n" w! N6 `% Z# t8 X/ H
  13036. ;;; loading of this file immediately, preserving the (autoload)
    ! Q3 L6 ~% J) W3 w. |# _( P
  13037. ;;; stub function.& I  p6 s& v/ ~: y9 O) f
  13038. ) U- x9 Y* v0 e# c6 ?% u4 F- |  i- Q
  13039.   (cond. ~0 W% ]- m8 E  `8 A# F' p  }
  13040.      (  (and ai_dcl (listp ai_dcl)))          ; it's already loaded.( L3 K( \/ o  j0 O5 Q
  13041. 3 E- z7 H0 \/ A6 e6 r  i, t& _$ j' C
  13042.      (  (not (findfile "ai_utils.lsp"))                     ; find it
    ( K* {  x5 P8 a( I5 n$ N1 Z0 k
  13043.         (ai_abort "DDCOLOR"
    2 s9 G& [! j8 S3 f. k( s
  13044.                   (strcat "Can't locate file AI_UTILS.LSP."1 H: q  q1 K- g2 l
  13045.                           "\n Check support directory.")))
    % j* Z( I6 k8 k. f

  13046. ( O% m8 G; C9 N) k7 g' w
  13047.      (  (eq "failed" (load "ai_utils" "failed"))            ; load it
    2 p" E) U- G: T% r/ `
  13048.         (ai_abort "DDCOLOR" "Can't load file AI_UTILS.LSP"))
    4 k* ]4 i9 H# I+ x6 J/ `" `
  13049.   ): t7 T1 P4 H3 q$ B. y3 a
  13050. ; [( l' q( E3 D* A4 ^) p6 p
  13051.   (if (not (ai_acadapp))               ; defined in AI_UTILS.LSP3 I$ n% q% l* m( P
  13052.       (ai_abort "DDCOLOR" nil)         ; a Nil <msg> supresses: J; Z& E% u& S  |) V- V1 L
  13053.   )                                    ; ai_abort's alert box dialog.
    : q( R5 d4 I7 p; r

  13054. ' l& C- l5 |1 {' M+ h  _
  13055. ;;; ==================== end load-time operations ===========================
    8 ]/ p* H6 _, ]6 k1 Y4 Z

  13056. 8 ^9 K4 I) R/ ?5 u
  13057. (defun c:ccc (/ co_oce clrx co_err co_oer lay_clr)3 c) Q  j6 ^& h, @
  13058. ; C  |$ N' c' l8 A. Q1 v5 l) D
  13059.   ;; Main Color function, called by setup code.
    : ?0 K; `: i- m- S- i
  13060.   (defun ddcolor_main()
    ) |/ L3 ?8 K; x" s5 b) Q. r3 M, a
  13061. 6 y5 B. j: L0 O. w9 `% t
  13062.     (graphscr)
    9 P8 w  j5 ]: U- L
  13063.   % X( O4 ~; v0 R/ M4 L* _
  13064.     ;; Get the color of the current layer, for possible BYLAYER color swatch.
    7 A0 ~/ M  u6 G8 x' H5 y) f. H
  13065.     (setq lay_clr (cdr (assoc 62 (tblsearch "layer" (getvar "clayer"))))), ?# m) n8 K6 T

  13066. + F" I4 m2 [& }) Z! K
  13067.     ;; Call the dialog here...: q6 t* G. i6 q9 t/ `% d% I4 d8 h
  13068.     (setq clr (acad_colordlg (cstoci (getvar "cecolor")) T lay_clr))
    % ]( Y! T( F) \* |8 ^) z" G' Y
  13069. ( Y, h& @7 P/ N' @0 ?
  13070.     (if clr
    $ P4 n$ R8 Q! h% w" }; w
  13071.       (setvar "CECOLOR" (citocs clr)))
    3 z& V! N1 e* u& a+ t
  13072.   )! y: u; {3 D% {6 F" m: X' R- L% Z

  13073. 6 E; i. i- y7 l" w4 R
  13074.   ;;;
    + [; k1 N1 U2 h
  13075.   ;;; CSTOCI -- Color string to color index0 f5 f9 P& E+ [6 G* [8 n0 m9 k- \6 c
  13076.   ;;;   Convert an arbitrary case string into a color index.& {0 x( a( Q% P, {* f2 x
  13077.   ;;;   Returns nil if string is not a valid color.* i( X- r$ b; X$ ^% h
  13078.   ;;;
    7 Q. ~1 f- `  y5 v! O
  13079.   (defun cstoci (str)* }( m9 C* u7 y7 F
  13080.     (setq str (strcase str))
    0 b( s# v; W+ k( Z) l$ Q
  13081.     (cond
    ( O' o' n! U% _2 Z* W3 O! y. J
  13082.      ((= str "RED")        1)5 Q, b8 v# N  C4 J$ H* I
  13083.      ((= str "YELLOW")     2)
    ' f- I# B( Y9 ^
  13084.      ((= str "GREEN")      3)% J3 k1 K* X9 X
  13085.      ((= str "CYAN")       4)
    , j/ S- b) R! J# D) [; Z
  13086.      ((= str "BLUE")       5)2 ]  C: C  t5 Q  P) H' A' r0 b: ^* k
  13087.      ((= str "MAGENTA")    6)" D/ N5 H6 a6 q, v7 L
  13088.      ((= str "WHITE")      7)" m0 k9 M8 \1 v
  13089.      ((= str "BYLAYER")  256)
    ( s% x" X& e  L' p8 Y# G9 m
  13090.      ((= str "BYBLOCK")    0)
    $ v/ R* A7 N; I/ @- Q9 X
  13091.      ((= str "BY LAYER") 256)( S, v# k3 A3 {) C7 |! d
  13092.      ((= str "BY BLOCK")   0)
    9 p5 Y; v1 Q; a
  13093.      ((and (< 0 (atoi str)) (> 256 (atoi str))) (atoi str))% L6 N3 _- c, M5 e& [
  13094.      (nil))
    4 J# f; F, T& W# M
  13095.   )' X' e$ D' v( ?- `1 ]

  13096. 2 b% w3 O+ L& G% |$ N
  13097. 1 u( h5 W( m5 C; G/ Y, q
  13098.   ;;;
    6 ]9 _( Y( o2 x- v) E  V5 |
  13099.   ;;; CITOCS -- Convert color index into standard color name.
    3 b7 {& k/ d4 f# k
  13100.   ;;;    Will return the standard and logical color names as text1 [/ L) Y& q) O$ v+ ^
  13101.   ;;;    strings.  Returns nil for out-of-range color indicies.
    4 B+ w* Z/ o* e% d
  13102.   ;;;- a7 X2 Z# ]* h7 a
  13103.   (defun citocs(i)
    ; {9 R6 u/ V, E3 c
  13104.     (cond  C$ s5 E: q) r3 c5 l9 Y
  13105.      ((= i 0)   "BYBLOCK"): g3 `2 I6 Z' s/ x0 q" t3 I5 o
  13106.      ((= i 1)   "red")9 o! ~1 N0 B7 v, T
  13107.      ((= i 2)   "yellow")4 f  H( p  M& T. h& N7 Y+ O
  13108.      ((= i 3)   "green")8 D) I- D, ]9 F5 V9 f& I$ u
  13109.      ((= i 4)   "cyan")
    " m2 ~( Y5 [" r, l- q
  13110.      ((= i 5)   "blue")
      L# _- x! D2 D
  13111.      ((= i 6)   "magenta")' [% P- J- A0 N' P: }: V
  13112.      ((= i 7)   "white")
    5 l# i  k& t; G4 S7 u; g0 {& I( V
  13113.      ((= i 256) "BYLAYER")
    ( E# v) Y( b" n4 `, g! l7 p+ N
  13114.      ((and (< 0 i) (> 256 i)) (itoa i))
    2 y0 z. p' n% k: m( p  u$ \" m" ?
  13115.      (nil))
    7 N0 f1 \5 Z! K1 r- ]
  13116.   )
    : L) I6 L5 w/ [/ i' X; w3 x8 g4 i$ J
  13117. 2 e# X8 a5 Z% {
  13118.   ;; Start of ddcolor
    ' ]& u9 V; a0 C
  13119.   (setq old_cmd (getvar "cmdecho")    ; save current setting of cmdecho- S# f0 ]! |9 q$ F
  13120.         old_error  *error*            ; save current error function* L6 G* w/ G" `* z
  13121.         *error* ai_error              ; new error function$ V4 G$ h" }9 R0 I) [5 C' l$ G
  13122.   )5 @; A7 j. k6 `( ~

  13123. ( g: E) i0 v( y
  13124.   (setvar "cmdecho" 0)
    # d; }4 O* Z& S( K
  13125. # I5 j3 W8 H+ V" e7 m2 ~- N6 w
  13126.   (cond
    3 Y! X) Z8 l0 `, h
  13127.      (  (not (ai_trans)))                        ; transparent OK
    1 R7 [: ?3 I' _2 i
  13128.      (  (not (ai_acadapp)))                      ; ACADAPP.EXP xloaded?$ Y9 y0 b' g& x  z0 w. V0 L
  13129. : Y9 `2 ]' S' O
  13130.      (t (if (and (/= 1 (logand 1 (getvar "cmdactive")))3 [; y5 m% e5 Y. ]  j& y) x
  13131.                  (/= 8 (logand 8 (getvar "cmdactive")))
    : Y$ F8 O; X: G1 C3 A- o
  13132.             ): h8 W% D4 R4 V' p3 _) C
  13133.          (ai_undo_push)+ {1 {- {  f, {% U$ _
  13134.         )
    1 k, C; ?! L7 x5 K6 g6 U( G* ]4 ]

  13135. 4 Y2 x- \1 Q7 \  M
  13136.         (ddcolor_main)                          ; proceed!" j' |  \. k2 @

  13137. . X" k& m3 ~( o5 v& ^
  13138.         (if (and (/= 1 (logand 1 (getvar "cmdactive")))+ u$ `; ]% e! T6 @! o& |- W* n+ O' O
  13139.                  (/= 8 (logand 8 (getvar "cmdactive")))2 A* @8 Y7 O, V& s
  13140.             )4 d! z4 `! P7 g: q/ {" ?
  13141.          (ai_undo_pop)
      z- g' `. j+ _- G# S7 E  t7 J2 Y
  13142.         )3 }% R5 @4 F, e. y$ `
  13143.      )
    ; L1 J/ C1 G, u
  13144.   )" |2 u+ t$ }+ W" B

  13145. + U4 r7 d7 n; c# w2 W; T
  13146.   (setq *error* old_error)
    5 |- E" e- `! j) J& i
  13147.   (setvar "cmdecho" old_cmd)
    , \2 A% {% P! ]
  13148.   (princ)
    * ^0 [, O* w) ?( o2 U7 W3 B) k
  13149. . k" y/ f% b) E+ u2 @4 {. q
  13150. ). B! U( C. d0 F& m+ I' I
  13151. ) ]* C8 _& S. K; A$ B" w( S
  13152. ;;;----------------------------------------------------------------------------
    ( M% A& x' G, i. }- M) _- p$ h  @
  13153. ) n  v7 j1 n1 A# l
  13154. (princ "  DDCOLOR loaded.  ")
    8 r3 x4 r; x8 r  h: P) j$ {
  13155. (princ)( p2 T$ b/ j( v# c
  13156. 6 m/ b+ r0 ~: l9 ]
  13157. ;;;--------------------------------------------------------------------------;
    . |/ R' t  R( `8 U/ S) N
  13158. ;;;---------------Chon NHANH Nhieu Doi Tuong GIONG THUOC TINH----------------;
    - b0 o) [8 f, S' |( E& Z
  13159. ;;;--------------------------------------------------------------------------;4 }1 r0 @' M( @. m' V
  13160. ;;;   ssx.lsp
    9 e. P$ [- E9 D: Y9 t6 z0 g
  13161. ;;;   Copyright (C) 1990 by Autodesk, Inc.( W- A1 p  c5 ~9 d1 u3 q# Y2 b" o1 L
  13162. ;;;   Copyright (C) 1991 by Control Systems, Inc.* g0 ]( \9 ?3 `' Y( k) V0 f
  13163. ;;;4 d- k3 t4 K9 f8 S( ^% P) l& N+ Y
  13164. ;;;   Permission to use, copy, modify, and distribute this software and its
    5 V. j1 `/ P2 n
  13165. ;;;   documentation for any purpose and without fee is hereby granted.
      x1 \& O& u% O" U$ |
  13166. ;;;$ ~* H# ?$ l7 Q% d- k. D
  13167. ;;;   THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
    & p9 t4 I/ }& l
  13168. ;;;   ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
      @. K6 m+ ^3 O" F. d  ?) u1 i
  13169. ;;;   MERCHANTABILITY ARE HEREBY DISCLAIMED.
    7 x9 y0 S4 n" ^/ P2 D4 S
  13170. ;;;
    + B, |2 R: M* }  z
  13171. ;;;   Larry Knott                        Version 2.0    7/18/88
    ' |. R: l7 n& r; y' {; [
  13172. ;;;   Carl Bethea & Jan S. Yoder         Version 3.0
    " i% a+ P8 q& ]8 J- P
  13173. ;;;   Enhancements to (ssx).
    2 U1 G, ^" S1 t+ t0 M# X
  13174. ;;;   15 March 1990
    - [2 X/ k: O1 u+ K$ j+ {
  13175. ;;;2 s9 v# |6 @* A( N" ~6 G
  13176. ;;;   ARTIST Software, Inc               Version 4.0   December 1991& m  I. q' U/ w) ?& V
  13177. ;;;   Modified for FLEXICON usage. If the variable FLEXVAR = 1,
    " z7 r! i8 v! t" O
  13178. ;;;   use Flexicon menus) U# }( p6 B- ?5 r
  13179. ;;;$ ^; C* H( B2 E2 j6 I
  13180. ;;;--------------------------------------------------------------------------;
    % e: j+ J- w' g
  13181. ;;; DESCRIPTION
    : D" q5 t; m& q7 N6 l4 v# y
  13182. ;;;                              SSX.LSP                                 
    + a$ L( Z! r# I' L) M
  13183. ;;;                                                                          
    + t- Z  N; o3 A% Y8 j
  13184. ;;;   "(SSX)" -  Easy SSGET filter routine.                                    9 Q& S9 z, T/ Z7 y" w0 N* v
  13185. ;;;                                                                           
    + k' i6 d5 s) R
  13186. ;;;   Creates a selection set.  Either type "SSX" at the "Command:" prompt   
      v8 G  Z. d* C$ p- r+ ^
  13187. ;;;   to create a "previous" selection set or type "(SSX)" in response to 6 u. }; F, ]7 b0 o5 K  ]; S
  13188. ;;;   any "Select objects:" prompt.  You may use the functions "(A)" to add 3 K6 `$ e3 i/ I) J" _
  13189. ;;;   entities and "(R)" to remove entities from a selection set during 8 s$ ?" l! }, i) d, P, @
  13190. ;;;   object selection.  More than one filter criteria can be used at a 3 ]3 l& `& S6 V
  13191. ;;;   time.         5 }- U1 I. q+ j- d5 Y
  13192. ;;;                                                                          
    - v9 Z) A9 }; H8 C% a. A9 z* F
  13193. ;;;   SSX returns a selection set either exactly like a selected* z2 e. \& h- p& j1 U# p) M
  13194. ;;;   entity or, by adjusting the filter list, similar to it.5 B4 Q3 G- F* W( q
  13195. ;;;& L. _; M% e; }7 ?
  13196. ;;;   The initial prompt is this:
    1 C+ J  D% i# A' \  |* F  }5 d
  13197. ;;;   : l1 h' i4 O* T4 T' h% s" a
  13198. ;;;     Command: ssx) ~- l3 i% n. s2 j/ h; B! ~' P4 d
  13199. ;;;     Select object/<None>: (RETURN)
    + S& g6 X0 M+ D+ C% ]! b4 V$ G
  13200. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector:
    * K+ N9 r6 C; h" F( c" L
  13201. ;;;   
    6 e  n" L! s% Z3 f/ s! N
  13202. ;;;   Pressing RETURN at the initial prompt gives you a null selection
    5 B8 Y3 C  F5 V3 |0 [
  13203. ;;;   mechanism just as (ssx) did in Release 10, but you may select an 4 i8 C5 u; z+ i' Z
  13204. ;;;   entity if you desire.  If you do so, then the list of valid types   S1 h$ K8 e" z/ |' Q9 ?# B
  13205. ;;;   allowed by (ssget "x") are presented on the command line.
    ; V) U3 }  ?. S9 y! Z
  13206. ;;;   , ^; l1 e9 y! A: |8 T' }& Z
  13207. ;;;     Select object/<None>:  (a LINE selected)
    + [& K7 f/ p8 [0 i' k$ u
  13208. ;;;     Filter: ((0 . "LINE") (8 . "0") (39 . 2.0) (62 . 1) (210 0.0 0.0 1.0))
    9 p+ s7 X' ?# U
  13209. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector:
    ' O3 h0 V" B$ t
  13210. ;;;   4 W) d9 ^  l' R7 M
  13211. ;;;   At this point any of these filters may be removed by selecting the * o: l8 I5 l% Y& w* u
  13212. ;;;   option keyword, then pressing RETURN.
    ' h$ [: Y+ u1 V) f3 Z
  13213. ;;;   
    ( Y: S+ [6 Q/ _3 m4 t: w
  13214. ;;;     >>Layer name to add/<RETURN to remove>: (RETURN)
    " X. Y& C: z9 d: W' l
  13215. ;;;         
      B$ O2 d0 d0 a' Q  p# |! l) m" n% f, Q
  13216. ;;;     Filter: ((0 . "LINE") (39 . 2.0) (62 . 1) (210 0.0 0.0 1.0))
    5 p' _# i4 c- i; W4 Q/ [; |
  13217. ;;;     >>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector: & O- g" p% W! M8 |5 v
  13218. ;;;   
      I/ O" d* i0 p/ ^6 E. c1 S4 A
  13219. ;;;   If an item exists in the filter list and you elect to add a new item,
    ) E* U* i; _$ x* B1 v
  13220. ;;;   the old value is overwritten by the new value, as you can have only
    # o7 W8 ^( m) \8 |0 J
  13221. ;;;   one of each type in a single (ssget "x") call.
    8 s. G  w# t" \8 q0 V
  13222. ;;;- g6 J1 I3 y6 s
  13223. ;;;--------------------------------------------------------------------------;  f/ w# n) s, ^, X# J+ q
  13224. ;;;
    4 l* H* f- r  m1 C
  13225. ;;; Find the dotted pairs that are valid filters for ssget3 P; h9 y3 Y, l; z, n; P9 X* ~
  13226. ;;; in entity named "ent".
    0 X* ^7 S9 S6 y8 y. e6 r5 i  N+ C$ F
  13227. ;;;
    ( k/ u* m( C' k) o$ ]  z
  13228. ;;; ssx_fe == SSX_Find_Entity* @8 k4 X0 S$ d& V; m' G
  13229. ;;;+ v' q/ b. `! Y6 Q; V# H* m/ y
  13230. (defun ssx_fe (/ x data fltr ent)
    / H2 I/ J/ N( h
  13231.   (if (and (= flexvar 1)(/= t2 "Pick"))! T, }& Q7 F- }2 ]7 o: H5 p
  13232.    (setq ent nil)
    0 n" \: r! u' v1 U1 D& k' t; V3 s
  13233.    (setq ent (car (entsel "\nSelect object/<None>: ")))  I' r* p, |% l( D
  13234.   )
    % t5 [3 Z, k7 U
  13235.   (if ent9 R3 X6 ?/ p4 n( ~7 p
  13236.     (progn0 m$ D, C/ G) H7 N$ G5 @+ K
  13237.       (setq data (entget ent))4 ]" d. w2 u! l3 a) J
  13238.       (foreach x '(0 2 6 7 8 39 62 66 210) ; do not include 38
    ) h) u" @) K# n/ @2 ^) U
  13239.         (if (assoc x data)$ i% j9 F& N8 H) c! }
  13240.           (setq fltr ; y& P, B) ?* l% \" t
  13241.             (cons (assoc x data) fltr)
    ; Y9 J3 [8 e  [* H
  13242.           )
    9 e: H; q" `$ m6 T  p+ ]
  13243.         )  {* ^/ X1 C3 D
  13244.       )   
    $ U) r5 \; Z# _: P: S% [
  13245.       (reverse fltr)
    0 ^/ ]$ {7 N0 R4 U; j8 ~# B
  13246.     )
    % {6 S% D2 S( y2 D
  13247.   )
    . Y9 I- [; ~9 \, T
  13248. )
    # R/ [3 z3 @, `; ^
  13249. ;;;# M8 x: K6 K1 q% P8 P( _
  13250. ;;; Remove "element" from "alist".5 r6 ~7 S/ w" c4 }: }# [
  13251. ;;;( }* Z& x8 a& U. a) o/ p3 N
  13252. ;;; ssx_re == SSX_Remove_Element7 j% g3 p5 x' s" d* V
  13253. ;;;9 f# T* O7 x! |
  13254. (defun ssx_re (element alist)+ {, b8 v9 e6 A# _
  13255.   (append
    / e7 E' d1 g7 }8 ~
  13256.     (reverse (cdr (member element (reverse alist))))2 v. m" w* E# c! I* I) D; x
  13257.     (cdr (member element alist))   
    ! j+ M, R4 v0 x
  13258.   )# T5 o& Z' j) j0 i  e6 \
  13259. )
    / A1 [4 J& e5 u' x5 g9 [
  13260. ;;;
    ) O8 L( Z- k! O: G8 n& Y  s
  13261. ;;; INTERNAL ERROR HANDLER
    / d/ r/ k; ^* O. g8 S/ y2 h
  13262. ;;;- X% W0 \7 k( K$ N. N0 u3 q: W4 L) y
  13263. (defun ssx_er (s)                     ; If an error (such as CTRL-C) occurs
    5 R4 G. v3 o1 c6 f: n* U
  13264.                                       ; while this command is active.../ e/ N! C% B/ g. M/ ]
  13265.   (if (/= s "Function cancelled")- x) }( }$ S+ A  D: s5 y
  13266.     (princ (strcat "\nError: " s))
    7 s" |4 D0 d% \% g
  13267.   )* L) D& w6 x2 [
  13268.   (if olderr (setq *error* olderr))   ; Restore old *error* handler
    * k1 {: G. o0 t* m/ R# O
  13269.   (setq flexvar 0)0 t0 f( I' \% k" b
  13270.   (princ)
    ; Q/ {1 d1 T7 N
  13271. )
    - o* j7 \1 O0 W" r" e! a! I0 a
  13272. ;;;. _  b, E% X- x) s5 I+ [, x( ^
  13273. ;;; Flexicon call routine0 I: V1 d3 a4 W9 ?  ^5 x9 x
  13274. ;;;
    9 q0 w! p# P9 }& r* B
  13275. (defun flexmnu (a)( ~! G$ r7 C( T8 X( c- Q
  13276. (if (= flexvar 1)2 F. Y6 A* v0 ?& O& J
  13277.   (command "FLEXICON" (strcat "FLEX" a))8 F. v0 Z1 f/ I1 e( H) W
  13278. )
    % S6 o1 j, D# p- K8 M. ?0 r
  13279. ), c, H) [+ |+ L* @& J% H0 C. O
  13280. . R& m5 N' G! y) N3 O
  13281. ;;;   
    0 R8 L# z0 t. |
  13282. ;;; Get the filtered sel-set.
    : z; p1 b" ]) A2 M! m
  13283. ;;;; D$ D* `7 A9 F( N( T
  13284. ;;;
    2 ]/ ^8 N: J' w- N. ]
  13285. (defun ssx (/ olderr)
    $ b" k6 a/ V/ l* `. ~4 b
  13286.   (gc)                                ; close any sel-sets            " H' L, i/ x# J# T: V
  13287.   (setq olderr *error*
    5 ^+ {+ a. A* x" o+ R: u- E
  13288.         *error* ssx_er ; `4 Z7 F5 I: P5 y
  13289.   ), m0 ^$ G9 D' M: Q
  13290.   (setq fltr (ssx_fe)) " z& Z, [% L7 K' {& V3 I8 u3 g' e
  13291.   (ssx_gf fltr)
    % {3 L$ v+ X. b
  13292.   (if (= flexvar 1)
    % _' P! l: r3 d6 P7 P7 P
  13293.    (progn
    2 y4 p: e; v: g+ N
  13294.     (prompt "\n \n \nNow select the required EDIT command and (P)revious.")# R$ e( [5 |% h2 }& X" M
  13295.     (flexmnu "EDIT")
    ) J4 I7 j5 d. K: q1 _! s# P
  13296.    )1 I& d0 f6 s/ F
  13297.    (command "p")
    % k1 E, S! C- z' y; J* g9 y0 [
  13298.   )( I2 y) a) q  N. N5 ]6 B) q* o9 w/ n
  13299.   (princ)
    8 G  l& t4 |0 E7 c# t! z9 S4 C
  13300. )
    ! D; ]  O# T; d
  13301. ;;;
    5 p' S# s# O$ ]
  13302. ;;; Build the filter list up by picking, selecting an item to add,
    $ o6 ]+ v; N) q$ X' J0 f
  13303. ;;; or remove an item from the list by selecting it and pressing RETURN.
    6 ?& \, g# E* K3 T5 Q6 D( j" D
  13304. ;;;# I5 u8 B& {1 F5 q
  13305. ;;; ssx_gf == SSX_Get_Filters* F( Q9 e2 i9 y! n. {3 P+ r4 e3 ^
  13306. ;;;9 a: Z! [6 i  Q/ |% q: r6 c
  13307. (defun ssx_gf (f1 / t1 t2 t3 f1 f2)7 f$ k/ ?( H9 |8 L+ I" ?, B+ e+ S% f8 E
  13308.   (while 3 G0 Z2 ]) |% x5 K6 {# N, j
  13309.     (progn
    * A- X# q! N# j$ j6 W9 j+ S, H
  13310.       (flexmnu "SSX")
    " q( y. V; m. m2 G; k5 m5 t7 \
  13311.       (cond (f1 (prompt "\nFilter: ") (prin1 f1)))
    . g% E! m$ G7 ^* Z
  13312.       (initget   X6 |6 E' r; j" {. r
  13313.         "Block Color Entity Flag LAyer LType Pick Style Thickness Vector")
    - q3 a1 v- j% ]5 A
  13314.       (setq t1 (getkword (strcat
    # \, @: H; X9 `' O4 n3 N
  13315.         "\n>>Block name/Color/Entity/Flag/"
    1 F7 s) `3 B$ H' p' n: n
  13316.         "LAyer/LType/Pick/Style/Thickness/Vector: "))) " z9 s8 F$ U+ ~1 c  z3 w! l- v* e" b
  13317.     )* n! L3 \( O" E# b, v- f$ g& _  u2 |
  13318.     (setq t2
    ; Q) P  ^0 o. o. _& \) W8 o" J
  13319.       (cond
    ) D# O2 z4 Z/ i: [
  13320.         ((eq t1 "Block")      2)   ((eq t1 "Color")     62)
    * w; B; {, V; j7 G7 P. m
  13321.         ((eq t1 "Entity")     0)   ((eq t1 "LAyer")      8)6 P, F: l' y5 f
  13322.         ((eq t1 "LType")      6)   ((eq t1 "Style")      7)
    * ]1 m+ o" f% j" i1 H
  13323.         ((eq t1 "Thickness") 39)   ((eq t1 "Flag" )     66)
    ! B/ r0 I7 l) [. W3 ^
  13324.         ((eq t1 "Vector")   210)) l$ A! ~; O+ j) L7 S$ ?) A+ k
  13325.         (T t1)
    7 Y' {& [) k8 w
  13326.       )( B8 s" w" d9 ?- z
  13327.     )% L$ F1 W% e/ E" X" p1 p
  13328.     (setq t3
    " b: N+ Y) E$ R1 p
  13329.       (cond0 I; z8 M5 i: h$ j: a
  13330.         ((= t2  2)' K$ F& o2 O8 r; p
  13331.          (if (= flexvar gtads 1)4 {; a2 ^$ [) `0 }3 Y
  13332.           (progn7 b/ C- G8 L* F/ H7 ]$ v
  13333.            (prompt "\n>>Block name to add/<RETURN to remove>: ")# T" I; F/ w, V/ [, A
  13334.            (gttable "BLOCK")$ @8 i$ d3 k0 I* d4 g' E& p
  13335.           )) Z+ B0 x! U" e+ x- w& ~1 R
  13336.           (getstring "\n>>Block name to add/<RETURN to remove>: ")* |/ q( N" `! g" |* g" k
  13337.          )$ A2 L" N% y4 F* f6 r9 @  S
  13338.         )
    + o$ _+ O$ p- ^
  13339.         ((= t2 62)  (initget 4 "?")" z5 O3 K; A, @
  13340.           (cond$ v9 _" e: k: m$ g; b7 s
  13341.             ((or (eq (setq t3 (getint * z1 g( H. |8 q
  13342.               "\n>>Color number to add/?/<RETURN to remove>: ")) "?") # {& T& H* j+ x% G9 H
  13343.               (> t3 256))
    % M, g4 W: u$ p1 O. D+ v
  13344.               (ssx_pc)                ; Print color values.$ A/ S3 o5 @3 p5 o# C. P4 ^
  13345.               nil
    4 K  C) r* O& o; O5 H# p: l) n
  13346.             )% n+ c% J' d, B
  13347.             (T/ f/ {9 d  K. u6 x' i1 |- u/ x
  13348.               t3                      ; Return t3.
    3 y9 j- |# P. r: P, I/ |
  13349.             )# |& V% \+ I- g/ J; V- ]$ u
  13350.           )4 T9 {" q; s. @8 E
  13351.         )
    3 V$ S9 }; N2 Y
  13352.         ((= t2  0) (getstring "\n>>Entity type to add/<RETURN to remove>: "))2 W6 ?; W. u  X( {0 i2 K0 |8 h
  13353.         ((= t2  8)
    5 H. }& }9 U- \' T
  13354.          (if (= flexvar gtads 1); n5 b, |& x# Y8 r$ _% X& ]. S9 i+ }
  13355.           (progn
    ! b" g# b7 w$ {( ~: @/ e2 y
  13356.            (prompt "\n>>Layer name to add/<RETURN to remove>: ")
    " d/ @2 R6 T( E+ u6 k& I& y6 A1 t/ V
  13357.            (gttable "LAYER")- w) y4 t  Q! P
  13358.           )5 d1 {, K8 r: V
  13359.           (getstring "\n>>Layer name to add/<RETURN to remove>: ")& _8 P  e+ E2 d- ]/ |. t
  13360.          )
    4 \& T, l& v  ?& f* K; U
  13361.         )9 I3 }2 ]* m8 c4 E
  13362.         ((= t2  6)
    3 F3 _" n" v- ]
  13363.          (if (= flexvar gtads 1)
    + [) h8 J: Z/ W. |6 M" {- z
  13364.           (progn! ?$ f4 `  G% Q) Q8 F( p
  13365.            (prompt "\n>>Linetype name to add/<RETURN to remove>: ")9 Y: Y8 M, ?* L- }
  13366.            (gttable "LTYPE")% s3 _& Z. S' z2 a* R/ l" _
  13367.           )
    4 \1 L* Y9 S! _& B+ S9 n! x" M
  13368.          (getstring "\n>>Linetype name to add/<RETURN to remove>: ")
    5 p: x4 e, A* C6 c+ g
  13369.          )4 {0 Q3 P7 B; e4 e; ]* k6 |
  13370.         )
    " O2 R5 D  M2 M/ U" Z% q
  13371.         ((= t2  7) / u3 t  r/ ~" {
  13372.          (if (= flexvar gtads 1); G2 ?9 d: N/ l3 i6 A1 N
  13373.           (progn
    # p6 j1 l: [1 W. c
  13374.            (prompt "\n>>Text style name to add/<RETURN to remove>: ")
    4 K1 v: p9 m: c$ B* s; a
  13375.            (gttable "STYLE")
    6 j) |5 O+ o: x) G$ C
  13376.           )1 J$ f4 j9 L; ?7 B
  13377.           (getstring "\n>>Text style name to add/<RETURN to remove>: ")
    / F( R- ?  ^4 h+ O1 T
  13378.          )0 m8 z, y7 Z# N' S0 c6 \
  13379.         )
    6 u" W6 e1 Y9 N! V0 l
  13380.         ((= t2 39)7 J0 j! d( @) M1 _. Q/ ?
  13381.            (prompt "\n>>Thickness to add/<RETURN to remove>: ")
    ' P0 ]' H: l+ u! O, |- {/ e
  13382.            (if(= flexvar gtads 1)(gtfnum"Thickness to add:")(getreal))
    / x1 ?% e* \9 S1 Z. ^6 \
  13383.         )
    1 w7 |8 P3 ^- j
  13384.         ((= t2 66)  (if (assoc 66 f1) nil 1))
    + L/ s/ K7 |' ^7 l5 ~% X
  13385.         ((= t2 210)
    7 J, K2 s! J; l
  13386.           (getpoint  "\n>>Extrusion Vector to add/<RETURN to remove>: ")5 S8 G  i; R$ l1 H0 L* Y
  13387.         )
    ; ]6 u( D. b1 Y5 ]2 z
  13388.         (T          nil)
    ! f& G3 T$ e8 L- d* F& x
  13389.       )* n1 K! i( h* L2 `
  13390.     )
    & E% U  s' x% w% N
  13391.     (cond
    - o7 v  q! ^( o$ J: L! R: F
  13392.       ((= t2 "Pick") (setq f1 (ssx_fe) t2 nil)) ; get entity1 g5 D6 B! ~' ]
  13393.       ((and f1 (assoc t2 f1))         ; already in the list
    , ^! G2 C1 D- y* P8 h1 D. s
  13394.         (if (and t3 (/= t3 ""))* g$ c# T' M$ W# J
  13395.           ;; Replace with a new value...             4 B8 q3 S# }& x* o. p
  13396.           (setq f1 (subst (cons t2 t3) (assoc t2 f1) f1)) 3 y, C5 m) r' o
  13397.           ;; Remove it from filter list...
    ( a* F3 F8 D' Y2 h. k
  13398.           (setq f1 (ssx_re (assoc t2 f1) f1)) / O9 |' T8 `$ R
  13399.         )  
    0 B4 T) Z+ r" P9 a" i8 i' r
  13400.       )
    0 D# e; ?/ t+ W9 T
  13401.       ((and t3 (/= t3 ""))
    ) r3 y; J/ F7 k, @& P3 h
  13402.         (setq f1 (cons (cons t2 t3) f1))% C, B6 S8 I" K7 R
  13403.       )( l7 y  E' B: D  c( ~
  13404.       (T nil)
      k0 L- X& d5 S6 @0 I
  13405.     ); Q+ w! f9 ]1 f. j+ o0 l) Z
  13406.   )
    0 Y4 a6 N! t$ N2 n' K  m, `
  13407.   (if f1 (setq f2 (ssget "x" f1)))
    + Y, d0 Y, U1 ?' S/ S+ X! [2 [
  13408.   (setq *error* olderr)
    " Y/ p) u1 C, K9 Y( T8 q6 f  f! R
  13409.   (if (and f1 f2) - Q, l' H$ E2 ]/ M9 `3 @( i
  13410.     (progn" U  }& B  e2 b* g8 b/ L
  13411.       (princ (strcat "\n" (itoa (sslength f2)) " found. "))
    9 e) M, |- c* J6 T
  13412.       f2
    ' g0 k# R1 r" N
  13413.     )
      w2 _+ Z& Q0 Z' \
  13414.     (progn (princ "\n0 found.") (prin1))
    * a- y+ N8 Y; r5 P% F9 I8 W: ?5 Q
  13415.   )
    : _  v6 Y6 H) V" s3 e" o: o
  13416. ); M" z7 n; D: R- W) T
  13417. ;;;, X3 {$ K1 A1 a; O
  13418. ;;; Print the standard color assignments.
    ( S; S4 |3 S# a- b
  13419. ;;;4 {) u. A. e1 Y/ z+ c: G2 W
  13420. ;;;
    ! y" S8 M3 J& l5 F* i
  13421. (defun ssx_pc ()6 ~7 H* I( D& p2 w, x
  13422.   (if textpage (textpage) (textscr))  l% g6 g  d/ C
  13423.   (princ "\n                                                     ")* P7 W. N( ]5 R7 k
  13424.   (princ "\n                 Color number   |   Standard meaning ")
    " t9 L3 f0 G. o! f
  13425.   (princ "\n                ________________|____________________")
    : z6 k: G+ p5 p$ u; |
  13426.   (princ "\n                                |                    ")) Z9 b) Y) v. o
  13427.   (princ "\n                       0        |      <BYBLOCK>     ")3 o0 [5 N. h6 P4 x5 D
  13428.   (princ "\n                       1        |      Red           ")- J- c6 E6 B' `3 _8 Y
  13429.   (princ "\n                       2        |      Yellow        ")* f9 x. k' P! V% ^$ X+ N
  13430.   (princ "\n                       3        |      Green         ")
    * \& w1 ~+ K- F
  13431.   (princ "\n                       4        |      Cyan          ")  R2 d* v; T1 |0 V+ i1 G7 m
  13432.   (princ "\n                       5        |      Blue          ")& f! P5 U! @# X
  13433.   (princ "\n                       6        |      Magenta       ")
    8 o; H0 ?8 p2 x* E. O
  13434.   (princ "\n                       7        |      White         ")
    0 J( B4 Z2 x9 U' a2 t
  13435.   (princ "\n                    8...255     |      -Varies-      ")) A! j' }* H$ W* g: c& D3 B
  13436.   (princ "\n                      256       |      <BYLAYER>     ")
    & ]# f" S! v1 ~) }# g% Y
  13437.   (princ "\n                                               \n\n\n")
    / o& A* |# j$ h+ G9 l/ |5 `% a% \4 i" k0 q
  13438. )0 X8 o' C% S# Y. Z" ]
  13439. ;;;5 d. P5 U: B4 h, K" E2 t- L
  13440. ;;; C: function definition.1 G! u7 {% U9 v( b: D& [) J- s
  13441. ;;;
    % \1 ^* p, q) q4 y
  13442. (defun c:ssx () (ssx)(princ)). N  g- e' k% M( s
  13443. (princ "\n\tType \"ssx\" at a Command: prompt or ")& \$ V; ?, H5 t1 z
  13444. (princ "\n\t(ssx) at any object selection prompt. "), ~0 `/ S/ S- ~/ Y( x  `
  13445. (princ)
    5 O+ j; J/ O9 w/ q  p
  13446. & t- J4 }! W  o/ v" E) g2 [. z
  13447. ;;;--------------------------------------------------------------------------;9 ]# x- G, _1 ?; k3 ]: |+ N
  13448. ;;;--------------------------------------------------------------------------;8 s! i- s8 a0 L) c; v
  13449. ;;;--------------------------------------------------------------------------;
    0 C# f" I4 k5 Q6 }, J
  13450. (defun S::STARTUP ()3 o/ r* R2 B$ j1 `
  13451. (setvar "cmdecho" 0)5 n' K6 q5 V5 Z! z. K) }8 ~
  13452. (setvar "cmdecho" 1)3 `2 R4 S4 h3 z. p
  13453. (setvar "LTSCALE" 10)
    0 ?0 i3 d, V" T3 C. Y* R5 c2 D+ B
  13454. $ W# {& H8 F5 J. ?
  13455. ;(command "_load" "chenKH.fas")
    ' H* w+ m+ i# B& n7 {1 z+ A
  13456. ;(command "_load" "ctcot.fas")1 ^0 @; ?, E* U8 }; L
  13457. ;(command "_load" "damdoc.fas")
    * s' K6 w; l' n( V- B, k
  13458. ;(command "_load" "ghichu.fas")+ T+ L( I. m! b$ G" v
  13459. ;(command "_load" "hamtutao.lsp")
    % x- O& A1 v2 ?$ a6 S: L
  13460. ;(command "_load" "KHOITAO.fas"): R/ `; r! A$ |/ D
  13461. ;(command "_load" "KHthep.fas")& Y/ H6 T6 Q$ \* L
  13462. ;(command "_load" "mbmong.dcl")& x7 C$ I& r  L! P
  13463. ;(command "_load" "mbmong.fas")9 S( j! ~6 F" y! W2 U: r, L
  13464. ;(command "_load" "mccot.fas")
    # q) t+ @! r1 J: K2 I' }
  13465. ;(command "_load" "mcdam.fas")' m  D- L% D) {4 W
  13466. ;(command "_load" "mcmong1.dcl")
    6 ^; x% e' L+ Z: n4 J* P/ l; ~
  13467. ;(command "_load" "mcmong1.fas")% {6 x: C' F! r$ o0 c
  13468. ;(command "_load" "mcmong2.dcl")
    : z, d8 I6 z" z. {0 @
  13469. ;(command "_load" "mcmong2.fas")* W1 u: Z6 c# Y
  13470. ;(command "_load" "mcmong3.dcl")' |! [6 B! V. e" A8 a
  13471. ;(command "_load" "mcmong3.fas")
    : [$ b# D4 t7 A! Q/ _8 _: {
  13472. ;(command "_load" "mcsan.fas")
    9 _: m  |( O( t& d
  13473. ;(command "_load" "thepdai.fas")3 `, x% z# N3 r0 p3 l+ r
  13474. ;(command "_load" "thepdoc.fas")3 y+ I$ K6 g& S9 U
  13475. ;(command "_load" "thepmb.fas")
    . t3 z9 [! f" u( z
  13476. ;(command "_load" "thepphbo.fas")
    ; _/ j. e, @7 o; X
  13477. (command "_script" "thongso.scr")3 K5 h7 E+ s7 i* {8 l( b
  13478. ;(command "_load" "thongso1.dcl")' ]  H4 B) r1 e( `  D/ R
  13479. ;(command "_load" "thongso1.fas")
      k  n6 D* P1 B- D+ g3 E
  13480. ;(command "_load" "thongso2.dcl")
    - _5 T. n( J% T# P
  13481. ;(command "_load" "thongso2.fas")9 u! |% F/ e( n
  13482. ;(command "_load" "tietdien.fas")
    - i4 \/ Y/ J3 m, f
  13483. ;(command "_load" "vehan.fas")1 P, v- r) G" c0 w$ V" [
  13484. (command "_load" "phamDuy782006_TKT.lsp")6 F; F6 m% {2 r; u
  13485. (command "_load" "phamduy782006ganhtd.lsp")! b- W& B/ E3 ?) c$ R! z
  13486. (command "_load" "phamduy782006ganhtds.lsp")6 j4 z, I( W+ z) M  Q
  13487. (command "_load" "phamduy782006htd.dcl")+ A9 ~! ?* E$ O, a. U0 P# M
  13488. (princ)
      R7 n3 ?# O' b9 M8 \+ {) a& P
  13489. )5 ~5 H/ {: ~$ H5 v- J

  13490. " E' H+ J, k( p- ~, Q
  13491. ;; Silent load.4 u$ k: b/ u$ V6 ~
  13492. (princ)2 n: H! B2 x6 H. G5 |4 s& U( X

  13493. ; P6 _* u# k$ F( Q3 L5 q
  13494. # b9 W+ F( q! K; c' w+ T7 _3 g
  13495. ;; Silent load for the Express Tools.- c. r; O7 \- a) R( K6 ?; v$ J
  13496. ;; Altering this line will affect Express Tools functionality
    % e; T% o+ d- @# L4 D! \
  13497. (load "acettest.fas" (princ))
    / a) G4 X% o( _2 f. g6 a: w7 j
  13498. �32
Sao chép mã

( O7 l) N' y& [$ g00st Cách Thêm Menu & Lisp Vẽ & Fonts Chữ mở Gõ Chữ Administrator để Gõ; W% H( B1 g" D1 E5 {7 L; O' {2 B; C

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

2025-04-21 Plot.jpg

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

2025-04-21 Text Style.jpg

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

2025-04-21 Layer.jpg

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

2025-04-21 AutoCAD Message.jpg

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

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ề: 26)

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ề: 28)

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

RUN-2000.zip

1.11 MB, Lượt tải về: 3, 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