明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: wedg

两点的间距

  [复制链接]
 楼主| 发表于 2004-7-22 13:11 | 显示全部楼层
我把你的程序稍微改了一下(文字我使用的是默认的),你再看看,看看能不能再帮我完善一下 1、我的dimlfac为0.0001,标注出来的数字小数点后有3位,看看能不能改为由我们自己控制(为2位小数或4位小数或更多)。 2、我在放置文字的时候,是由交点来控制的,能不能实现当横向1:1000比例时文字离竖线的距离为1500,当横向比例为1:500的时候文字离竖线的距离为750。(现在我的文字是紧贴着竖线的) 我默认的文字为: style name 选$WCAD_STANDARD_TEXT;shx font 选hromans.shx big font 选fhz.shx;height 设为4000;width factor 设为0.7 程序如下: (DEFUN C:BZ() (setq dfc (getvar "dimlfac")) (setq pt1 (getpoint "\n选择点1:")) (setq pt2 (getpoint "\n选择点2:")) (setq dst1 (distance pt1 pt2)) (setq dst1 (rtos dst1 2 2))

(setq len (distance pt1 pt2)) (setq pt3 (getpoint "\n选择标注线:")) (SETQ PT3 (LIST (CAR PT3) (1+ (CADR PT3))))

(COMMAND "TEXT" PT3 90 (rtos (* len dfc) 2 3) ) )

本帖子中包含更多资源

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

x
发表于 2004-7-22 16:41 | 显示全部楼层

修改后的缺陷

修改后的缺陷:


1、把扑捉系统变量全去掉,不能保证两点之间的真实距离。


2、小数点的位数和距直线距离由控制比例尺的全局变量设定。
 楼主| 发表于 2004-7-22 19:09 | 显示全部楼层
捕捉对我来说影响不是很大,现在关键我要的是离竖线的距离要能用由程序控制,不要重新调整。
发表于 2004-7-23 11:25 | 显示全部楼层
可用系统变数或自定参数控制所要位置


