明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1839|回复: 8

求助各位:標注

[复制链接]
发表于 2004-9-7 12:35:00 | 显示全部楼层 |阅读模式
确定一点o为基准点,标注一个圆r的座标尺寸?
我的程序出现的不行问题是:圆的座标没有标到圆心上,而在距离圆好远的地方,我认为是
我的破旧座标转换的有问题,我搞了许久,还 是不行。请各位赐教。谢谢!
发表于 2004-9-7 12:49:00 | 显示全部楼层
你的程序呢?
 楼主| 发表于 2004-9-7 14:00:00 | 显示全部楼层
(defun c:dimc ()
(setvar "cmdecho" 0)
(setvar "dimtih" 0)
(command "osnap" "int,cen,mid")
(setq Po (getpoint "Original Point :"))
(command "ucs" "new" po)
(setq p1 (getpoint "Lower left corner :"))
(setq p2 (getpoint "upper righe corner :"))
(ssget "w" p1 p2)
(setq xx(ssget "x" (list(cons 0 "circle"))))
(setq index 0)
(setq entname(ssname xx index))
(setq entlist(entget entname))
(setq entasso(assoc 10 entlist))
(setq x1(cadr entasso))
(setq y1(caddr entasso))
(setq x11(+ x1 10))
(setq y11(+ y1 10))
(setq xy(list x1 y1))
(command "dimordinate" xy "ydatum" x11 )
(command "dimordinate" xy "xdatum" y11 )
(setvar "cmdecho" 1)
(princ)
)




发表于 2004-9-7 14:12:00 | 显示全部楼层
;(setq p1 (getpoint "Lower left corner :"))
;(setq p2 (getpoint "upper righe corner :"))
;(ssget "w" p1 p2) 这三句不知道你做什么用的,好象没有什么作用,还有你 (setq xx(ssget "x" (list(cons 0 "circle"))))
(setq index 0)
(setq entname(ssname xx index)) 选择了所有的圆,为何只对第一个圆操作,如果这样,你直接选择你需要操作的远不就可以了吗 (command "dimordinate" xy "ydatum" x11)
(command "dimordinate" xy "xdatum" y11) 这里x11和y11处需要的参数应该是点,你的x11和y11都不是点,而是一个数,导致错误
 楼主| 发表于 2004-9-7 14:24:00 | 显示全部楼层
楼上大哥:我的程序本来是想对多个圆标注,要有一个循环的,由於程序有错我就先改为对一个圆标注,给你传上来了。
发贴心情
;(setq p1 (getpoint "Lower left corner :"))
;(setq p2 (getpoint "upper righe corner :"))
;(ssget "w" p1 p2) 这三句不知道你做什么用的,好象没有什么作用,还有你 (setq xx(ssget "x" (list(cons 0 "circle"))))
(setq index 0)
(setq entname(ssname xx index)) 选择了所有的圆,为何只对第一个圆操作,如果这样,你直接选择你需要操作的远不就可以了吗 (command "dimordinate" xy "ydatum" x11)
(command "dimordinate" xy "xdatum" y11) 这里x11和y11处需要的参数应该是点,你的x11和y11都不是点,而是一个数,导致错误 我改了,但是还是有问题。
  (defun c:dimc ()
(setvar "cmdecho" 0)
(setvar "dimtih" 0)
(command "osnap" "int,cen,mid")
(setq Po (getpoint "Original Point :"))
(command "ucs" "new" po)
(setq p1 (getpoint "Lower left corner :"))
(setq p2 (getpoint "upper righe corner :"))
(ssget "w" p1 p2)
(setq xx(ssget "x" (list(cons 0 "circle"))))
(setq index 0)
(setq entname(ssname xx index))
(setq entlist(entget entname))
(setq entasso(assoc 10 entlist))
(setq x1(cadr entasso))
(setq y1(caddr entasso))
(setq x11(+ x1 5))
(setq y11(+ y1 5))
(setq xx(list x11 y1))
(setq yy(list x1 y11))
(command "dimordinate" xy "ydatum" xx )
(command "dimordinate" xy "xdatum" yy )
(setvar "cmdecho" 1)
(princ)
)




