xstlf 发表于 2004-12-14 10:16:00

谢谢楼上的,还有点不完整,呵呵,我再去研究一下你的程序。呵呵,到时不懂再请教你。先谢谢。

ZZXXQQ 发表于 2004-12-14 10:49:00

哪儿不完整?您运行了吗?

xstlf 发表于 2004-12-14 13:45:00

我运行过了,这是你的程序产生的,我发上来。字体还是在老地方,命令后,还多了个“再输入第一点:”的命令提示。还有,大地坐标和CAD坐标应该刚好相反的,所以求出来的X为12.1111的话,应该在图上标Y=12.1111。呵呵。



你的那个字体或标注线位移的值求出来了,呵呵。让我学了一招。但你的程序,那个把尺寸线拉伸的函数可能有点错。


(defun c:dbz ()<BR>                               (setvar "cmdecho" 0)<BR>                               (command "osnap" "end")<BR>                               (setq p1 (getpoint "输入坐标点:"))<BR>                               (setq p2 (getpoint p1 "输入标注点:"))<BR>                               (setq px (rtos (nth 0 p1 ) 2 4))<BR>                               (setq py (rtos (nth 1 p1 ) 2 4))<BR>                               (setq txt (strcat "X=" py "" "\nY=" px))<BR>                               (command "leader" p1 p2 "" txt "")<BR>                               (setvar "cmdecho" 1)<BR>)<BR>(princ)


这个是我在五楼的基础上改良的。就是字体还没有被移到中间。产生出来的下图和上图一样,就是X和Y的值换了一下。不知能不能用你的方法把值求出来后,直接用COMMAND函数中的,“MOVE”。把字体下向移。


ZZXXQQ 发表于 2004-12-14 15:04:00

试一下更改后的。(DEFUN C:DS (/ OLDZIN P1 P2 PX PY H P3)
(SETVAR "CMDECHO" 0)
(SETQ OLDZIN (GETVAR "DIMZIN"))
(SETVAR "DIMZIN" 0)
(WHILE (SETQ P1 (GETPOINT "\nFirst Point 第一点 :"))
   (IF (SETQ P2 (GETPOINT P1 "\nSecond Point 第二点 :")) (PROGN
   (SETQ PX (STRCAT "X=" (RTOS (CADR P1) 2 4)))
   (SETQ PY (STRCAT "Y=" (RTOS (CAR P1) 2 4)))
   (SETQ H (* (GETVAR "DIMSCALE") (GETVAR "DIMTXT")))
   (SETQ P3 (POLAR P2 (/ PI -2) (* H 1.6)))
   (COMMAND "LEADER" P1 P2 "" PX PY "")
   (COMMAND "STRETCH" "C" "END" P3 P2 "" "END" P3 "INS" (POLAR P2 (/ PI 2) (* 0.25 H)))
   ))
)
(SETVAR "DIMZIN" OLDZIN)
(SETVAR "CMDECHO" 1)
(PRINC)
)

xstlf 发表于 2004-12-14 15:23:00

只是坐标改过来了,字体的位置还是在老地方,呵呵,正确的字体位置应如三楼所示的。这是对于搞规划设计的人常用的命令。呵呵。我搞建筑的很少用到。但知道制图标准是三图所示的。

ZZXXQQ 发表于 2004-12-14 16:59:00

您把OSNAP关闭试一下。我怎么试都行呀。或者将您不成功的图传上来让我看一看。

xstlf 发表于 2004-12-14 17:15:00

还是老样子,呵呵。


应该下图这样才正确呀。

xstlf 发表于 2004-12-14 17:22:00

本帖最后由 作者 于 2004-12-15 8:33:12 编辑

ZZXXQQ。我在R14里,可用,在,ACAD2004就不行了,是不是你也是R14的。呵呵,走了这么多弯路,原来是版本的问题。现在又多了个新问题了。为什么2004不能用,R14能用呢?哈哈哈。不会是系统变量的原因吧。我找了好多,改了好多还是老样子。害得我现在钻进牛角尖了,这问题没搞清,睡不着觉了。 在,2004中是这样提示的:



第二点:


在指定点未找到端点


窗中说明无效


;错误:函数被取消


指定第一角点:


查了一晚,找到了答案了,当允许各尺寸有独立的标注变量里,对尺寸进行修改就要出错,除非把块打散。所以我们不用再在这问题上讨论下去了,再次谢谢ZZXXQQ,万分感谢。你是我学LISP中最好的老师。

ZZXXQQ 发表于 2004-12-15 09:11:00

不要说的那么恢心,您要是早说是ACAD2004版就好了。下面的程序在2004版中和R14版中均可运行。(DEFUN C:DS ()
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE") OLDZIN (GETVAR "DIMZIN"))
(SETVAR "DIMZIN" 0) (SETVAR "OSMODE" 0)
(WHILE (SETQ P1 (GETPOINT "\nFirst Point 第一点 :"))
   (IF (SETQ P2 (GETPOINT P1 "\nSecond Point 第二点 :")) (PROGN
   (SETQ PX (STRCAT "X=" (RTOS (CADR P1) 2 4)))
   (SETQ PY (STRCAT "Y=" (RTOS (CAR P1) 2 4)))
   (SETQ H (GETVAR "DIMSCALE"))
   (SETQ H (* (IF (> H 0) H 1) (+ (GETVAR "DIMTXT") (* (GETVAR "DIMGAP") 2))))
   (SETQ V (ATOI (GETVAR "ACADVER")))
   (SETQ P3 (POLAR P2 (/ PI (IF (> V 14) 2 -2)) H))
   (COMMAND "LEADER" P1 P2 "" PX PY "")
   (IF (> V 14)
       (COMMAND "STRETCH" "C" P2 P2 "" P2 P3)
       (COMMAND "STRETCH" "C" P3 P2 "" P3 P2)
   )
   ))
)
(SETVAR "OSMODE" OLDOS)
(SETVAR "DIMZIN" OLDZIN)
(SETVAR "CMDECHO" 1)
(PRINC)
)

xstlf 发表于 2004-12-15 10:12:00

真的都可以了,呵呵,一下子看不懂,我复制回去好好研究。不再说谢二字了,以后也不再说了,因为谢二字份量太轻了。二楼的,能冒昧地问一下,你是什么地方人吗?
页: 1 [2] 3
查看完整版本: 要同时标明 X , y 坐标,可有大虾指点