打通任督二脉
通过语言识别生成汉字,汉字存入txt
通过txt导入到CAD
通过lisp指令将txt转换为图形处理
图块和文字对齐直线-均布直线-对齐多段线顶点-旋转平行1
图块和文字对齐直线
图块和文字对齐直线-均布直线-对齐多段线顶点-旋转平行
图块:[文字]
-
-------------------------------------------------------------------------------------------------------------------------
(defun c:duiqi ()
;将图块与直线对齐,并均分。
;先创建的图块排最右
;先等分的坐标排最右
;刚好对应了
(defun MoveToPosition (Blockname p_list / ent refPoint dx dy entlist targetx targety)
;移动对象到指定坐标
(prompt "\n Select an object to move: ")
;获得图元名
;(setq ent (ssname (ssget) 0))
;获得图元信息
(setq entlist (entget blockname))
;(princ entlist)
(setq targetx (car p_list))
(setq targety (cadr p_list))
;获得图元坐标
(setq zb (cdr (assoc 10 entlist)))
;(princ zb)
(if blockname
(progn
(prompt "\n Specify reference point for the object: ")
(setq refPoint zb)
;都移动到零点
;(setq targetX 0
; targetY 0
;)
(setq dx (- targetX (car refPoint)))
(setq dy (- targetY (cadr refPoint)))
(command "move" blockname "" "" (list dx dy 0) "")
(princ)
)
(princ "No entity selected.")
)
)
(defun GetPointList (startPoint endPoint n / pointList dx dy dz stepX stepY stepZ i)
(IF (< N 2)
(SETQ N 2)
)
(setq pointList nil)
(setq dx (- (car endPoint) (car startPoint)))
(setq dy (- (cadr endPoint) (cadr startPoint)))
(setq dz (- (caddr endPoint) (caddr startPoint)))
(setq stepX (/ dx (- n 1)))
(setq stepY (/ dy (- n 1)))
(setq stepZ (/ dz (- n 1)))
(setq i 0)
(while (< i n)
(setq point (list (+ (car startPoint) (* i stepX))
(+ (cadr startPoint) (* i stepY))
(+ (caddr startPoint) (* i stepZ))
)
)
(setq pointList (cons point pointList))
(setq i (+ i 1))
)
pointList
)
;; 示例用法:
;; (c:GetPointList '(0.0 0.0 0.0) '(100.0 100.0 0.0) 5)
;; 这将返回从(0, 0, 0)到(100, 100, 0)的4个等分点的列表
;只选择图块,67 0只得模型空间
(terpri)
(princ "\n 请选择图块:")
(Setq SS1 (SsGet (list (cons 0 "INSERT,MTEXT,TEXT") (cons 67 0))))
;获得直线句柄
(terpri)
(princ "\n 请选择要对齐的直线:")
(SETQ LNAME (SSNAME (SSGET) 0))