autolisp 指定两点,在两点之间绘出指定间距的
表格
关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载
并标注
;==================================================================================================================================
; 函数名:kwy
; 功能:指定两点,在两点之间绘出指定间距的表格并标注
; 编程策略:
; 1、指定两点为所选区域的两个角点,并以这两点绘制出图纸的内边框
; 2、确定竖行的第一条标注线
; 3、以第一条标注线为基础,循环,绘出整个选定区域的竖行线
; 4、同2、3步骤,绘出横行线
; 5、为图纸加一个外边框
;
;==================================================================================================================================
(defun c:kwy (/)
(setq os (getvar "osmode"))
(setvar "osmode" 0) ;;关闭对象捕捉
;-----------------------------------------------------------------------------------------------------------------------
(setq pt1 (getpoint"\n请指定第一点:")) ;;指定要选区域的第一点
(if (= pt1 nil)
(exit) ;;如未选点,结束程序
)
(setq pt2 (getcorner pt1 "\n请指定第二点:")) ;;指定要选区域的第二点
(if (= pt2 nil)
(exit) ;;如未选点,结束程序
)
(command "rectang" pt1 pt2) ;;绘制指定区域的边缘
(setq swith 50)
(setq left_x (min (car pt1) (car pt2))) ;;取得所选区域的左下点的x坐标值
(setq left_y (min (cadr pt1) (cadr pt2))) ;;取得所选区域的左下点的y坐标值
(setq right_x (max (car pt1) (car pt2))) ;;取得所选区域的右上点的x坐标值
(setq right_y (max (cadr pt1) (cadr pt2))) ;;取得所选区域的右上点的y坐标值
(setq div_x (/ (- left_x (rem left_x swith)) swith)) ;;求得第一条所要标注的竖行线的值与网格线宽的商值
(if (> left_x 0)
(setq div_x (1+ div_x))
)
(setq s_div div_x) ;;备份该值
(while (<= (* swith div_x) right_x) ;;以所求得的商为循环值,确定网格线的位置
(setq s_below (list (* swith div_x) left_y))
(setq s_up (list (* swith div_x) right_y))
(command "line" s_below s_up "") ;;绘制竖行的网格线
(setq div_x (1+ div_x))
)
(setq div_y (/ (- left_y (rem left_y swith)) swith)) ;;求得第一条所要标注的横行线的值与网格线宽的商值
(if (> left_y 0)
(setq div_y (1+ div_y))
)
(setq h_div div_y) ;;备份该值
(while (<= (* swith div_y) right_y)
(setq h_left (list left_x (* swith div_y)))
(setq h_right (list right_x (* swith div_y)))
(command "line" h_left h_right "") ;;绘制横行的网格线
(setq div_y (1+ div_y))
)
(while (<= (* swith s_div) right_x) ;;标注竖行的文字注记