天圆液压产品中心
AutoCAD中特定液压油缸角度及长度捕获的实现要领
(setq an0 (/ pi 6)) (setq b2 b) (setq ang2 (* ang0 n)) (command"zoom" "p" )) 假如核实功效与上述功效不符(好比,对某些机型,上述四键的返回码别离为138、139、140、141),则应对措施中的响应语句作如下修改。 (command"line" pstart pend "") ;; OS.LSP源措施 ) ;for if ((= c1 27) (home)) ) ;for defun endp (endp pstart pframe ang2) 在AutoCAD中的角度捕获只有当正交状态打开时的直和程度偏向,对付其他非凡角度无能为力;其它,其网点捕获也是相对付X轴和Y轴,无法实现其他偏向的非凡长度捕获,给画图带来极大的不利便。(if ( / = len0 0) 当十字光标在恣意的某一区间内移动时,好比在第5区间(120°~150 °)内移动时,此时,落点只能在120°或150°线上(该线在图中并不直接表现),该两根角度线的中心线为135°。当十字光标的中心点处在120°~135°之间时, 则落点应在120°线上,该落点的详细位置为由十字光标的中心点向120°线作垂线来得到,其交点D(称为垂点)即为落点,为直观起见,此时由基准点(此处为O点)向落点作一橡筋拖曳线,该橡筋拖曳线随十字光标的移动而响应移动,表现出拖动进程(见图1);同样,当十字光标的中心点处在135°~150°之间时,则落点应在150°线上,并表现响应的橡筋拖曳线。该橡筋拖曳线并不是真正的线段, 只是用XOR墨水绘制的一个向量,当用XOR墨水从头绘制一遍该向量时,该向量将从屏幕上消散,这就是本措施实现光标拖动的道理。 将本措施的画线子模块 draw()中语句行 (setvar "osmode" 0 ) ;打消捕获 (if ( / = b2 4) 二、要领道理 (ant) ((=c1 139); ① 按F2键从头设定捕获角度; (endp pstart pframe ang2) (setvar "cmdecho" scmd) (defun err ( msg) (if (not (null ang1)) (setq a (grread 2 nil)) (setq pstart pend) ) ;for (cond (= b 4)) );for progn (setq dis (distance ps pe)) 此时,屏幕上回显刚输入的键值,好比对笔者行使的呆板(AST PIII+4/66D)回显为:(2 1 36)。 (princ "\n F2/F3/F4/F5/ESC/Return /下一点:") 所谓长度捕获,是在角度捕获的基本上,缸筒,在某一角度线上有一系列捕获点,该系列点离基准点的间隔为捕获长度的正整数倍,当选取直线上的一点时,落点自动落到离其最近的捕获点上。 ( (= b 3);用鼠标在屏幕上点取一点时 (princ "\n 第一参考点:") 在AutoCAD呼吁状态下输入(grread)并回车,用户此时可按下F2或F3、F4、F5键: ) ;for (= c1 140) (endp pstart pframe ang2) (progn (setq dist dis) (setq b1 0) (setq b2 4) ;else ;;;;主措施 (progn ) ;for cond (grdraw pstart pend -1 0) (command"zoom" "1.4x") p2 (polar ps ang0 1) ) (setvar "coords" ccoords) (if (/= msg "Function cancelled") ;; endp(), 十字光标投影到响应的捕获角度上后,以用户设定的长度 ) ;for (= c1 141) (leng) (T (princ "\n 未界说的菜单")) (grdraw pend pframe -1 0) (progn (princ "\n 第一角点:") 实现特定角度和长度捕获的要害点是:当十字光标(即十字交*线)移动时,措施要随时跟踪其交*点的位置,并将该位置与用户所设定的捕获角度与长度对应起来,从而计较出在该角度上的落点。 (init) ) ;for progn F2/F3/F4/F5/ESC/Return /下一点: (defun pull ( / ) F5--此处139改为用户的F5键返回码 (setvar "coords" 0) ;不表现坐标 落点落在某一捕获角度线上时,还得落在捕获长度L 的整数倍的点(称为捕获点)上,照旧针对图1,其垂点肯定处于某两个捕获点A与B之间,设A与B的中点为C,当D处于A与C之间时,落点应为A;当D处于C与B之间时,落点应为B (见图1)。个中: (defun leng ( / leng0 leng1 ) (T (home) ) ;for else (setq pframe (cadr a)) ) ;for if (if (>= (distance plast pframe) 0.1) (setq len0 1) 至此,已实现某些特定角度及长度的捕获。为了满意在措施执行进程中能随时变动捕获角度和捕获长度的必要,本措施还增进了响应的模块;其它,本措施中嵌入了窗口放缩成果模块,通过点取下拉菜单中窗口及周游子菜单,利便了各类作图的必要。 (princ "\n F2/F3/F4/F5/ESC/Return /下一点::") (progn (progn (princ "\n") (setq len0 leng1 ) · (grdraw pend pframe -1 0) ) ;for progn ;; ant(),设定捕获角度子措施 (while (/= b1 1) 在应用 AutoCAD 举办计划制图的操纵中, LINE 和POLYLINE 是行使频率最高的两个呼吁, 常常要碰着在某些特定角度上绘制特定长度的简朴线或复合线的环境,因而实现这两个捕获对进步AutoCAD 作图服从很有适用代价。 (field pstart pframe an0) (progn (defun draw ( / ) (setq b2 4) -- -- (if (or (null len0 ) (< len0 0) (not (numberp len0))) (princ "\n\n\t**宁波大学构筑计划研究院--程建华,1996**\n") (grdraw pstart polde -1 0) ((= c1 6008) (field pstart pframe an0) );for defun [角度捕获]^c^c(load"c:/acad/support/os.lsp") os ) ;for defun err (setvar "osmode" cosmode) );for progn (setvar "coords" ccoords) · (progn (setq pstart (getpoint "\n 请输入直线第一点:")) (setq *error* olderr) ;;err(),堕落处理赏罚子措施 (setvar "cmdecho" 0);不回显 (princ "\n 第二角点:") (if (null len0) (leng)) 在AutoCAD呼吁状态下输入(grread)并回车,用户此时可点取下拉菜单View下的Zoom子菜单中的Window项,活塞杆,对付笔者的菜单其返回值为:(4 6005)。其详细涵义为:第一个数字"4"暗示适才是下拉菜单输入;第二个数字"6005"暗示本菜单的Zoom Window菜单项的返回码。用户可按同样的要领找到菜单项Zoom All、Zoom Previous、Pan的返回码。并响应地改变"接管用户输入节制子措施"pull()中的"点取下拉菜单"部门的下述语句作对应修改: ⑦ 其它,用户还可以点取View菜单下的Zoom菜单中的Zoom Window 、Zoom Previous、Zoom All等三个子项实现窗口放缩和Pan菜单实现屏幕周游; 对付其他操纵,用户均可按屏幕呼吁行的中文提醒利便地举办操纵。在非汉化AutoCAD 中运行本措施时,只需将措施中有关的中文提醒行改成英文提醒即可。 其它,因为差异的机型在AutoCAD情形下键盘返回码也许稍有区别,以是要求用户在应用本措施之前对本身的呆板键盘返回码按如下要领作一次核实: ) (command pause) F4--此处138改为用户的F4键返回码 第一步:Command:(grread)回车 · · ) (princ "\n\n\t ------角度捕获2.0版------\n") ) ;for progn ) (command pause) ) (grdraw pold1 pold2 -1 0) (princ "\n F2/F3/F4/F5/ESC/Return /下一点:") (cond ((= c1 138) (ant)) ;F2 (setq plast pframe polde pend) ;; leng(),设定捕获长度间隔子措施 ;; coord(), 在屏幕的最上一行的坐标栏表现长度和角度 ⑥ 选取下一点,移动十字光标键,此时在屏幕的最上面的一行的坐标提醒栏精确地表现出按用户设定的捕获角度和长度所取得的落点相对付基准点的偏移角度和长度,滑动十字光标键直至用户探求到所必要的下一点并按下鼠标左键,呼吁行重又呈现上面的提醒行,并举办下一轮轮回; 也可将OS.LSP拷至\ACAD\SUPPORT\子目次下,在\ACAD\SUPPORT\\子目次下的菜单文件ACAD.MNU中的吻合位置加上下面的一句语句,即可直接在菜单中点取角度捕获操纵: (grdraw pstart pend -1 0) ) ;for defun home (AUTOLOAD "OS" '("OS")) (setvar "osmode" cosmode) 按上述步调依次对FF4、F5键的返回码举办核实,笔者的呆板该三键的返回码别离为137、138、139。 (setq ang0 (* an0 (/ 180 pi)) ) 四、措施的安装与行使 (princ) ③ 按F4键窗口缩小0.7倍; (setq n (fix (+ ( / ang1 ang0) 0.5))) 假定捕获角度为α=30°,捕获长度为L。 (progn (defun coord ( / str leng1 leng0 ang0) ((= c1 141) ;F5 (if (= b 3) (setq plast pframe polde pend) 最后,必要指出的是:用户本身的菜单文件ACAD.MNU也许增删过菜单项或AutoCAD R13中,会使Zoom Window、Zoom All、Zoom Previous、Pan在菜单中位置产生改变。这样,要求用户在应用本措施之前对本身的菜单项回码按如下要领作一次核实: (defun ant ( / ang0 ang1 ) ;;; an0 len0 are defined out program (setq ang0 (* ang2 (/ 180 pi)) ) );for (cond (= b 2)) 用户按照该提醒可任选个中的一种操纵,详细表明如下: ((= c1 6007) (progn (progn (setq pend (inters p1 p2 p3 p4 nil)) (defun drag ( pold1 pold2 pold3 / ) (setq p1 ps ;; 捕获计较落点 ) ;for defun ant 三、源措施清单 ((= c1 6011) · 以下举例声名该两个捕获的实现进程: ;; init(), 对措施举办初始化 (while (/= b 3) ) ;for if (command"pan") (progn (progn (cond ) ;for while (progn (grdraw pold2 pold3 -1 0) (draw) (setq olderr *error* *error* err) ;堕落处理赏罚 ((=c1 138); (princ "\n F2/F3/F4/F5/ESC/Return /下一点:") (setq ccoords (getvar "coords"));保存原坐标表现方法 ((= c1 13) (home)) (princ (strcat "\n请输入捕获角度:<" (rtos ang0) ">_")) ④ 按F5键窗口放大1.4倍; (command"zoom" "w") (princ) 1. 措施的安装 ) ;for defun coord ;;else (field pstart pframe an0) ) ;for defun lent ((=c1 6008)--此处6008改为用户的Zoom All菜单项返回码; ) ;FOR PROGN ;; drag(), 对上一次表现的拖曳线举办"或"操纵,使其从屏幕上消散, (setq c1 (cadr a)) (command pause) (INITGET 4) (progn ) ;for defun drag ) ; for if (cond ((= c1 6005) p4 (polar pe (+ ang0 (/ pi 2)) 1) (setq cosmode (getvar "osmode")) OA = n XL ; OB = (n + 1) XL (setq pend (polar ps ang0 dist)) (setq leng0 len0) (defun endp ( ps pe ang0 / p1 p2 p3 p4 dis ) (setq c1 (cadr a)) (setq an0 (* ang1 (/ pi 180))) (grdraw pstart pend -1 0) (command"line" pstart pend "") (defun field ( ps pe ang0 / ang1 n ) (setq *error* olderr) (command"zoom" "0.7x") ) ;; pull(), 接管用户输入节制子措施 (cond ((=c1 136)(ant));F2--此处136改为用户的F2键返回码 ) ;for defun init (setq scmd (getvar "cmdecho"));保存原呼吁回显方法 ) ;for if (setq b1 1) (setq pframe (cadr a)) ) ;for progn (princ "\n F2/F3/F4/F5/ESC/Return /下一点:") ) ;for cond1 ) ;for cond1 ⑤ 按ESC键、回车键、鼠标右键均可竣事操纵,退出措施; ) ;for progn ((=c1 6007)--此处6007改为用户的Zoom Previous菜单项返回码; ) ;for while (defun home ( / ) (princ "n\n\t --多谢行使角度捕获2.0版,措施非正常竣事--!\n") (setq b 0 b1 0 c '(0 0) ) (setvar "cmdecho" scmd) ② 按F3键从头设定捕获长度; dist scmd ccoords olderr cosmode ) (command"zoom" "a" )) 在"接管用户输入节制子措施"pull()中的键盘输入部门的下述语句作对应修改: (princ (strcat "\n 请输入捕获长度间隔:<" (rtos leng0) ">_")) (command"redraw") (setq dist (* (fix (+ (/ dis len0) 0.5)) len0)) (coord) ) ((= c1 139) (leng)) ;F3 ((=c1 6011)--另外6011改为用户的Pan菜单项返回码; command pause) ((or (= b 5) (= b 12) );只移动十字光标时 ) ;for defun draw ;; draw() , 绘制直线子措施 ) ;; field(),判定十字光标地址区间,并投影到响应的捕获角度线上 ((= b 2);键盘输入 (progn (princ "\n") 其详细涵义为:第一个数字"2"暗示适才是键盘输入;第二个数字"136"暗示本呆板的"F2"键的返回码。 ;; home(), 配置退出措施的节制变量 (if (not (null leng1)) ) ;for defun pull ) (setq b 3) (if (>= (distance plast pframe) 0.1) ) (setq pframe (cadr a)) (setq b (car a)) ) ;for if (progn ;; 并绘制下一次拖曳线 (T (princ "\n 未界说的键")) ) ;for progn (pull) F3--此处137改为用户的F3键返回码 ((= c1 140) ;F4 五、结语 ((= b 4);点取下拉菜单时 (setq ang1 (getreal)) (if (or (null an0 ) (< an0 0) (not (numberp an0))) (setq plast pframe polde pend) 一、弁言 (setq leng1 (getreal)) ) ;for cond · (cond ((=c1 6005)--此处6005改为用户的Zoom Window菜单项返回码; (责任编辑:admin) |
- [ 18-11-06 ]换向阀中位性液压站能特点及应用留意
- [ 18-10-09 ]公制螺纹、BS液压油缸PP螺纹ED密封油
- [ 18-09-11 ]很是具体的液液压站压阀块计划履历总
- [ 18-09-11 ]液压节液压站制技能的革命
- [ 16-09-14 ]联轴珩磨管器选择方法
- [ 16-07-17 ]怎样避免缸筒液压站冲击危害?
- [ 16-07-17 ]液压动力单元液不锈钢缸筒压齿轮泵的