Info | File | ||
Tác giả: vbao Bài viết gốc: 4297 Tên lệnh: vmc |
lisp vẽ mặt cắt từ bình đồ
| ||
Tác giả: tonglao09 Bài viết gốc: 296671 Tên lệnh: ccd |
Lisp Cộng các số trong Dim thành một công thức
Cái này hay nhưng có thể thêm chức năng xuất kết quả thay cho 1 text có sẵn không bạn? Nếu sửa dc thì cho mình xin lisp đó nhé. Thanks <<
| ||
Tác giả: trungthanh050983 Bài viết gốc: 206829 Tên lệnh: ccd |
Lisp Cộng các số trong Dim thành một công thức
| ||
Tác giả: ngovinh Bài viết gốc: 91980 Tên lệnh: gb |
Tính diện tích vẫn làm em đau đầu
| ||
Tác giả: asu2006 Bài viết gốc: 226007 Tên lệnh: jf pljoinfuzz |
lisp nối đường cong, đường thẳng
| ||
Tác giả: abc_3535 Bài viết gốc: 405274 Tên lệnh: tmu |
xin lisp vẽ thép mũ
| ||
Tác giả: haond83 Bài viết gốc: 137148 Tên lệnh: gd cd |
cắt các đường ghi kích thước
| ||
Tác giả: dunguss3581 Bài viết gốc: 362965 Tên lệnh: erc |
lisp xóa tất cả các đối tượng trong 1 vùng kín
~
| ||
Tác giả: pawuta Bài viết gốc: 378001 Tên lệnh: aob xoa |
Nhờ viết lisp add đối tượng vào block
| ||
Tác giả: jangboko Bài viết gốc: 415415 Tên lệnh: cd |
Nhờ Sửa Lisp Chon Nhanh Tất Cả Dim Và Leader
cám ơn bác,... >>
cám ơn bác, nhanh và đơn giản quá nhỉ. <<
| ||
Tác giả: anhbkhcm Bài viết gốc: 226113 Tên lệnh: mtl |
Lisp tạo viewport từ khung chọn bên model.
| ||
Tác giả: dovananh.xd Bài viết gốc: 183299 Tên lệnh: dm |
Lisp thay đổi màu layer
| ||
Tác giả: Luxury037 Bài viết gốc: 186642 Tên lệnh: banb troy |
Các bạn muốn chơi game trên Cad thì vào đây
Hihi ! Em mới kiếm đc cái game trên Autocad ! Mời các bác giải trí nhé : Lệnh: Banb
;------------------------------------------------------------------------------- ------------------------------------------------------------------------------- (defun c:banb () (c:troy)) (defun c:Troy (/ Colors$ Loop Option$ Settings$) (initget "Intro Clear Settings Play") (if (not (setq Option$ (getkword "\nTroy options :... Hihi ! Em mới kiếm đc cái game trên Autocad ! Mời các bác giải trí nhé : Lệnh: Banb
;------------------------------------------------------------------------------- ------------------------------------------------------------------------------- (defun c:banb () (c:troy)) (defun c:Troy (/ Colors$ Loop Option$ Settings$) (initget "Intro Clear Settings Play") (if (not (setq Option$ (getkword "\nTroy options : "))) (setq Option$ "Play") );if (cond ((= Option$ "Clear")(TroyClear)(princ "\nTroy objects Cleared.")) ((= Option$ "Settings") (initget "Troys Speed Colors Defaults") (if (not (setq Settings$ (getkword "\nSettings : "))) (setq Settings$ "Defaults") );if (cond ((= Settings$ "Troys") (setq Loop t) (while Loop (if (not (setq *MinTroys#* (getint "\nMinimum number of Troys <5>: "))) (setq *MinTroys#* 5) );if (if (not (setq *MaxTroys#* (getint "\nMaximum number of Troys <10>: "))) (setq *MaxTroys#* 10) );if (if (or (< *MinTroys#* 1) (<= *MaxTroys#* *MinTroys#*)) (princ "\nThe maximum number must be greater than the minimum number,\nand the minimum number must be greater than 0.") (setq Loop nil) );if );while (if (> *MaxTroys#* 20) (princ "\nIncreasing the maximum number of Troys may slow down the game.") );if );case ((= Settings$ "Speed") (setq Loop t) (while Loop (if (not (setq *TroySpeed~* (getreal "\nAdjust speed of Troys\nEnter a number between 0.5 and 5.0 <1.0>: "))) (setq *TroySpeed~* 1.0) );if (if (or (< *TroySpeed~* 0.5)(> *TroySpeed~* 5.0)) (princ "\nThe number must in the range of 0.5 to 5.0.\nThe larger the number the faster the Troys move.") (setq Loop nil) );if );while );case ((= Settings$ "Colors") (initget "Bright Dim Ghost") (if (not (setq Colors$ (getkword "\nColor Scheme : "))) (setq Colors$ "Bright") );if (setq *ColorScheme#* (cond ((= Colors$ "Bright") 1) ((= Colors$ "Dim") 2) ((= Colors$ "Ghost") 3) );cond );setq );case ((= Settings$ "Defaults") (setq *MinTroys#* 5 *MaxTroys#* 10 *TroySpeed~* 1.0 *ColorScheme#* 1) );case );cond (c:Troy) );case (t (Troy Option$)) );if (princ) );defun c:Troy ;------------------------------------------------------------------------------- ; Troy - Troy main function ;------------------------------------------------------------------------------- (defun Troy (Option$ / AddArray: Ang~ AxisPt BuildShip: CenPt ChangeArray: CirAng~ CirEnt^ CirLimits~ CirPt1 CirPt2 Color1 Color1_5 Color2 Color3 Color4 Color5 Color6 Color7 Color8 Cnt# Code# Counter# CreateArray: Dia1~ Dia2~ Direction# Dist~ Ent^ Ent1^ Ent2^ Flame$ Flame^ FlameArray@ HalfStep~ Inc# Inc1~ Inc2~ Increase~ Item Limit# Loop MainEnt^ MainList@ MainNum# NorthEast NorthWest Nth# Nths@ Num# NumSteps# Offset~ OldDirection# Option$ Passed Pnts# Points# Previous@ Pt Pt1 Pt2 Pt3 Pt4 Pt5 Pt6 Pt7 Pt8 Pt9 Pt10 Pt11 Pt12 Radius~ Read@ Refresh: Rotate~ ShipName$ SouthEast SouthWest SS& StepDist~ SubList@ TextEnt^ Total# TroyArray@ Unit~ Value ViewExtents@ ViewSize~ Xmin~ Xmax~ Ymin~ Ymax~) ;----------------------------------------------------------------------------- ; AddArray: - Add new Troy entity specs to the TroyArray@ list ; Arguments: 1 ; StartPt = Specify starting point or nil ; Returns: A list of a new random Troy specs to be added to TroyArray@ list ;----------------------------------------------------------------------------- (defun AddArray: (StartPt / Ang~ Num#) (if StartPt (setq CirPt1 StartPt) (setq CirPt1 (polar CenPt (* (GetRnd 6283) 0.001) CirLimits~)) );if (setq Num# (GetRnd 8)) (setq StepDist~;Determines Troys Speed (cond; Points Dia Units ((= Num# 0)(* Unit~ 0.100 *TroySpeed~*));50 2.0 ((= Num# 1)(* Unit~ 0.125 *TroySpeed~*));75 2.5 ((= Num# 2)(* Unit~ 0.150 *TroySpeed~*));100 3.0 ((= Num# 3)(* Unit~ 0.175 *TroySpeed~*));125 3.5 ((= Num# 4)(* Unit~ 0.200 *TroySpeed~*));150 4.0 ((= Num# 5)(* Unit~ 0.225 *TroySpeed~*));175 4.5 ((= Num# 6)(* Unit~ 0.250 *TroySpeed~*));200 5.0 ((= Num# 7)(* Unit~ 0.275 *TroySpeed~*));225 5.5 ((= Num# 8)(* Unit~ 0.300 *TroySpeed~*));250 6.0 );cond );setq (setq HalfStep~ (/ StepDist~ 2.0)) (setq Points# (+ (* Num# 25) 50));50 to 250 (setq Radius~ (/ (* Unit~ (* 0.1 (+ (+ (* Num# 5) 10) 10))) 2.0)) (command "_CIRCLE" CirPt1 Radius~) (setq Ent1^ (entlast)) (command "_CHPROP" Ent1^ "" "_C" Color8 "") (command "_HATCH" "AR-CONC" (* (getvar "VIEWSIZE") 0.0045) "" Ent1^ "") (setq Ent2^ (entlast)) (command "_CHPROP" Ent2^ "" "_C" Color8 "") (command "_-GROUP" "_C" (UniqueName) "" Ent1^ Ent2^ "") (setq CirEnt^ (entlast)) (setq CirAng~ (+ (- (angle CirPt1 CenPt) (dtr 30)) (* (GetRnd 1047) 0.001))) (setq CirPt2 (polar CirPt1 CirAng~ StepDist~)) (setq Offset~ (+ (* Radius~ 2)(* Radius~ (GetRnd 10)))) (setq Ang~ (atan (/ HalfStep~ Offset~))) (setq Pt (polar CirPt1 CirAng~ HalfStep~)) (if (< CirAng~ (angle CirPt1 CenPt)) (setq AxisPt (polar Pt (+ CirAng~ (dtr 90)) Offset~) Direction# 1) (setq AxisPt (polar Pt (- CirAng~ (dtr 90)) Offset~) Direction# -1) );if (setq NumSteps# (+ (GetRnd 10) 2)) (list CirEnt^ CirPt1 CirPt2 AxisPt Radius~ Direction# NumSteps# Points#) );defun AddArray: ;----------------------------------------------------------------------------- ; ChangeArray: - Change or Move entity in the TroyArray@ list ; Arguments: 1 ; List@ = A sublist within the TroyArray@ list ; Returns: Changes or Moves Troy entities in the TroyArray@ list ;----------------------------------------------------------------------------- (defun ChangeArray: (List@ / Ang~ Num#) (setq CirEnt^ (nth 0 List@) CirPt1 (nth 1 List@) CirPt2 (nth 2 List@) AxisPt (nth 3 List@) Radius~ (nth 4 List@) Direction# (nth 5 List@) NumSteps# (nth 6 List@) Points# (nth 7 List@) StepDist~ (distance CirPt1 CirPt2) HalfStep~ (/ StepDist~ 2.0) Ang~ (- (* pi 0.5)(acos (/ HalfStep~ (distance AxisPt CirPt2)))) );setq (command "_MOVE" CirEnt^ "" CirPt1 CirPt2) (setq NumSteps# (1- NumSteps#)) (if (= NumSteps# 0) (progn (setq NumSteps# (+ (GetRnd 10) 2)) (setq OldDirection# Direction#) (setq Num# (GetRnd 10)) (if (> Num# 5) (setq Direction# 1);ccw (setq Direction# -1);cw );if (setq Offset~ (+ (* Radius~ 2)(* Radius~ (GetRnd 10)))) (if (= OldDirection# 1);ccw (if (= Direction# 1);ccw (setq AxisPt (polar CirPt2 (angle CirPt2 AxisPt) Offset~)) (setq AxisPt (polar CirPt2 (angle AxisPt CirPt2) Offset~)) );if (if (= Direction# -1);cw (setq AxisPt (polar CirPt2 (angle CirPt2 AxisPt) Offset~)) (setq AxisPt (polar CirPt2 (angle AxisPt CirPt2) Offset~)) );if );if (setq Ang~ (- (* pi 0.5)(acos (/ HalfStep~ Offset~)))) (if (= Direction# 1);ccw (setq Pt (polar AxisPt (+ (angle AxisPt CirPt2) (* Ang~ 2)) (distance AxisPt CirPt2))) (setq Pt (polar AxisPt (- (angle AxisPt CirPt2) (* Ang~ 2)) (distance AxisPt CirPt2))) );if (setq CirPt1 CirPt2 CirPt2 Pt) );progn (if (= Direction# 1);ccw (progn (setq Pt (polar AxisPt (+ (angle AxisPt CirPt2) (* Ang~ 2)) (distance AxisPt CirPt2))) (setq CirPt1 CirPt2 CirPt2 Pt) );progn (progn (setq Pt (polar AxisPt (- (angle AxisPt CirPt2) (* Ang~ 2)) (distance AxisPt CirPt2))) (setq CirPt1 CirPt2 CirPt2 Pt) );progn );if );if ;(command "LINE" AxisPt CirPt1 ""); Uncomment to see Troys paths while debuging ;If you're tweaking or debugging this code, you've got to uncommend the above line ;at least once to see these patterns. Run Troy in the Intro or Play mode for about ;10 seconds then press the escape key to abruptly abort the game. Then turn off ;all layers except for the Troy layer, and do a zoom extents and print it. (list CirEnt^ CirPt1 CirPt2 AxisPt Radius~ Direction# NumSteps# Points#) );defun ChangeArray: ;----------------------------------------------------------------------------- ; CreateArray: - Creates the initial TroyArray@ list ; Arguments: 1 ; TowardCenter = 1 for toward center, else away from center ; Returns: Creates the initial TroyArray@ list moving in direction specified. ;----------------------------------------------------------------------------- (defun CreateArray: (TowardCenter) (setq TroyArray@ nil) (if (= TowardCenter 1) (progn (setq Rotate~ (* (GetRnd 6283) 0.001)) (repeat 10 (setq TroyArray@ (append TroyArray@ (list (AddArray: (polar CenPt Rotate~ CirLimits~))))) (setq Rotate~ (+ Rotate~ (/ pi 5.0))) );repeat );progn (progn (setq Rotate~ (* (GetRnd 6283) 0.001) Dist~ (/ (distance NorthWest NorthEast) 7) Increase~ (/ (* Dist~ 3) 20.0) );setq (repeat 10 (setq Pt (polar CenPt Rotate~ Dist~)) (setq List@ (AddArray: Pt)) (setq List@ (Switch_nth 1 2 List@)) (setq List@ (Change_nth 5 (* (nth 5 List@) -1) List@)) (setq TroyArray@ (append TroyArray@ (list List@))) (setq Rotate~ (+ Rotate~ 0.897 (* (GetRnd 359) 0.001)) Dist~ (+ Dist~ Increase~) );setq );repeat );progn );if );defun CreateArray: ;----------------------------------------------------------------------------- ; BuildShip: - Draws Ships ; Arguments: 2 ; Num# = The number of ship created in the function BuildShip: ; InsPt = Insertion base point of the ship ; Returns: Draws and makes a block of ship at the insertion point specified. ; Also creates the variables MainEnt^ and MainList@ of the ships specs. ;----------------------------------------------------------------------------- (defun BuildShip: (Num# InsPt / SS&) (if (not (member Num# (list 0 1 2 3)))(setq Num# 1)) (cond ((= Num# 0);Red Ship in Intro (setq Pt1 (polar InsPt (dtr 90) (* Unit~ 0.5)) Pt1 (polar Pt1 pi (* Unit~ 0.875)) Pt2 (polar Pt1 pi (* Unit~ 0.375)) Pt2 (polar Pt2 (dtr 270) (* Unit~ 0.125)) Pt3 (polar Pt2 pi (* Unit~ 0.25)) Pt3 (polar Pt3 (dtr 270) (* Unit~ 0.125)) Pt4 (polar Pt3 (dtr 270) (* Unit~ 0.75)) Pt4 (polar Pt4 0 (* Unit~ 0.5)) Pt5 (polar Pt4 0 (* Unit~ 1.25)) Pt5 (polar Pt5 (dtr 270) (* Unit~ 0.5)) Pt6 (polar InsPt 0 (* Unit~ 2.5)) Pt7 (polar Pt6 (dtr 90) (* Unit~ 0.5)) Pt7 (polar Pt7 pi Unit~) Pt8 (polar Pt7 pi (* Unit~ 0.5)) Pt8 (polar Pt8 (dtr 90) (* Unit~ 0.125)) Pt9 (polar Pt3 0 (* Unit~ 0.5)) Pt10 (polar InsPt (dtr 270) (* Unit~ 0.25)) Pt11 (polar Pt9 0 (* Unit~ 2.25)) Pt12 (polar InsPt (dtr 90) Unit~) );setq (setq SS& (ssadd)) (command "_COLOR" Color1);Red (command "_ARC" Pt1 Pt2 Pt3)(ssadd (entlast) SS&) (command "_ARC" Pt3 Pt4 Pt5)(ssadd (entlast) SS&) (command "_ARC" "" Pt6)(ssadd (entlast) SS&) (command "_ARC" Pt6 Pt7 Pt8)(ssadd (entlast) SS&) (command "_COLOR" Color4);Cyan (command "_ARC" Pt9 Pt10 Pt11)(ssadd (entlast) SS&) (command "_ARC" Pt11 Pt12 Pt9)(ssadd (entlast) SS&) (command "_COLOR" "_BYLAYER") (setq ShipName$ (UniqueName)) (command "_BLOCK" ShipName$ InsPt SS& "") (command "_INSERT" ShipName$ InsPt 1 1 0) (setq MainEnt^ (entlast)) (setq MainList@ (entget MainEnt^)) );case ((= Num# 1);Green Ship (setq Pt (polar InsPt pi Unit~) Pt (polar Pt (dtr 90) (* Unit~ 0.5))) (command "_PLINE" Pt (polar Pt (dtr 270) Unit~) (polar InsPt 0 (* Unit~ 2)) "_C") (command "_CHPROP" "_L" "" "_C" Color3 "");Green (setq ShipName$ (UniqueName)) (command "_BLOCK" ShipName$ InsPt "_L" "") (command "_INSERT" ShipName$ InsPt 1 1 0) (setq MainEnt^ (entlast)) (setq MainList@ (entget MainEnt^)) );case ((= Num# 2);Cyan Ship (setq Pt (polar InsPt pi Unit~) Pt1 (polar Pt (dtr 270) Unit~) Pt4 (polar Pt1 (dtr 90) (* Unit~ 2)) Pt (polar InsPt 0 Unit~) Pt2 (polar Pt (dtr 270) (* Unit~ 0.5)) Pt3 (polar Pt2 (dtr 90) Unit~) );setq (command "_PLINE" (polar InsPt pi (* Unit~ 0.5)) Pt1 (polar InsPt (dtr 270) (* Unit~ 0.5)) Pt2 (polar InsPt 0 (* Unit~ 2)) Pt3 (polar InsPt (dtr 90) (* Unit~ 0.5)) Pt4 "_C" );command (command "_CHPROP" "_L" "" "_C" Color4 "");Cyan (setq ShipName$ (UniqueName)) (command "_BLOCK" ShipName$ InsPt "_L" "") (command "_INSERT" ShipName$ InsPt 1 1 0) (setq MainEnt^ (entlast)) (setq MainList@ (entget MainEnt^)) );case ((= Num# 3);Magenta Ship (setq Pt (polar InsPt pi Unit~) Pt1 (polar Pt (dtr 270) (* Unit~ 0.5)) Pt4 (polar Pt1 (dtr 90) Unit~) Pt2 (polar Pt1 0 (* Unit~ 1.5)) Pt3 (polar Pt4 0 (* Unit~ 1.5)) );setq (command "_PLINE" InsPt Pt1 (polar InsPt (dtr 270) Unit~) Pt2 (polar InsPt 0 (* Unit~ 2)) Pt3 (polar InsPt (dtr 90) Unit~) Pt4 "_C" );command (command "_CHPROP" "_L" "" "_C" Color6 "");Magenta (setq ShipName$ (UniqueName)) (command "_BLOCK" ShipName$ InsPt "_L" "") (command "_INSERT" ShipName$ InsPt 1 1 0) (setq MainEnt^ (entlast)) (setq MainList@ (entget MainEnt^)) );case );cond (princ) );defun BuildShip: ;----------------------------------------------------------------------------- ; Refresh: - Erases Troy entities and creates a new TroyArray@ list ;----------------------------------------------------------------------------- (defun Refresh: () (setq SS& (ssget "_x" (list '(8 . "Troy")))) (command "_ERASE" SS& "") (setq FlameArray@ nil TroyArray@ nil Counter# 0 MainNum# (1+ MainNum#)) (CreateArray: (GetRnd 1)) (princ) );defun Refresh: ;============================================================================= ; Start of Main Function ;============================================================================= (if (not *MinTroys#*) (setq *MinTroys#* 5)) (if (not *MaxTroys#*) (setq *MaxTroys#* 10)) (if (not *TroySpeed~*) (setq *TroySpeed~* 1.0)) (if (not *ColorScheme#*) (setq *ColorScheme#* 1)) (if (not *Speed#) (Speed)) (if (not *Clayer$*) (setq *Clayer$* (getvar "CLAYER"))) (if (not *Osmode#*) (setq *Osmode#* (getvar "OSMODE"))) (if (not *TextStyle$*) (setq *TextStyle$* (getvar "TEXTSTYLE"))) (if (not *TextSize~*) (setq *TextSize~* (getvar "TEXTSIZE"))) (setvar "BLIPMODE" 0)(setvar "CMDECHO" 0) (setvar "OSMODE" 0)(setvar "GRIDMODE" 0)(graphscr) (if (>= (atoi (getvar "ACADVER")) 15) (progn (if (not *CTab$*) (setq *CTab$* (getvar "CTAB"))) (if (/= (getvar "CTAB") "Model") (progn (command "_PSPACE") (if (setq SS& (ssget "_x" (list '(-4 . "<AND")'(0 . "VIEWPORT")(cons 410 (getvar "CTAB"))'(-4 . "AND>")))) (if (> (sslength SS&) 1) (command "_LAYOUT" "_S" "Model") );if );if );progn );if (setq *TroyTab$* (getvar "CTAB")) );progn );if (if (tblsearch "LAYER" "Troy") (command "_LAYER" "_T" "Troy" "_U" "Troy" "_ON" "Troy" "_M" "Troy" "") (command "_LAYER" "_M" "Troy" "") );if (if (setq SS& (ssget "_x" (list '(8 . "Troy")))) (command "_ERASE" SS& "") );if (setq ViewExtents@ (ViewExtents)) (command "_ZOOM" "_W" (car ViewExtents@)(cadr ViewExtents@)) (setq Xmin~ (car (nth 0 ViewExtents@)) Ymax~ (cadr (nth 0 ViewExtents@)) Xmax~ (car (nth 1 ViewExtents@)) Ymin~ (cadr (nth 1 ViewExtents@)) NorthWest (car ViewExtents@) SouthEast (cadr ViewExtents@) SouthWest (list Xmin~ Ymin~) NorthEast (list Xmax~ Ymax~) CenPt (getvar "VIEWCTR") ViewSize~ (getvar "VIEWSIZE") Unit~ (/ (getvar "VIEWSIZE") 50.0) Limit# (1+ (fix (/ (distance CenPt (car ViewExtents@)) Unit~))) CirLimits~ (* (+ Limit# 3) Unit~) North (polar CenPt (dtr 90) (+ (* Unit~ 3) (/ (getvar "VIEWSIZE") 2.0))) South (polar CenPt (dtr 270) (+ (* Unit~ 3) (/ (getvar "VIEWSIZE") 2.0))) East (polar CenPt 0 (+ (* Unit~ 3) (/ (distance NorthWest NorthEast) 2.0))) West (polar CenPt pi (+ (* Unit~ 3) (/ (distance NorthWest NorthEast) 2.0))) );setq ; Customize Color Schemes as desired and add to top menu in c:Troy (cond ((= *ColorScheme#* 1); Bright colors (setq Color1 1 ;Red Red ship Color1_5 30 ;Orange Exploding Troys Color2 2 ;Yellow Bonus points Color3 3 ;Green 1st ship Color4 4 ;Cyan 2nd ship Color5 5 ;Blue Letter O in TroyIntro Color6 6 ;Magenta 3rd ship Color7 7 ;White Not used Color8 33 ;Grey Troys );setq );case ((= *ColorScheme#* 2); Dim colors (setq Color1 12 ;Red Red ship Color1_5 32 ;Orange Exploding Troys Color2 52 ;Yellow Bonus points Color3 86 ;Green 1st ship Color4 152 ;Cyan 2nd ship Color5 162 ;Blue Letter O in TroyIntro Color6 192 ;Magenta 3rd ship Color7 7 ;White Not used Color8 250 ;Grey Troys );setq );case ((= *ColorScheme#* 3); Ghost colors (setq Color1 250 ;Red Red ship Color1_5 250 ;Orange Exploding Troys Color2 250 ;Yellow Bonus points Color3 250 ;Green 1st ship Color4 250 ;Cyan 2nd ship Color5 250 ;Blue Letter O in TroyIntro Color6 250 ;Magenta 3rd ship Color7 250 ;White Not used Color8 250 ;Grey Troys );setq );case );cond ; Create Flame$ block (setq SS& (ssadd))(setq Pt SouthEast) (command "_COLOR" Color2);Yellow (command "_LINE" Pt (setq Pt (polar Pt 0 Unit~)) "")(ssadd (entlast) SS&) (command "_COLOR" Color1);Red (command "_LINE" Pt (setq Pt (polar Pt 0 Unit~)) "")(ssadd (entlast) SS&) (command "_COLOR" "_BYLAYER")(setq Flame$ (UniqueName)) (command "_BLOCK" Flame$ SouthEast SS& "") (if (= Option$ "Intro")(TroyIntro)) ;(command "RECTANG" (car ViewExtents@)(cadr ViewExtents@)); Uncomment while debuging ;(command "CIRCLE" CenPt CirLimits~); Uncomment while debuging ; Build Ship 1 (BuildShip: 1 CenPt) ; Create first Troys (CreateArray: (GetRnd 1)) (command "_STYLE" "Troy" "ROMANS" "0.0" "0.75" "" "" "" "") ;----------------------------------------------------------------------------- ; Start of grread Loop ;----------------------------------------------------------------------------- (setq Loop t Counter# 0 Total# 100 MainNum# 1) (setq Previous@ (list 5 (polar CenPt 0 Unit~)));Start the Loop moving (princ (strcat "\nCommand:\nTotal: " (itoa Total#) "\n")) (while Loop ; Read the mouse movements and picks (if (not (setq Read@ (grread t 8))) (setq Read@ Previous@) );if (setq Code# (nth 0 Read@)) (setq Value (nth 1 Read@)) (cond ((= Code# 3); Fire if picked (setq Ang~ (angle CenPt Value) Pt1 (polar CenPt Ang~ (* Unit~ 2)) Pt2 (polar Pt1 Ang~ Unit~) );setq (command "_INSERT" Flame$ Pt1 1 1 (rtd Ang~)) (setq FlameArray@ (append FlameArray@ (list (list (entlast) Pt1 Pt2 Ang~)))) (setq Total# (1- Total#)) (princ (strcat "\nCommand:\nTotal: " (itoa Total#) "\n")) );case ((= Code# 5); Rotate if moved (setq Previous@ Read@) (setq Ang~ (angle CenPt Value)) (setq MainList@ (entmod (subst (cons 50 Ang~) (assoc 50 MainList@) MainList@))) );case ((= Code# 2); Key was pressed (cond ((or (= Value 80)(= Value 112));P or p then pause (getpoint "\nTroy paused. Pick mouse to continue. ") (princ (strcat "\nCommand:\nTotal: " (itoa Total#) "\n")) );case ((or (= Value 81)(= Value 113));Q or q then quit (setq Loop nil) );case (t (princ "\nMove mouse to rotate ship, pick mouse to fire, press P to Pause, or Q to quit.") (princ (strcat "\nTotal: " (itoa Total#) "\n")) );case );case );case );cond ; Move flame objects (if FlameArray@ (progn (setq Cnt# 0 Nths@ nil) (foreach List@ FlameArray@ (setq Flame^ (nth 0 List@) Pt1 (nth 1 List@) Pt2 (nth 2 List@) Ang~ (nth 3 List@) );setq (if (or (and (> (car Pt2)(car East))(> (car Pt2)(car Pt1))) (and (< (car Pt2)(car West))(< (car Pt2)(car Pt1))) (and (> (cadr Pt2)(cadr North))(> (cadr Pt2)(cadr Pt1))) (and (< (cadr Pt2)(cadr South))(< (cadr Pt2)(cadr Pt1))) );or (progn (command "_ERASE" Flame^ "") (setq Nths@ (append Nths@ (list Cnt#))) );progn (progn (command "_MOVE" Flame^ "" Pt1 Pt2) (setq Pt1 Pt2 Pt2 (polar Pt2 Ang~ Unit~)) (setq List@ (list Flame^ Pt1 Pt2 Ang~)) (setq FlameArray@ (Change_nth Cnt# List@ FlameArray@)) );progn );if (setq Cnt# (1+ Cnt#)) );foreach (if Nths@ (setq FlameArray@ (Remove_nths Nths@ FlameArray@)) );if );progn );if ; Check if Troys are hit (setq Cnt# 0 Nths@ nil) (foreach List@ TroyArray@ ; Troy list (if FlameArray@ ; Flame list (progn (setq CirEnt^ (nth 0 List@) CirPt1 (nth 1 List@) Radius~ (nth 4 List@) Points# (nth 7 List@) );setq (setq Num# 0 Num@ nil) (foreach SubList@ FlameArray@ (setq Flame^ (nth 0 SubList@) Pt2 (nth 2 SubList@) );setq (if (and (> (car Pt2) (+ Xmin~ Radius~))(< (car Pt2) (- Xmax~ Radius~)) (> (cadr Pt2) (+ Ymin~ Radius~))(< (cadr Pt2) (- Ymax~ Radius~))) (if (<= (distance Pt2 CirPt1) Radius~) (progn (command "_ERASE" CirEnt^ Flame^ "") (setq Num@ (append Num@ (list Num#))) (setq Nths@ (append Nths@ (list Cnt#))) (command "_TEXT" "_M" CirPt1 Unit~ 0 (itoa Points#)) (command "_CHPROP" "_L" "" "_C" Color2 "") (setq TextEnt^ (entlast)) (setq Total# (+ Total# Points#)) (princ (strcat "\nCommand:\nTotal: " (itoa Total#) "\n")) (command "_COLOR" Color1_5) (setq Dia1~ (* Radius~ 2) Dia2~ (* Radius~ 3) Ang~ (dtr 270) Pnts# 7) (repeat 3 (StarBurst CirPt1 Dia1~ Dia2~ Pnts# Ang~)(delay 0.125) (setq Dia2~ (* Radius~ 3.5) Ang~ (+ Ang~ (/ (* pi 2) (* Pnts# 3)))) (command "_ERASE" (entlast) "") (StarBurst CirPt1 Dia1~ Dia2~ Pnts# Ang~)(delay 0.125) (setq Dia2~ (* Radius~ 3) Ang~ (dtr 90)) (command "_ERASE" (entlast) "") (StarBurst CirPt1 Dia1~ Dia2~ Pnts# Ang~)(delay 0.125) (setq Dia2~ (* Radius~ 3.5) Ang~ (- Ang~ (/ (* pi 2) (* Pnts# 3)))) (command "_ERASE" (entlast) "") (StarBurst CirPt1 Dia1~ Dia2~ Pnts# Ang~)(delay 0.125) (setq Dia2~ (* Radius~ 3) Ang~ (dtr 270)) (command "_ERASE" (entlast) "") (StarBurst CirPt1 Dia1~ Dia2~ Pnts# Ang~)(delay 0.125) (setq Dia2~ (* Radius~ 3.5) Ang~ (- Ang~ (/ (* pi 2) (* Pnts# 3)))) (command "_ERASE" (entlast) "") (StarBurst CirPt1 Dia1~ Dia2~ Pnts# Ang~)(delay 0.125) (setq Dia2~ (* Radius~ 3) Ang~ (dtr 90)) (command "_ERASE" (entlast) "") (StarBurst CirPt1 Dia1~ Dia2~ Pnts# Ang~)(delay 0.125) (setq Dia2~ (* Radius~ 3.5) Ang~ (+ Ang~ (/ (* pi 2) (* Pnts# 3)))) (command "_ERASE" (entlast) "") (StarBurst CirPt1 Dia1~ Dia2~ Pnts# Ang~)(delay 0.125) (setq Dia2~ (* Radius~ 3) Ang~ (dtr 270)) (command "_ERASE" (entlast) "") );repeat (command "_COLOR" "_BYLAYER") (command "_ERASE" TextEnt^"") );progn );if );if (setq Num# (1+ Num#)) );foreach (if Num@ (setq FlameArray@ (Remove_nths Num@ FlameArray@)) );if );progn );if (if TroyArray@ (setq TroyArray@ (Change_nth Cnt# (ChangeArray: List@) TroyArray@)) (CreateArray: 1) );if (setq Cnt# (1+ Cnt#)) );foreach (if Nths@ (setq TroyArray@ (Remove_nths Nths@ TroyArray@)) );if (if (not TroyArray@) (CreateArray: 1) );if ; Erase Troys that are out of limits (setq Cnt# 0) (foreach List@ TroyArray@ (setq CirEnt^ (nth 0 List@) CirPt1 (nth 1 List@) CirPt2 (nth 2 List@) );setq (if (or (and (> (car CirPt1)(car East))(> (car CirPt2)(car CirPt1))) (and (< (car CirPt1)(car West))(< (car CirPt2)(car CirPt1))) (and (> (cadr CirPt1)(cadr North))(> (cadr CirPt2)(cadr CirPt1))) (and (< (cadr CirPt1)(cadr South))(< (cadr CirPt2)(cadr CirPt1))) );or (progn (command "_ERASE" CirEnt^ "") (setq TroyArray@ (Change_nth Cnt# (AddArray: nil) TroyArray@)) (setq Counter# (1+ Counter#)) (if (= Counter# 3);Add Troys per Counter# (progn (setq Counter# 0) (if (< (length TroyArray@) *MaxTroys#*) (setq TroyArray@ (append TroyArray@ (list (AddArray: nil)))) );if );progn );if );progn );if (setq Cnt# (1+ Cnt#)) );foreach ; Check if Troys ran into Ship or total points is <= 0 (setq Cnt# 0 Passed t) (while Passed (setq List@ (nth Cnt# TroyArray@) CirEnt^ (nth 0 List@) CirPt1 (nth 1 List@) Radius~ (nth 4 List@) );setq (if (or (< (distance CenPt CirPt1) (+ Radius~ (* Unit~ 2.5))) (<= Total# 0)) (progn (command "_ERASE" MainEnt^ "") (cond ((= MainNum# 1)(setq Color# Color3));Green ((= MainNum# 2)(setq Color# Color4));Cyan ((= MainNum# 3)(setq Color# Color6));Magenta );cond (command "_COLOR" Color#) (setq Dia1~ 1 Dia2~ 4 Ang~ (dtr 270) Inc# 0 Inc1~ 0.125 Inc2~ 0.375) (repeat 20 (if (= Inc# 11)(setq Inc1~ -0.125 Inc2~ -0.375)) (StarBurst CenPt (* Unit~ Dia1~) (* Unit~ Dia2~) 5 Ang~)(delay 0.5) (setq Dia1~ (+ Dia1~ Inc1~) Dia2~ (+ Dia2~ Inc2~)) (setq Ang~ (+ Ang~ (/ (* pi 2) 3))) (command "_ERASE" (entlast) "") (setq Inc# (1+ Inc#)) );repeat (command "_COLOR" "_BYLAYER") (setq Total# (- Total# 10)) (if (<= Total# 0) (progn (setq MainNum# 3) (princ "\nCommand:\nTotal: 0") );progn (princ (strcat "\nCommand:\nTotal: " (itoa Total#) "\n")) );if (cond ((= MainNum# 1); Build Ship 2 (Refresh:) (BuildShip: 2 CenPt) );case ((= MainNum# 2); Build Ship 3 (Refresh:) (BuildShip: 3 CenPt) );case ((= MainNum# 3); Finished! (setq Passed nil Loop nil) );case );cond (setq Passed nil) );progn );if (setq Cnt# (1+ Cnt#)) (if (> Cnt# (1- (length TroyArray@))) (setq Passed nil) );if );while (if (< (length TroyArray@) *MinTroys#*) (setq TroyArray@ (append TroyArray@ (list (AddArray: nil)))) );if (if (or (/= (getvar "VIEWCTR") CenPt)(/= (getvar "VIEWSIZE") ViewSize~)) (command "_ZOOM" "_W" (car ViewExtents@)(cadr ViewExtents@)) );if );while (TroyClear) (princ (strcat "\nCommand:\nTotal: " (itoa Total#) " Finished!")) (princ) );defun Troy ;------------------------------------------------------------------------------- ; TroyIntro - Introduction ;------------------------------------------------------------------------------- (defun TroyIntro (/ Color# Divisions# Fire# Fourth# Inc~ Increase~ Ltr# Move# O-Ang~ O-Cnt# O-Ent^ O-Ins O-List@ O-Pt O-Pts@ O-Size~ Path# Path@ Path1@ Path2@ Path3@ Path4@ R-Ang~ R-Cen R-Cnt# R-Ent^ R-Ins R-List@ R-Pt R-Pts@ R-Size~ Rotate~ Rnd# RndLtr@ Sevenths Step~ T-Ang~ T-Cen T-Cnt# T-Ent^ T-Ins T-List@ T-Pt T-Pts@ T-Size~ Tl-Ang~ TxSize~ TxSizeInc~ TxSizeMax~ TxSizeMin~ Y-Ang~ Y-Cnt# Y-Ent^ Y-Ins Y-List@ Y-Pt Y-Pts@ Y-Size~) (princ "\nTroy Intro.\n") (command "_STYLE" "Troy" "ROMAND" "0.0" "1" "" "" "" "") (setq T-Pt (polar CenPt pi (* Unit~ 4.5)) R-Pt (polar CenPt pi (* Unit~ 1.5)) O-Pt (polar CenPt 0 (* Unit~ 1.5)) Y-Pt (polar CenPt 0 (* Unit~ 4.5)) TxSizeMax~ (* Unit~ 3) TxSizeMin~ (* Unit~ 0.5) Inc~ (* Unit~ 2);Speed of letters Pt0 (polar R-Pt (- (angle R-Pt SouthWest) 0.009) (distance R-Pt SouthWest)) Pt (polar R-Pt (angle R-Pt Pt0) (/ (distance R-Pt Pt0) 2.0)) Pt (polar Pt (+ (angle R-Pt Pt0) (* pi 0.5)) (/ (distance R-Pt Pt0) 7.0)) R-Cen (Center3Pt R-Pt Pt Pt0) Radius~ (distance R-Pt R-Cen) Ang~ (* (- (* pi 0.5) (acos (/ (/ Inc~ 2.0) Radius~))) 2) Inc# (fix (/ (- (angle R-Cen R-Pt) (angle R-Cen SouthWest)) Ang~)) Pt0 (polar T-Pt (- (angle T-Pt NorthWest) 0.043) (distance R-Pt SouthWest)) Pt (polar T-Pt (angle T-Pt Pt0) (/ (distance R-Pt Pt0) 2.0)) Pt (polar Pt (+ (angle T-Pt Pt0) (* pi 0.5)) (/ (distance R-Pt Pt0) 7.0)) T-Cen (Center3Pt T-Pt Pt Pt0) TxSizeInc~ (/ (- TxSizeMax~ TxSizeMin~) (float Inc#)) TxSize~ TxSizeMax~ T-Pts@ (list T-Pt) R-Pts@ (list R-Pt) O-Pts@ (list O-Pt) Y-Pts@ (list Y-Pt) T-Ang~ 0 );setq (repeat Inc# (setq T-Pt (polar T-Cen (- (angle T-Cen T-Pt) Ang~) Radius~) T-Pts@ (append T-Pts@ (list T-Pt)) R-Pt (polar R-Cen (- (angle R-Cen R-Pt) Ang~) Radius~) R-Pts@ (append R-Pts@ (list R-Pt)) O-Pt (polar CenPt (angle R-Pt CenPt) (distance R-Pt CenPt)) O-Pts@ (append O-Pts@ (list O-Pt)) Y-Pt (polar CenPt (angle T-Pt CenPt) (distance T-Pt CenPt)) Y-Pts@ (append Y-Pts@ (list Y-Pt)) T-Ang~ (- T-Ang~ (dtr 30)) TxSize~ (- TxSize~ TxSizeInc~) );setq );repeat (setq T-Pts@ (reverse T-Pts@) R-Pts@ (reverse R-Pts@) O-Pts@ (reverse O-Pts@) Y-Pts@ (reverse Y-Pts@) R-Ang~ T-Ang~ O-Ang~ T-Ang~ Y-Ang~ T-Ang~ T-Size~ TxSize~ R-Size~ TxSize~ O-Size~ TxSize~ Y-Size~ TxSize~ T-Cnt# 0 R-Cnt# 0 O-Cnt# 0 Y-Cnt# 0 Fourth# (/ Inc# 4) );setq (setq T-Pt (last T-Pts@) R-Pt (last R-Pts@) O-Pt (last O-Pts@) Y-Pt (last Y-Pts@) RndLtr@ (list 0)) (while (/= (length RndLtr@) 5) (setq Rnd# (1+ (GetRnd 3))) (cond ((= Rnd# 1)(setq Pt T-Pt)) ((= Rnd# 2)(setq Pt R-Pt)) ((= Rnd# 3)(setq Pt O-Pt)) ((= Rnd# 4)(setq Pt Y-Pt)) );cond (if (not (member Pt RndLtr@)) (setq RndLtr@ (append RndLtr@ (list Pt))) );if );while (setq Rotate~ (* (GetRnd 6283) 0.001) Dist~ (/ (distance NorthWest NorthEast) 10) Increase~ (/ (* Dist~ 3) 20.0) );setq (repeat 20 (setq Pt (polar CenPt Rotate~ Dist~)) (setq List@ (AddArray: Pt)) (setq List@ (Switch_nth 1 2 List@)) (setq List@ (Change_nth 5 (* (nth 5 List@) -1) List@)) (setq TroyArray@ (append TroyArray@ (list List@))) (setq Rotate~ (+ Rotate~ 0.897 (* (GetRnd 359) 0.001)) Dist~ (+ Dist~ Increase~) );setq );repeat (setq Step~ (* Unit~ 1.5);Speed of red ship Pt1 (polar SouthWest (dtr 90) (/ (distance SouthWest NorthWest) 6.0)) Pt2 (polar Pt1 0 (/ (distance SouthWest SouthEast) 3.0)) Pt (polar Pt1 0 (/ (distance Pt1 Pt2) 2.0)) Pt (polar Pt (dtr 90) (* Unit~ 2)) Pt (Center3Pt Pt1 Pt Pt2) Radius~ (distance Pt Pt1) Tl-Ang~ (- (angle Pt Pt1) (angle Pt Pt2)) Ang~ (* 2 (- (* pi 0.5) (acos (/ (* Step~ 0.5) Radius~)))) Divisions# (fix (1+ (/ Tl-Ang~ Ang~))) Pt2 (polar Pt (- (angle Pt Pt1) (* Ang~ Divisions#)) Radius~) );setq (setq Path1@ (list Pt1)) (repeat Divisions# (setq Pt1 (polar Pt (- (angle Pt Pt1) Ang~) Radius~)) (setq Path1@ (append Path1@ (list Pt1))) );repeat (setq Pt (polar Pt (angle Pt Pt2) (* Radius~ 2))) (repeat (fix (1+ (/ Divisions# 2.0))) (setq Pt1 (polar Pt (+ (angle Pt Pt1) Ang~) Radius~)) (if (< (angle Pt Pt1) (dtr 270)) (setq Path1@ (append Path1@ (list Pt1))) );if );repeat (setq Pt1 (last Path1@) Pt2 (inters Pt1 (polar Pt1 0 Unit~) NorthEast SouthEast nil) Ang~ (atan (/ 1 2.0)) Radius~ (* (distance Pt1 Pt2) (tan Ang~)) Pt (polar Pt1 (dtr 90) Radius~) Tl-Ang~ (atan (/ (distance Pt1 Pt2) Radius~)) Ang~ (* 2 (- (* pi 0.5) (acos (/ (* Step~ 0.5) Radius~)))) Divisions# (fix (1+ (/ Tl-Ang~ Ang~))) );setq (repeat Divisions# (setq Pt1 (polar Pt (+ (angle Pt Pt1) Ang~) Radius~)) (setq Path1@ (append Path1@ (list Pt1))) );repeat (setq Pt Pt2 Radius~ (distance Pt Pt1) Ang~ (* 2 (- (* pi 0.5) (acos (/ (* Step~ 0.5) Radius~)))) Tl-Ang~ (- (angle Pt Pt1) (* pi 0.5)) Divisions# (fix (1+ (/ Tl-Ang~ Ang~))) );setq (repeat Divisions# (setq Pt2 Pt1) (setq Pt1 (polar Pt (- (angle Pt Pt1) Ang~) Radius~)) (if (> (angle Pt Pt1) (* pi 0.5)) (setq Path1@ (append Path1@ (list Pt1))) );if );repeat (setq Ang~ (angle Pt2 Pt1)) (repeat 5 (setq Pt1 (polar Pt1 Ang~ Step~)) (setq Path1@ (append Path1@ (list Pt1))) );repeat (setq Ang~ (angle (nth 1 Path1@) (nth 0 Path1@))) (repeat 5 (setq Pt (polar (nth 0 Path1@) Ang~ Step~)) (setq Path1@ (Insert_nth 0 Pt Path1@)) );repeat (foreach Item Path1@ (setq Pt2 (MirrorPt Item CenPt 0)) (setq Path2@ (append Path2@ (list Pt2))) (setq Pt3 (MirrorPt Item CenPt (dtr 90))) (setq Path3@ (append Path3@ (list Pt3))) (setq Pt4 (MirrorPt Pt3 CenPt 0)) (setq Path4@ (append Path4@ (list Pt4))) );foreach (setq Path# (1+ (GetRnd 3))) (cond ((= Path# 1)(setq Path@ Path1@)) ((= Path# 2)(setq Path@ Path2@)) ((= Path# 3)(setq Path@ Path3@)) ((= Path# 4)(setq Path@ Path4@)) );cond ;----------------------------------------------------------------------------- ; First Loop ;----------------------------------------------------------------------------- (setq Loop t) (while Loop (if (<= T-Cnt# Inc#) (if (= T-Cnt# 0) (progn (command "_TEXT" "_M" (nth T-Cnt# T-Pts@) T-Size~ (rtd T-Ang~) "T") (setq T-Ent^ (entlast)) (command "_CHPROP" T-Ent^ "" "_C" Color3 "");Green (setq T-List@ (entget T-Ent^) T-Size~ (+ T-Size~ TxSizeInc~) T-Ang~ (+ T-Ang~ (dtr 30)) T-Cnt# (1+ T-Cnt#) T-Ins (nth T-Cnt# T-Pts@) );setq );progn (progn (setq T-List@ (entmod (subst (cons 50 T-Ang~) (assoc 50 T-List@) T-List@))) (setq T-List@ (entmod (subst (cons 11 T-Ins) (assoc 11 T-List@) T-List@))) (setq T-List@ (entmod (subst (cons 40 T-Size~) (assoc 40 T-List@) T-List@))) (setq T-Size~ (+ T-Size~ TxSizeInc~) T-Ang~ (+ T-Ang~ (dtr 30)) T-Cnt# (1+ T-Cnt#) );setq (if (<= T-Cnt# Inc#) (setq T-Ins (nth T-Cnt# T-Pts@))) );progn );if );if (if (>= T-Cnt# Fourth#) (if (<= R-Cnt# Inc#) (if (= R-Cnt# 0) (progn (command "_TEXT" "_M" (nth R-Cnt# R-Pts@) R-Size~ (rtd R-Ang~) "R") (setq R-Ent^ (entlast)) (command "_CHPROP" R-Ent^ "" "_C" Color4 "");Cyan (setq R-List@ (entget R-Ent^) R-Size~ (+ R-Size~ TxSizeInc~) R-Ang~ (+ R-Ang~ (dtr 30)) R-Cnt# (1+ R-Cnt#) R-Ins (nth R-Cnt# R-Pts@) );setq );progn (progn (setq R-List@ (entmod (subst (cons 50 R-Ang~) (assoc 50 R-List@) R-List@))) (setq R-List@ (entmod (subst (cons 11 R-Ins) (assoc 11 R-List@) R-List@))) (setq R-List@ (entmod (subst (cons 40 R-Size~) (assoc 40 R-List@) R-List@))) (setq R-Size~ (+ R-Size~ TxSizeInc~) R-Ang~ (+ R-Ang~ (dtr 30)) R-Cnt# (1+ R-Cnt#) );setq (if (<= R-Cnt# Inc#) (setq R-Ins (nth R-Cnt# R-Pts@))) );progn );if );if );if (if (>= R-Cnt# Fourth#) (if (<= O-Cnt# Inc#) (if (= O-Cnt# 0) (progn (command "_TEXT" "_M" (nth O-Cnt# O-Pts@) O-Size~ (rtd O-Ang~) "O") (setq O-Ent^ (entlast)) (command "_CHPROP" O-Ent^ "" "_C" Color5 "");Blue (setq O-List@ (entget O-Ent^) O-Size~ (+ O-Size~ TxSizeInc~) O-Ang~ (+ O-Ang~ (dtr 30)) O-Cnt# (1+ O-Cnt#) O-Ins (nth O-Cnt# O-Pts@) );setq );progn (progn (setq O-List@ (entmod (subst (cons 50 O-Ang~) (assoc 50 O-List@) O-List@))) (setq O-List@ (entmod (subst (cons 11 O-Ins) (assoc 11 O-List@) O-List@))) (setq O-List@ (entmod (subst (cons 40 O-Size~) (assoc 40 O-List@) O-List@))) (setq O-Size~ (+ O-Size~ TxSizeInc~) O-Ang~ (+ O-Ang~ (dtr 30)) O-Cnt# (1+ O-Cnt#) );setq (if (<= O-Cnt# Inc#) (setq O-Ins (nth O-Cnt# O-Pts@))) );progn );if );if );if (if (>= O-Cnt# Fourth#) (if (<= Y-Cnt# Inc#) (if (= Y-Cnt# 0) (progn (command "_TEXT" "_M" (nth Y-Cnt# Y-Pts@) Y-Size~ (rtd Y-Ang~) "Y") (setq Y-Ent^ (entlast)) (command "_CHPROP" Y-Ent^ "" "_C" Color6 "");Magenta (setq Y-List@ (entget Y-Ent^) Y-Size~ (+ Y-Size~ TxSizeInc~) Y-Ang~ (+ Y-Ang~ (dtr 30)) Y-Cnt# (1+ Y-Cnt#) Y-Ins (nth Y-Cnt# Y-Pts@) );setq );progn (progn (setq Y-List@ (entmod (subst (cons 50 Y-Ang~) (assoc 50 Y-List@) Y-List@))) (setq Y-List@ (entmod (subst (cons 11 Y-Ins) (assoc 11 Y-List@) Y-List@))) (setq Y-List@ (entmod (subst (cons 40 Y-Size~) (assoc 40 Y-List@) Y-List@))) (setq Y-Size~ (+ Y-Size~ TxSizeInc~) Y-Ang~ (+ Y-Ang~ (dtr 30)) Y-Cnt# (1+ Y-Cnt#) );setq (if (<= Y-Cnt# Inc#) (setq Y-Ins (nth Y-Cnt# Y-Pts@))) );progn );if );if );if ; Erase Troys that are out of limits (setq Cnt# 0) (foreach List@ TroyArray@ (setq CirEnt^ (nth 0 List@) CirPt1 (nth 1 List@) Radius~ (nth 4 List@) );setq (if (> (distance CenPt CirPt1) CirLimits~) (progn (command "_ERASE" CirEnt^ "") (setq TroyArray@ (Change_nth Cnt# (AddArray: nil) TroyArray@)) );progn (setq TroyArray@ (Change_nth Cnt# (ChangeArray: List@) TroyArray@)) );if (setq Cnt# (1+ Cnt#)) );foreach (delay 0.15);Speed of Loop (if (> Y-Cnt# Inc#)(setq Loop nil)) (if (or (/= (getvar "VIEWCTR") CenPt)(/= (getvar "VIEWSIZE") ViewSize~)) (command "_ZOOM" "_W" (car ViewExtents@)(cadr ViewExtents@)) );if );while ;----------------------------------------------------------------------------- ; Second Loop ;----------------------------------------------------------------------------- (setq Loop t Move# 0 Ltr# 0 Sevenths# (/ (length Path@) 7) Fire# (1+ Sevenths#)) (BuildShip: 0 (nth 0 Path@)) (if (> Path# 2) (setq MainList@ (entmod (subst (cons 42 -1.0) (assoc 42 MainList@) MainList@))) );if (while Loop ; Move Ship (setq Pt1 (nth Move# Path@) Pt2 (nth (1+ Move#) Path@) Ang~ (angle Pt1 Pt2) );setq ;(command "LINE" Pt1 Pt2 "");Uncomment while debuging (setq MainList@ (entmod (subst (cons 50 Ang~) (assoc 50 MainList@) MainList@))) (setq MainList@ (entmod (subst (cons 10 Pt1) (assoc 10 MainList@) MainList@))) ; Fire at Troy Letters (setq Fire# (1+ Fire#)) (if (= Fire# (fix (* Sevenths# 2.5)))(setq Fire# Sevenths#));First time (if (= Fire# Sevenths#);Fire in these intervals (progn (setq Fire# 0 Ltr# (1+ Ltr#)) (if (member Ltr# (list 1 2 3 4)) (progn (setq Pt (nth Ltr# RndLtr@) Ang~ (angle Pt1 Pt) Pt1 (polar Pt1 Ang~ (* Unit~ 2)) Pt2 (polar Pt1 Ang~ Unit~) );setq (command "_INSERT" Flame$ Pt1 1 1 (rtd Ang~)) (setq FlameArray@ (append FlameArray@ (list (list (entlast) Pt1 Pt2 Ang~)))) );progn );if );progn );if ; Move flame objects (if FlameArray@ (progn (setq Cnt# 0 Nth# nil) (foreach List@ FlameArray@ (setq Flame^ (nth 0 List@) Pt1 (nth 1 List@) Pt2 (nth 2 List@) Ang~ (nth 3 List@) );setq (if (or (and (> (car Pt2)(car East))(> (car Pt2)(car Pt1))) (and (< (car Pt2)(car West))(< (car Pt2)(car Pt1))) (and (> (cadr Pt2)(cadr North))(> (cadr Pt2)(cadr Pt1))) (and (< (cadr Pt2)(cadr South))(< (cadr Pt2)(cadr Pt1))) );or (progn (command "_ERASE" Flame^ "") (setq Nth# Cnt#) );progn (progn (command "_MOVE" Flame^ "" Pt1 Pt2) (setq Pt1 Pt2 Pt2 (polar Pt2 Ang~ Unit~)) (setq List@ (list Flame^ Pt1 Pt2 Ang~)) (setq FlameArray@ (Change_nth Cnt# List@ FlameArray@)) );progn );if (setq Cnt# (1+ Cnt#)) );foreach (if Nth# (setq FlameArray@ (Delete_nth Nth# FlameArray@)) );if );progn );if ; Check to see if Troy Letters are hit (if FlameArray@ (progn (setq Num# 0) (foreach List@ FlameArray@ (setq Ent^ (nth 0 List@) Pt2 (nth 2 List@) Pt nil );setq (cond ((<= (distance Pt2 T-Pt) Unit~) (command "_ERASE" T-Ent^ Ent^ "") (setq FlameArray@ (Delete_nth Num# FlameArray@)) (setq Pt T-Pt T-Pt SouthWest Color# Color3);Green );case ((<= (distance Pt2 R-Pt) Unit~) (command "_ERASE" R-Ent^ Ent^ "") (setq FlameArray@ (Delete_nth Num# FlameArray@)) (setq Pt R-Pt R-Pt SouthWest Color# Color4);Cyan );case ((<= (distance Pt2 O-Pt) Unit~) (command "_ERASE" O-Ent^ Ent^ "") (setq FlameArray@ (Delete_nth Num# FlameArray@)) (setq Pt O-Pt O-Pt SouthWest Color# Color5);Blue );case ((<= (distance Pt2 Y-Pt) Unit~) (command "_ERASE" Y-Ent^ Ent^ "") (setq FlameArray@ (Delete_nth Num# FlameArray@)) (setq Pt Y-Pt Y-Pt SouthWest Color# Color6);Magenta );case );cond ; Explode Letter (if Pt (progn (command "_COLOR" Color#) (setq Dia1~ 0.5 Dia2~ 3 Ang~ (* (GetRnd 6283) 0.001) Inc# 0 Inc1~ 0.125 Inc2~ 0.375) (repeat 10 (if (= Inc# 6)(setq Inc1~ -0.125 Inc2~ -0.375)) (StarBurst Pt (* Unit~ Dia1~) (* Unit~ Dia2~) (+ (GetRnd 5) 5) Ang~)(delay 0.125) (setq Dia1~ (+ Dia1~ Inc1~) Dia2~ (+ Dia2~ Inc2~)) (setq Ang~ (* (GetRnd 6283) 0.001)) (command "_ERASE" (entlast) "") (setq Inc# (1+ Inc#)) );repeat (command "_COLOR" "_BYLAYER") );progn );if (setq Num# (1+ Num#)) );foreach );progn );if ; Erase Troys that are out of limits (setq Cnt# 0) (foreach List@ TroyArray@ (setq CirEnt^ (nth 0 List@) CirPt1 (nth 1 List@) Radius~ (nth 4 List@) );setq (if (> (distance CenPt CirPt1) CirLimits~) (progn (command "_ERASE" CirEnt^ "") (setq TroyArray@ (Change_nth Cnt# (AddArray: nil) TroyArray@)) );progn (setq TroyArray@ (Change_nth Cnt# (ChangeArray: List@) TroyArray@)) );if (setq Cnt# (1+ Cnt#)) );foreach (delay 0.15);Speed of Loop (setq Move# (1+ Move#)) (if (= Move# (1- (length Path@)))(setq Loop nil)) (if (or (/= (getvar "VIEWCTR") CenPt)(/= (getvar "VIEWSIZE") ViewSize~)) (command "_ZOOM" "_W" (car ViewExtents@)(cadr ViewExtents@)) );if );while (setq SS& (ssget "x" (list '(8 . "Troy")))) (command "_ERASE" SS& "") (princ) );defun TroyIntro ;------------------------------------------------------------------------------- ; TroyClear - Troy clear function ;------------------------------------------------------------------------------- (defun TroyClear (/ Block$ Passed SS&) (if *TroyTab$* (command "_LAYOUT" "_S" *TroyTab$*)) (if *Clayer$* (setvar "CLAYER" *Clayer$*)) (if *Osmode#* (setvar "OSMODE" *Osmode#*)) (if *TextStyle$* (setvar "TEXTSTYLE" *TextStyle$*)) (if *TextSize~* (setvar "TEXTSIZE" *TextSize~*)) (command "_COLOR" "_BYLAYER") (if (setq SS& (ssget "_x" (list '(8 . "Troy")))) (command "_ERASE" SS& "") );if (setq Block$ (strcat (substr (UniqueName) 1 5) "*")) (foreach Item (GetBlockList) (if (wcmatch Item Block$) (setq Passed t)) );foreach (if Passed (command "_PURGE" "_BL" Block$ "_N")) (if (tblsearch "LAYER" "Troy") (command "_PURGE" "_LA" "Troy" "_N")) (if (tblsearch "STYLE" "Troy") (command "_PURGE" "_ST" "Troy" "_N")) (setq *Clayer$* nil *Osmode#* nil *TextStyle$* nil *TextSize~* nil) (PurgeGroups) (if *CTab$* (progn (command "_LAYOUT" "_S" *CTab$*)(setq *CTab$* nil *TroyTab$* nil)) );if (repeat 45 (princ (strcat "\n" (chr 160)))) (princ) );defun TroyClear ;------------------------------------------------------------------------------- ; Start of Troy Support Utility Functions ;------------------------------------------------------------------------------- ; acos ; Arguments: 1 ; x = real number between 0 and 1. May be passed as the sum of dividing two ; sides of a right triangle. ; Returns: acos of x, the radian degrees between sides of a right triangle ;------------------------------------------------------------------------------- (defun acos (x) (atan (/ (sqrt (- 1 (* x x))) x)) );defun acos ;------------------------------------------------------------------------------- ; asin ; Arguments: 1 ; sine = real number between -1 to 1 ; Returns: arcsin of sine ;------------------------------------------------------------------------------- (defun asin (sine / cosine) (setq cosine (sqrt (- 1.0 (expt sine 2)))) (if (zerop cosine) (setq cosine 0.000000000000000000000000000001) );if (atan (/ sine cosine)) );defun asin ;------------------------------------------------------------------------------- ; Center3Pt - Center point of 3 points on a circle ; Arguments: 3 ; Pt1 = First point ; Pt2 = Second point ; Pt3 = Third point ; Returns: Center point of 3 points on a circle ;------------------------------------------------------------------------------- (defun Center3Pt (Pt1 Pt2 Pt3 / Pt Pt4 Pt5 Pt6 Pt7) (setq Pt4 (polar Pt1 (angle Pt1 Pt2) (/ (distance Pt1 Pt2) 2.0)) Pt5 (polar Pt4 (+ (angle Pt1 Pt2) (* pi 0.5)) 1) Pt6 (polar Pt2 (angle Pt2 Pt3) (/ (distance Pt2 Pt3) 2.0)) Pt7 (polar Pt6 (+ (angle Pt2 Pt3) (* pi 0.5)) 1) Pt (inters Pt4 Pt5 Pt6 Pt7 nil) );setq );defun Center3Pt ;------------------------------------------------------------------------------- ; Change_nth - Changes the nth item in a list with a new item value. ; Arguments: 3 ; Num# = Nth number in list to change ; Value = New item value to change to ; OldList@ = List to change item value ; Returns: A list with the nth item value changed. ;------------------------------------------------------------------------------- (defun Change_nth (Num# Value OldList@) (if (<= 0 Num# (1- (length OldList@))) (if (> Num# 0) (cons (car OldList@) (Change_nth (1- Num#) Value (cdr OldList@))) (cons Value (cdr OldList@)) );if OldList@ );if );defun Change_nth ;------------------------------------------------------------------------------- ; delay - time delay function ; Arguments: 1 ; Percent~ - Percentage of *Speed# variable ; Returns: time delay ;------------------------------------------------------------------------------- (defun delay (Percent~ / Number~) (if (not *Speed#) (Speed)) (repeat (fix (* *Speed# Percent~)) (setq Number~ pi)) (princ) );defun delay ;------------------------------------------------------------------------------- ; Delete_nth - Deletes the nth item from a list. ; Arguments: 2 ; Num# = Nth number in list to delete ; OldList@ = List to delete the nth item ; Returns: A list with the nth item deleted. ;------------------------------------------------------------------------------- (defun Delete_nth (Num# OldList@) (setq Num# (1+ Num#)) (vl-remove-if '(lambda (x) (zerop (setq Num# (1- Num#)))) OldList@) );defun Delete_nth ;------------------------------------------------------------------------------- ; dtr - Degrees to Radians. ; Arguments: 1 ; Deg~ = Degrees ; Syntax: (dtr Deg~) ; Returns: Value in radians. ;------------------------------------------------------------------------------- (defun dtr (Deg~) (* pi (/ Deg~ 180.0)) );defun dtr ;------------------------------------------------------------------------------- ; GetBlockList ;------------------------------------------------------------------------------- (defun GetBlockList (/ BlockList@ Block$ List@) (if (setq List@ (tblnext "BLOCK" 't)) (while List@ (setq Block$ (cdr (assoc 2 List@))) (if (/= (substr Block$ 1 1) "*") (setq BlockList@ (append BlockList@ (list Block$))) );if (setq List@ (tblnext "BLOCK")) );while );if (if BlockList@ (setq BlockList@ (Acad_StrlSort BlockList@)) );if BlockList@ );defun GetBlockList ;------------------------------------------------------------------------------- ; GetRnd - Generates a random number ; Arguments: 1 ; Num# = Maximum random integer number range greater than or less than 0. ; Returns: Random integer number between 0 and Num#. ;------------------------------------------------------------------------------- (defun GetRnd (Num# / MaxNum# PiDate$ RndNum# Minus Loop) (if (or (/= (type Num#) 'INT)(= Num# 0)) (progn (princ "\nSyntax: (GetRnd Num#) Num# = Maximum random integer number range\ngreater than or less than 0.") (exit) );progn );if (if (< Num# 0) (setq MaxNum# (abs (1- Num#)) Minus t) (setq MaxNum# (1+ Num#)) );if (if (not *RndNum*) (setq *RndNum* 10000)) (setq Loop t) (while Loop (if (or (null *int*)(> *int* 100)) (setq *int* 1) (setq *int* (1+ *int*)) );if (setq PiDate$ (rtos (* (getvar "cdate") (* pi *int*)) 2 8 )) (cond ((>= MaxNum# 10000) (setq RndNum# (fix (* (atof (substr PiDate$ 13 5)) (* MaxNum# 0.00001)))) ) ((>= MaxNum# 1000) (setq RndNum# (fix (* (atof (substr PiDate$ 14 4)) (* MaxNum# 0.0001)))) ) ((>= MaxNum# 100) (setq RndNum# (fix (* (atof (substr PiDate$ 15 3)) (* MaxNum# 0.001)))) ) ((>= MaxNum# 10) (setq RndNum# (fix (* (atof (substr PiDate$ 16 2)) (* MaxNum# 0.01)))) ) ((>= MaxNum# 1) (setq RndNum# (fix (* (atof (substr PiDate$ 17 1)) (* MaxNum# 0.1)))) ) (t (setq RndNum# 0)) );cond (if (/= RndNum# *RndNum*) (setq Loop nil) );if );while (setq *RndNum* RndNum#) (if Minus (setq RndNum# (* RndNum# -1)) );if RndNum# );defun GetRnd ;------------------------------------------------------------------------------- ; Insert_nth - Inserts a new item value into the nth number in list. ; Arguments: 3 ; Num# = Nth number in list to insert item value ; Value = Item value to insert ; OldList@ = List to insert item value ; Returns: A list with the new item value inserted. ;------------------------------------------------------------------------------- (defun Insert_nth (Num# Value OldList@ / Temp@) (if (< -1 Num# (1+ (length OldList@))) (progn (repeat Num# (setq Temp@ (cons (car OldList@) Temp@) OldList@ (cdr OldList@) );setq );repeat (append (reverse Temp@) (list Value) OldList@) );progn OldList@ );if );defun Insert_nth ;------------------------------------------------------------------------------- ; MirrorPt - Mirror point ; Arguments: 3 ; Pt = Point to mirror ; BasePt = Base point ; Angle~ = Mirror angle in radians ; Returns: Returns location of mirrored point ;------------------------------------------------------------------------------- (defun MirrorPt (Pt BasePt Angle~ / Pt1) (if (> Angle~ pi) (setq Angle~ (- Angle~ pi)) );if (setq Pt1 (inters Pt (polar Pt (+ Angle~ (* pi 0.5)) 1) BasePt (polar BasePt Angle~ 1) nil) Pt1 (polar Pt1 (angle Pt Pt1) (distance Pt Pt1)) );setq );defun MirrorPt ;------------------------------------------------------------------------------- ; Move_nth - Moves the nth Num1# item value to the nth Num2# location in a list. ; Arguments: 3 ; Num1# = Nth number in list to move item value ; Num2# = Nth number in list to move item value of nth Num1# into ; OldList@ = List to move item values ; Returns: A list with nth item value moved. ;------------------------------------------------------------------------------- (defun Move_nth (Num1# Num2# OldList@ / Move_nth:) (defun Move_nth: (Num1# Num2# OldList@ Nth# Item) (cond ((and (> Nth# Num1#) (> Nth# Num2#)) OldList@ );case ((= Nth# Num1#) (Move_nth: Num1# (1+ Num2#) (cdr OldList@) (1+ Nth#) Item) );case ((= Nth# Num2#) (cons Item (Move_nth: (1+ Num1#) Num2# OldList@ (1+ Nth#) Item)) );case ((cons (car OldList@) (Move_nth: Num1# Num2# (cdr OldList@) (1+ Nth#) Item)) );case );cond );defun Move_nth: (if (and (/= Num1# Num2#) (<= 0 Num1# (1- (length OldList@))) (<= 0 Num2# (1- (length OldList@)))) (Move_nth: Num1# Num2# OldList@ 0 (nth Num1# OldList@)) OldList@ );if );defun Move_nth ;------------------------------------------------------------------------------- ; PurgeGroups - Purge Unused Groups ;------------------------------------------------------------------------------- (defun PurgeGroups (/ AllGroups@ Cnt# Dictionary^ EntFirst^ EntList@ FirstGroup$ Group^ GroupName$ Item Previous$ Pt SS& UsedGroups@) (setq Pt (polar (getvar "VIEWCTR") (* pi 1.5)(/ (getvar "VIEWSIZE") 2.0))) (command "_LINE" Pt (polar Pt (* pi 1.5) 0.00000001) "") (setq EntFirst^ (entlast)) (setq FirstGroup$ (UniqueName)) (command "_-GROUP" "_C" FirstGroup$ "" EntFirst^ "") (setq EntList@ (entget EntFirst^)) (setq Group^ (cdr (assoc 330 EntList@))) (setq EntList@ (entget Group^)) (setq Dictionary^ (cdr (assoc 330 EntList@))) (setq EntList@ (entget Dictionary^)) (foreach Item EntList@ (if (= (car Item) 3) (if (not (member (cdr Item) AllGroups@)) (setq AllGroups@ (append AllGroups@ (list (cdr Item)))) );if );if );foreach (setq SS& (ssget "_X")) (setq Cnt# 0) (repeat (sslength SS&) (setq EntList@ (entget (ssname SS& Cnt#))) (if (= (cdr (assoc 102 EntList@)) "{ACAD_REACTORS") (progn (setq Group^ (cdr (assoc 330 EntList@))) (setq EntList@ (entget Group^)) (if (setq Dictionary^ (cdr (assoc 330 EntList@))) (progn (setq EntList@ (entget Dictionary^)) (setq Previous$ "") (foreach Item EntList@ (setq Item (cdr Item)) (if (equal Item Group^) (setq GroupName$ Previous$) );if (setq Previous$ Item) );foreach (if (not (member GroupName$ UsedGroups@)) (setq UsedGroups@ (append UsedGroups@ (list GroupName$))) );if );progn );if );progn );if (setq Cnt# (1+ Cnt#)) );repeat (foreach GroupName$ AllGroups@ (if (not (member GroupName$ UsedGroups@)) (command "_-GROUP" "_E" GroupName$) );if );foreach (command "_-GROUP" "_E" FirstGroup$) (command "_ERASE" EntFirst^ "") (princ) );defun PurgeGroups ;------------------------------------------------------------------------------- ; Remove_nths - Removes the RemoveList@ of nths from a list. ; Arguments: 2 ; RemoveList@ = List of nths to remove ; OldList@ = List to remove the list of nths from ; Returns: A list with the list of nths removed. ;------------------------------------------------------------------------------- (defun Remove_nths (RemoveList@ OldList@) (if (and RemoveList@ OldList@) (if (zerop (car RemoveList@)) (Remove_nths (mapcar '1- (cdr RemoveList@)) (cdr OldList@)) (cons (car OldList@) (Remove_nths (mapcar '1- RemoveList@) (cdr OldList@))) );if OldList@ );if );defun Remove_nths ;------------------------------------------------------------------------------- ; rtd - Radians to degrees ; Arguments: 1 ; Rad~ = radians ; Syntax: (rtd R) ; Returns: value in degrees. ;------------------------------------------------------------------------------- (defun rtd (Rad~) (* 180.0 (/ Rad~ pi)) );defun rtd ;------------------------------------------------------------------------------- ; Speed - Determines the computer processing speed and sets the global variable ; *speed# which may be used in delay loops. ;------------------------------------------------------------------------------- (defun Speed (/ Cdate~ Cnt# NewSecond# OldSecond#) (setq Cdate~ (getvar "CDATE")) (setq NewSecond# (fix (* (- (* (- Cdate~ (fix Cdate~)) 100000)(fix (* (- Cdate~ (fix Cdate~)) 100000))) 10))) (repeat 2 (setq Cnt# 0) (setq OldSecond# NewSecond#) (while (= NewSecond# OldSecond#) (setq Cdate~ (getvar "CDATE")) (setq NewSecond# (fix (* (- (* (- Cdate~ (fix Cdate~)) 100000)(fix (* (- Cdate~ (fix Cdate~)) 100000))) 10))) (setq Cnt# (1+ Cnt#)) );while );repeat (setq *Speed# Cnt#) (princ) );defun Speed ;------------------------------------------------------------------------------- ; StarBurst - Draws a starburst shape ; Arguments: 5 ; CenPt = Center of starburst ; Dia1~ = Inside diameter ; Dia2~ = Outside diameter ; Sides# = Number of points ; StartAng~ = Radian angle of first point ; Returns: Draws a starburst shape ;------------------------------------------------------------------------------- (defun StarBurst (CenPt Dia1~ Dia2~ Sides# StartAng~ / Ang~ Ang1~ List@ List1@ List2@ List3@ Cnt1# Cnt2# Pt) (setq Ang~ (/ pi Sides#)) (setq Ang1~ (+ StartAng~ (/ Ang~ 2.0))) (repeat (* Sides# 2) (setq Pt (polar CenPt Ang1~ (/ Dia1~ 2.0))) (setq List1@ (append List1@ (list Pt))) (setq Ang1~ (+ Ang1~ Ang~)) );repeat (setq Ang1~ (+ StartAng~ Ang~)) (repeat Sides# (setq Pt (polar CenPt Ang1~ (/ (+ Dia1~ Dia2~) 4.0))) (setq List2@ (append List2@ (list Pt))) (setq Ang1~ (+ Ang1~ (* Ang~ 2))) );repeat (setq Ang1~ StartAng~) (repeat Sides# (setq Pt (polar CenPt Ang1~ (/ Dia2~ 2.0))) (setq List3@ (append List3@ (list Pt))) (setq Ang1~ (+ Ang1~ (* Ang~ 2))) );repeat (setq Cnt1# 0 Cnt2# 0) (repeat Sides# (setq List@ (append List@ (list (nth Cnt1# List3@)))) (setq List@ (append List@ (list (nth Cnt2# List1@)))) (setq Cnt2# (1+ Cnt2#)) (setq List@ (append List@ (list (nth Cnt1# List2@)))) (setq List@ (append List@ (list (nth Cnt2# List1@)))) (setq Cnt2# (1+ Cnt2#)) (setq Cnt1# (1+ Cnt1#)) );repeat (setq List@ (append List@ (list (nth 0 List3@)))) (command "_PLINE" (foreach Pt List@ (command Pt))) (princ) );defun StarBurst ;------------------------------------------------------------------------------- ; Switch_nth - Switches the nth Num1# and Num2# item values in a list. ; Arguments: 3 ; Num1# = nth number in list to switch with nth Num2# ; Num2# = nth number in list to switch with nth Num1# ; OldList@ = List to switch item values ; Returns: A list with two item values switched. ;------------------------------------------------------------------------------- (defun Switch_nth (Num1# Num2# OldList@ / Index#) (setq Index# -1) (if (and (< -1 Num1# (length OldList@)) (< -1 Num2# (length OldList@))) (mapcar '(lambda (x) (setq Index# (1+ Index#)) (cond ((= Index# Num2#) (nth Num1# OldList@)) ((= Index# Num1#) (nth Num2# OldList@)) (x) )) OldList@ );mapcar OldList@ );if );defun Switch_nth ;------------------------------------------------------------------------------- ; tan - Tangent of radian degrees ; Arguments: 1 ; radians = Radian degrees ; Returns: Tangent of radian degrees ;------------------------------------------------------------------------------- (defun tan (radians) (/ (sin radians) (cos radians)) );defun tan ;------------------------------------------------------------------------------- ; UniqueName - Creates a unique name for temp blocks and groups ;------------------------------------------------------------------------------- (defun UniqueName (/ Loop Name$) (setq Loop t) (while Loop (setq Name$ (rtos (getvar "CDATE") 2 8)) (setq Name$ (strcat (substr Name$ 4 5)(substr Name$ 10 8))) (if (/= Name$ *UniqueName$) (setq *UniqueName$ Name$ Loop nil) );if );while *UniqueName$ );defun UniqueName ;------------------------------------------------------------------------------- ; ViewExtents ; Returns: List of upper left and lower right points of current view ;------------------------------------------------------------------------------- (defun ViewExtents (/ A B C D X) (setq B (getvar "VIEWSIZE") A (* B (/ (car (getvar "SCREENSIZE")) (cadr (getvar "SCREENSIZE")))) X (trans (getvar "VIEWCTR") 1 2) C (trans (list (- (car X) (/ A 2.0)) (+ (cadr X) (/ B 2.0))) 2 1) D (trans (list (+ (car X) (/ A 2.0)) (- (cadr X) (/ B 2.0))) 2 1) );setq (list C D) );defun ViewExtents ;------------------------------------------------------------------------------- (princ) <<
| ||
Tác giả: thikladuoc Bài viết gốc: 410197 Tên lệnh: exptxt |
export tập điểm text thành file đuôi .txt
| ||
Tác giả: tranlaogia Bài viết gốc: 76101 Tên lệnh: olt |
lisp offset liên tục
| ||
Tác giả: nhatphong Bài viết gốc: 184187 Tên lệnh: nb |
lisp đổi tên blog được chọn
| ||
Tác giả: phamthanhbinh Bài viết gốc: 298012 Tên lệnh: themtext bottext |
Hỏi cách thêm kí tự bất kỳ vào text
Hề hề hề, Mạn phép bác Duy sửa hai dòng code (Prin I) thành (Prin1). <<
| ||
Tác giả: Doan Van Ha Bài viết gốc: 171204 Tên lệnh: ha1 |
Lisp lấy giá trị của dimenson, text và xuất ra file text
| ||
Tác giả: huaductiep Bài viết gốc: 276190 Tên lệnh: dop |
Nhờ Viết Lisp Dim hàng loạt theo phương đứng
| ||
Tác giả: quyennv01 Bài viết gốc: 57005 Tên lệnh: stext |
Dãn các dòng text đều nhau
|
Trang 231/330