速度极快。DXF参考手册。。。
- (defun C:GetArc ( /
- k MyEntSel MyEnt MyEntData MyEntType CP Radius StartAng EndAng SP EP
- )
- ; Select an arc, get geometry and draw radials
- ; KJM July 2022
-
- (setq k 1)
- (while k
-
- (setq MyEntSel (entsel "\nSelect an ARC..."))
- (if MyEntSel
- (progn
- (setq MyEnt (car MyEntSel))
- (setq MyEntData (entget MyEnt))
- (setq MyEntType (strcase (cdr (assoc 0 MyEntData))))
-
- (if (equal MyEntType "ARC")
- (progn
- (setq k nil) ; stop selection loop
- )
- (progn
- (prompt "\n Selection was ")(princ MyEntType)(prompt ", try again...")(princ)
- )
- ) ; close if
- )
- ) ; close if
-
- ) ; close while
-
- ; Get geometry
- (setq CP (cdr (assoc 10 MyEntData))) ; Centre Point
- (setq Radius (cdr (assoc 40 MyEntData)))
- (setq StartAng (cdr (assoc 50 MyEntData))) ; Radians!
- (setq EndAng (cdr (assoc 51 MyEntData)))
-
- ; Make start and end points
- (setq SP (polar CP StartAng Radius))
- (setq EP (polar CP EndAng Radius))
-
- ; Report
- (prompt "\n Centre = ")(princ CP)(prompt " Radius = ")(princ Radius)
- (prompt " Start Point = ")(princ SP)(prompt " End Point = ")(princ EP)
- (princ)
-
- ; Draw something
- (command ".POINT" SP)
- (command ".POINT" CP)
- (command ".POINT" EP)
-
- (command ".LINE" SP CP EP "")
- (princ)
- )
|