明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1582|回复: 6

请问下列程序绘的图形为何会变形?

[复制链接]
发表于 2004-7-24 09:59:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2004-7-26 9:47:33 编辑

下列程序我想绘一个粗糙符号,为何到Pt3Pt4不是水平线,Pt4位置移位什么原因造成的?

请赐教!

(set 'pt1 (getpoint "\n[请确定起始点位置]:"))

(set 'ang_pt4 (/ pi 3))

(set 'ang_pt3 (* pi 0.66667))

(set 'ang_circle (/ pi 2))

(set 'distance_p1_p2 12.7017)

(set 'distance_p1_p34 5.7735)

(set 'distance_p1_circle_center 3.33333)

(set 'radius_center 1.66667)

(set 'distance_p1_p3040 11.3725)

(set 'ang_pt40 1.31415)

(set 'ang_pt30 1.82744)

(set 'pt2 (polar pt1 ang_pt4 distance_p1_p2))

(set 'pt3 (polar pt1 ang_pt3 distance_p1_p34))

(set 'pt4 (polar pt1 ang_pt4 distance_p1_p34)) (command "pline" pt2 "w" 0.08 0.08 pt1 pt3 pt4 "") 以上是粗糙度标注程序前一小节,不包括数字标注部分!

发表于 2004-7-24 10:28:00 | 显示全部楼层
开始(setvar "OSMODE" 0)试试
发表于 2004-7-24 14:57:00 | 显示全部楼层
本帖最后由 作者 于 2004-7-27 19:43:35 编辑

楼主: 重新改编了你的程序,试试如何? 实际应用中最好是利用带属性的块插入进行标注,不过我对机械作图不了解。 光有符号没有数字,怎么识图? ;;czfh.lsp
(defun c:czfh (/ pt1 ang_pt4 ang_pt3
distance_p1_p2 distance_p1_p34
pt2 pt3 pt4
)
(PREV)
(setvar "osmode" 39) ;捕捉状态endp,mid,cen,int (setq pt1 (getpoint "\n\t请确定起始点位置: ")) (setvar "osmode" 0) ;强制取消捕捉状态
(setq ang_pt4 (/ pi 3))
(setq ang_pt3 (* pi 0.66667))
;(setq ang_circle (/ pi 2))
(setq distance_p1_p2 12.7017)
(setq distance_p1_p34 5.7735)
;(setq distance_p1_circle_center 3.33333)
;(setq radius_center 1.66667)
;(setq distance_p1_p3040 11.3725)
;(setq ang_pt40 1.31415)
;(setq ang_pt30 1.82744)
(mkla "粗糙符号" 4)
(setq pt2 (polar pt1 ang_pt4 distance_p1_p2))
(setq pt3 (polar pt1 ang_pt3 distance_p1_p34))
(setq pt4 (polar pt1 ang_pt4 distance_p1_p34))
(command "pline" pt2 "w" 0.08 0.08 pt1 pt3 pt4 "")
(POST)
) (Defun PREV ()
;;; 保存原有系统变量,建立新的系统变量
(Setq cmdech (Getvar "Cmdecho")
oom (Getvar "Orthomode")
osm (Getvar "Osmode")
la (Getvar "Clayer")
)
(Setvar "Cmdecho" 0)
(Setvar "Regenmode" 1)
) ;;; ----------------------- MKLA --------------------------
(Defun MKLA (a b)
;;; 建层: (mala "层名" 颜色号)
(If (= (Tblsearch "layer" a) nil)
(Command "layer" "m" a "c" b a "")
(Command "layer" "t" a "s" a "c" b a "")
)
)
(Defun POST() ;(/ cmdech LA oom osm)
;;; 恢复原有系统变量
(Setvar "Cmdecho" cmdech)
(Setvar "Clayer" LA)
(Setvar "Orthomode" oom)
(Setvar "Osmode" osm)
(Terpri)
(Princ)
) ;Defun 捕捉状态修改说明: ①确定起始点位置前设置捕捉状态endp,mid,cen,int四种基本状态。 ②画线前取消捕捉状态。 ③画完线再恢复原先的捕捉状态
 楼主| 发表于 2004-7-26 09:37:00 | 显示全部楼层
取消对象捕捉,确实能消除这一毛病,但是没有对象捕捉,对表面轮廓线进行标注点岂不是很难找到?
发表于 2004-7-26 09:41:00 | 显示全部楼层
使用osmode进行控制,需要就设置上,不需要时就取消。。。
 楼主| 发表于 2004-7-26 09:54:00 | 显示全部楼层
程序里要求首先确定第一点,该点是要被标注轮廓上的一点,也是粗糙度符号的基点,一开始就取消对象捕捉,第一点将无法精确定位!


请继续赐教!
 楼主| 发表于 2004-7-26 10:16:00 | 显示全部楼层
本帖最后由 作者 于 2004-7-26 10:55:12 编辑

利用下列语句


(setvar "osmode" 0)取消对象捕捉


再利用(setvar "osmode" 15359)开启对所有对象捕捉捕捉模式
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-1 11:59 , Processed in 0.182269 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表