(if (= kkf 1)


...
 楼主| 发表于 2004-7-23 19:58 | 显示全部楼层
楼上的能说得更清楚点吗?比方说插在什么地方?
发表于 2004-8-2 00:12 | 显示全部楼层
本帖最后由 作者 于 2004-8-2 13:40:23 编辑

问题解决了吗? 估计还是有问题。 程序搞定,见下: ★★★★★★★★★★★★★★★★★★★★★★★ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;gaocheng.lsp
;;;高程标高标注;埋深标注
;;;-- XYP@bsedi.com
;;;2004.07.27
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(prompt "\n\r 加载高程标高标注程序。")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;高程标高标注
(defun c:gc (/ psel psel-x psel-y txt t-txt bls)
(cmdla0)
(cssz1)

(while (setq psel (getpoint "\n\t待标注点: "))
(setq psel-x (car psel)
psel-y (cadr psel)
)
(setq txt (rtos (+ (/(- psel-y pjzh-y) (/ 10000 bls)) no-jzh) 2 3))
(setq pt-txt (list psel-x ptext-y))
(mkla"高程标注"4);;自定义标注层名
(setvar"osmode"0)
(command "text" "j" "mc" (polar pt-txt pi (/ 3000 bls)) (/ 4000 bls) "90" txt)
(setvar"osmode"39)
)
(pxyp "GC (高程)")
(cmdla1)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;埋深标注
(defun c:msbz (/ psel psel-x psel-y txt t-txt bls)
(cmdla0)
(cssz2)

(while
(setq psel (getpoint "\n\t设计路面线端点: "))
(setq psel2 (getpoint"\n\t管线底线端点:"))
(setq psel-x (car psel)
psel-y (cadr psel)
)
(setq txt (- (cadr psel2) (cadr psel))
txt (rtos (abs (/ txt (/ 10000 bls))) 2 3)
)

;(setq txt (rtos (+ (/(- psel-y pjzh-y) (/ 10000 bls)) no-jzh) 2 3))
(setq pt-txt (list psel-x ptext-y))
(mkla"埋深标注"3);;自定义标注层名
(setvar"osmode"0)
(command "text" "j" "mc" (polar pt-txt pi (/ 3000 bls)) (/ 4000 bls) "90" txt)
(setvar"osmode"39)
)
(pxyp "msbz (埋深标注)")
(cmdla1)
) ;;;画新图或标不同类标高(地面高程、埋深)
(defun gc0 (/)
(cmdla0)
(setq ptext-y nil);(princ ptext-y)
(setq pjzh-y nil);(princ pjzh-y)
(setq no-jzh nil);(princ no-jzh)
(setq BLS nil)
(gc)
(princ"\n\t恢复系统")
(princ)
(cmdla1)
) ;;;参数设置
(defun cssz1()
(setvar"osmode"32)
(while (= bls nil)
(if (= bls nil)
(progn
(initget "A B C")
(setq BL-bz (getkword "\nA(图纸比例1:100)/B(图纸比例1:200)/C(重设高程类型).<1:100>:"))
(setq BL-bz (if BL-bz BL-bz "A"))
(if (= bl-bz "A")(setq bls 1))
(if (= bl-bz "B")(setq bls 2))
(if (= bl-bz "C")
(progn
(setq bls nil)
(gc0)
)
)
)
)
)

(if (= ptext-y nil)
(setq ptext-y (+ (cadr (getpoint "\n\t选择标注基线端点: ")) (/ 7000 bls))));;标注文本基点y坐标
(if (= pjzh-y nil)(setq pjzh-y (CADR (dxf 10 (entget (car(entsel"\n\t选择一条基准线: ")))))));基准线y坐标
(if (= no-jzh nil)(setq no-jzh (ureal 1 "" "输入基准线标高值" no-jzh)))
) (defun cssz2()
(setvar"osmode"32)
(while (= bls nil)
(if (= bls nil)
(progn
(initget "A B C")
(setq BL-bz (getkword "\nA(图纸比例1:100)/B(图纸比例1:200)/C(重设高程类型).<1:100>:"))
(setq BL-bz (if BL-bz BL-bz "A"))
(if (= bl-bz "A")(setq bls 1))
(if (= bl-bz "B")(setq bls 2))
(if (= bl-bz "C")
(progn
(setq bls nil)
(gc0)
)
)
)
)
)

(if (= ptext-y nil)
(setq ptext-y (+ (cadr (getpoint "\n\t选择标注基线端点: ")) (/ 5000 bls))));;标注文本基点y坐标
;(if (= pjzh-y nil)(setq pjzh-y (CADR (dxf 10 (entget (car(entsel"\n\t选择一条基准线: ")))))));基准线y坐标
;(if (= no-jzh nil)(setq no-jzh (ureal 1 "" "输入基准线标高值" no-jzh)))
) (defun ureal (bit kwd msg def / inp)
(if def
(setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
bit (* 2 (fix (/ bit 2)))
)
(setq msg (strcat "\n" msg ": "))
)
(initget bit kwd)
(setq inp (getreal msg))
(if inp inp def)
) ;;; 保存原有系统变量,设置程序运行时的系统变量
(Defun cmdla0 ()
(Setq cmdech (Getvar "Cmdecho")
oom (Getvar "Orthomode")
osm (Getvar "Osmode")
la (Getvar "Clayer")
)
(Setvar "Cmdecho" 0)
(Setvar "Regenmode" 0)
) ;;; 建图层: (mala "层名" 颜色号)
(Defun MKLA (a b)
(If (= (Tblsearch "layer" a) nil)
(Command "layer" "m" a "c" b a "")
(Command "layer" "t" a "s" a "c" b a "")
)
) ;;; 恢复原有系统变量
(Defun cmdla1 ();(/ cmdech LA oom osm)
(Setvar "Cmdecho" cmdech)
(Setvar "Clayer" LA)
(Setvar "Orthomode" oom)
(Setvar "Osmode" osm)
(setvar "regenmode" 1)
(Terpri)
(Princ)
) ;;;* 显示命令简写
(DEFUN PXYP (TXT1)
(SETQ TXT1 (STRCAT "\n\r 程序命令: " TXT1 " -- XYP@bsedi.com"))
(PRINC TXT1)
(Princ)
);defun (defun dxf (code elist) (cdr (assoc code elist))) (pxyp "GC (高程);msbz (埋深标注)") ★★★★★★★★★★★★★★★★★★★★★★★
发表于 2004-9-1 09:17 | 显示全部楼层
为什么用DIST命令量算两点间的距离时,有时候所量算的尺寸是错的?用LIST就永远不会
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 14:37 , Processed in 0.200776 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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