发表于 2004-9-7 14:48:00 | 显示全部楼层
你改过的程序还是一样的啊,只对第一个圆处理 这是我以前写的 ;;;功能:圆心自动标注
;;;BY Spring
;;;09/02-03
;;;_______________________________________________________
(defun AI_ERROR (errmsg)
(if errmsg
'("console break"
"Function Cancelled"
)
(princ (strcat "\nError: " errmsg))
)
(princ)
)
;;;_______________________________________________________
(defun c:CIRDIM (/ cm old_error *error* p1
ss count sscount en ed cen_x
cen_y cen x y
)
(setvar "MODEMACRO" "***SPRING***")
(setq cm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "_.UNDO" "Group")
(setq old_error *error*)
(setq *error* AI_ERROR)
(command "_.UCS" "World")
(setq p1 (getpoint "\n 请指定基准点 / <退出>"))
(if p1
(progn
(command "_.UCS" "O" P1)
(setq ss (ssget '((0 . "CIRCLE"))))
(setq count 0)
(setq sscount (sslength ss))
(while (< count sscount)
(setq en (ssname ss count))
(setq ed (entget en))
(setq cen (cdr (assoc 10 ed)))
(setq cen_x (- (car cen) (car p1)))
(setq cen_y (- (cadr cen) (cadr p1)))
(setq cen (append (list cen_x cen_y)))
(setq x (polar cen 0 8))
(setq y (polar cen (* pi 1.5) 8))
(command "dimordinate" cen x)
(command "dimordinate" cen y)
(setq count (1+ count))
)
)
)
(command "_.UCS" "Prev")
(command "_.UNDO" "End")
(setvar "cmdecho" cm)
(setq *error* old_error)
(princ)
) ------------------------------------------ 可是现在不能自动避位,meflying 可以帮忙完善一下吗?有很多人都需要这种程序的
发表于 2004-9-19 18:16:00 | 显示全部楼层
我这里有一个不太完善程的式,你看一下吧,是标注在"P"层的圆的圆心坐标的,也希望各位高手修正完善: ****************automatic dimension****************************************************
(defun C:BX (/) ; bp cmde blip ss w n ll
;e1dxf e1typ dxf10 dxf11 dxf40 dxf50 dxf51 an
;aa dp cenpt spt
;)
(setq bp (getpoint "\nBase point: ")
cmde (getvar "CMDECHO")
blip (getvar "BLIPMODE")
ss (ssget (list (cons 0 "CIRCLE") (cons 8 "P")))
w (getvar "WORLDUCS")
n 0
LL (* 0.5 (getvar "DIMSCALE"))
)
(setvar "CMDECHO" 1)
(setvar "BLIPMODE" 0)
(command "UNDO" "G")
(command "UCS" "OR" bp)
(setq bp (list 0.0 0.0))
(command "DIM1" "ORD" bp "X"
(list 0 (* -1 LL))
"")
(setq DBSX (SSGET "L"))
(command "DIM1" "ORD" bp "Y"
(list (* -1 LL) 0)
"" )
(setq DBSY (SSGET "L"))
(while (< n (sslength ss))
(setq e1dxf (entget (ssname ss n))
e1typ (cdr (assoc 0 e1dxf))
dxf10 (cdr (assoc 10 e1dxf))
)
(PROGN
(setq dxf40 (cdr (assoc 40 e1dxf))
dxf10 (trans dxf10 0 1)
)
(setq dxf10x (car dxf10)
dxf10y (cadr dxf10)
)
(autodim1)
)
(setq n (1+ n)
dxf11 nil
)
)
(if (= w 1)
(command "UCS" "w")
(command "UCS" "P")
)
(command "UNDO" "E")
(setvar "CMDECHO" cmde)
(setvar "BLIPMODE" blip)
(princ)
) (defun autodim1 ()
(if (> (cadr dxf10) (cadr bp))
(command "dimbaseline" DBSX dxf10
(polar dxf10 (* 0.5 pi) LL)
"" "" )
(command "DIM1"
"ORD"
dxf10
"x"
(polar dxf10 (* 1.5 pi) LL)
""
)
)
(if (> (car dxf10) (car bp))
(command "DIM1" "ORD" dxf10 "y" (polar dxf10 0 LL) "")
;(command "DIM1" "ORD" dxf10 "y" (polar dxf10 pi LL) "")
)
(if dxf11
(progn
(if (> (cadr dxf11) (cadr bp))
(command "DIM1"
"ORD"
dxf11
"x"
(polar dxf11 (* 0.5 pi) LL)
""
)
(command "DIM1"
"ORD"
dxf11
"x"
(polar dxf11 (* 1.5 pi) LL)
""
)
)
(if (> (car dxf11) (car bp))
(command "DIM1" "ORD" dxf11 "y" (polar dxf11 0 LL) "")
;(command "DIM1" "ORD" dxf11 "y" (polar dxf11 pi LL) "")
)
)
)
(princ)
)
发表于 2004-9-19 21:36:00 | 显示全部楼层
圆心坐标标注程序,加载yxzb.lsp,运行yxzb

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-9-19 22:27:00 | 显示全部楼层
把(command "dimordinate" xy "ydatum" x11 )
(command "dimordinate" xy "xdatum" y11 )
改为(command "dimordinate" "non" xy "ydatum" x11 )
(command "dimordinate" "non" xy "xdatum" y11 )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-30 14:13 , Processed in 0.193774 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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