社区
机器视觉
帖子详情
如何绘制0.25PT的虚线?
fj3762
2006-11-21 05:11:04
我想画一个网格,使用CPen去画,结果最小的像素都是1,但是画上去后太难看了。我想绘制0.25PT的虚线,可是不知道如何去画?各位帮帮忙看看。
...全文
252
2
打赏
收藏
如何绘制0.25PT的虚线?
我想画一个网格,使用CPen去画,结果最小的像素都是1,但是画上去后太难看了。我想绘制0.25PT的虚线,可是不知道如何去画?各位帮帮忙看看。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fj3762
2006-11-21
打赏
举报
回复
大家打开word,就会发现它里面的线可以最小到0.25PT
碧海情天-赵亮
2006-11-21
打赏
举报
回复
最小像素都是1了,你还想怎么画?
用画像吧。要不就去查API。
将wkai的最短路径由经典改为A星算法
;;时间计算 (defun z_timer (/ stime h m s) (if (not zhf_time_dot) (setq zhf_time_dot (getvar "date") h nil ) (progn (setq stime (getvar "date")) (setq stime (- stime zhf_time_dot)) (setq stime (* 86400.0 (- stime (fix stime)))) (setq h (fix (/ stime 3600))) (setq m (fix (/ (- stime (* h 3600)) 60))) (setq s (- stime (* m 60) (* h 3600))) (setq zhf_time_dot nil) (strcat (if (> h 0) (strcat (rtos h 2 0) "小时") "" ) (if (> m 0) (strcat (rtos m 2 0) "分钟") "" ) (rtos s 2 2) "秒" ) ) ) ) ;;路径颜色标示 (defun show (lst stop) (mapcar '(lambda (x) (redraw (vlax-vla-object->ename x) 3)) lst ) (if stop (progn (getpoint) (mapcar '(lambda (x) (redraw (vlax-vla-object->ename x) 4)) lst ) ) ) ) ;;vla是真的情况下,将选择集转换成vla-object实体表 ;;vla是假的情况下,将选择集转换成lisp实体表 (defun ss2lst (ss vla / re e) (if ss (repeat (setq n (sslength ss)) (if vla (setq e (vlax-ename->vla-object (ssname ss (setq n (1- n))))) (setq e (ssname ss (setq n (1- n)))) ) (setq re (append re (list e))) ) ) re ) ;;获得点所在位置的线(line,pline,spline)、圆弧、椭圆弧 (defun getss@ (p) (ssget "c" p (polar p (/ pi 4) (/ (getvar "viewsize") 5000)) '((0 . "arc,ellipse,*line")) ) ) ;;获得线段另一端连接实体表 (defun getconnect (e) (vl-remove e (append (ss2lst (getss@ (vlax-curve-getStartpoint e)) t) (ss2lst (getss@ (vlax-curve-getEndpoint e)) t) ) ) ) ;;除去表中的重复项,本例程未用到此函数 (defun remove:same (lst / re) (foreach n lst (if (member n re) () (setq re (append re (list re))) ) ) re ) ;;获得实体的长度 (defun get:len (e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)) ) ;;获得实体的另一个端点到终点的距离 (defun dist-other (ent
pt
/
pt
a
pt
b
pt
a2
pt
b2) (setq
pt
a (vlax-curve-getStartpoint ent)) (setq
pt
a2 (list (fix (* 10 (car
pt
a)))(fix (* 10 (cadr
pt
a))))) (setq
pt
b (vlax-curve-getEndpoint ent)) (if (member
pt
a2
pt
-list) (distance
pt
b
pt
) (distance
pt
a
pt
) ) ) ;;获得实体的另一个端点 (defun getother
pt
(ent /
pt
a
pt
b
pt
a2
pt
b2) (setq
pt
a (vlax-curve-getStartpoint ent)) (setq
pt
a2 (list (fix (* 10 (car
pt
a)))(fix (* 10 (cadr
pt
a))))) (setq
pt
b (vlax-curve-getEndpoint ent)) (if (member
pt
a2
pt
-list) (setq
pt
-other
pt
b) (setq
pt
-other
pt
a) ) ) ;;;________________________________________________ ;;;________________________________________________ ;;;________________________________________________ ;;;________________________________________________ ;;;A星算法 (defun main (
pt
1
pt
2 show / ss sse line path paths shortlen shortlst ss1 shortest) (setq count 0) (setq ss (ss2lst (getss@
pt
1) t) sse (ss2lst (getss@
pt
2) t) ) (if (and ss sse) (progn (setq passed-ss ss ;;起点处的实体表,作为延伸后获得的实体表中要去除的实体
pt
-list (list (list (fix (* 10 (car
pt
1)))(fix (* 10 (cadr
pt
1))))) path-ss (mapcar '(lambda (x) (list x)) ss) ;;;路径表 dist-ss (mapcar '(lambda (x) (list x (get:len x)(dist-other x
pt
2))) ss) ;;;路径表,带长度 dist-ss (vl-sort dist-ss '(lambda (a b) (< (+ (cadr a)(caddr a)) (+ (cadr b)(caddr b))))) ;;;排序后 complete nil ) (if complete (setq complete (vl-sort complete '(lambda (a b) (< (cadr a) (cadr b))) ) shortest (cadar complete) ;;shortest最短路径 ) ) (if (and shortest (= shortest (distance
pt
1
pt
2))) (progn ;;起止点有直接联通,并且是直线连接(mapcar '(lambda (x) (if (member x sse);;判断起止点之间是否有直接的连接 (setq complete (append complete (list (list x (get:len x)))) ) ) ) ss ) (if (and shortest (= shortest (distance
pt
1
pt
2))) (progn ;;起止点有直接联通,并且是直线连接 (list (cadar complete) (list (caar complete))) ) (progn ;;起止点有直接联通,但不是直线连接 或 没有直接连通 (while (and dist-ss (> (length sse) (length complete))) (setq now (car dist-ss) dist-ss (cdr dist-ss) ) ;;;_____________________________ ;;;_____________________________ ;;;_____________________________ (if show (progn (vlax-put (car now) 'color (+ 21 (* 10 (rem count 20)))) (vla-update (car now)) ) ) ;;;_____________________________ ;;;_____________________________ ;;;_____________________________ (if (member (car now) sse) (progn (setq complete (append complete (list now))) ;;;__________________________________________________ ;;;到达终点后剔出所有距离已经超出最小路由长度的未完成方向 (setq complete (vl-sort complete '(lambda (a b) (< (cadr a) (cadr b))) ) ) (setq shortest (cadar complete)) (setq dist-ss (mapcar '(lambda (x) (if (< (cadr x) shortest) x nil ) ) dist-ss ) ) (setq dist-ss (vl-remove nil dist-ss)) ;;;__________________________________________________ ;;;__________________________________________________ ) (progn (setq count (1+ count)) (setq
pt
-other (getother
pt
(car now))) (setq ss (ss2lst (getss@
pt
-other) t)) (setq
pt
-list (cons (list (fix (* 10 (car
pt
-other)))(fix (* 10 (cadr
pt
-other))))
pt
-list)) ;; (mapcar '(lambda (x) (setq ss (vl-remove x ss))) ;; passed-ss ;; ) ;;上句替换为下面一句 passed-ss较长时,不如直接处理ss (foreach n ss ;;去掉已走过的路径 (if (member n passed-ss) (setq ss (vl-remove n ss)) ) ) (if ss (progn ;; (setq passed-ss (append passed-ss ss) ;; path-ss (append ;; path-ss ;; (mapcar '(lambda (x) (list x (car now))) ss) ;; ) ;; ) ;; (setq dist-ss (append ;; dist-ss ;; (mapcar ;; '(lambda (x) ;; (if (or (not shortest) ;; (< (get:len x) shortest) ;; ) ;; (list x (+ (cadr now) (get:len x))) ;; ) ;; ) ;; ss ;; ) ;; ) ;; ) ;;上两句替换为下面循环结构 mapcar+append->foreach+cons (foreach n ss (setq passed-ss (cons n passed-ss)) ;;把新路径增加到已走过的路径 (setq path-ss (cons (list n (car now)) path-ss)) ;;把新路由增加到已有路由表中 (if (or (not shortest) (< (get:len n) shortest)) (setq dist-ss (cons (list n (+ (cadr now) (get:len n))(dist-other n
pt
2)) dist-ss)) ) ) ;; (setq dist-ss (vl-remove nil dist-ss)) (setq dist-ss (vl-sort dist-ss ;;按距离排序 '(lambda (a b) (< (+ (cadr a)(caddr a)) (+ (cadr b)(caddr b)))) ) ) ) ) ) ) ) ;;;_____________________________ ;;;_____________________________ ;;;_____________________________ (if show (progn (mapcar '(lambda (x) (vlax-put x 'color 0)) passed-ss) (mapcar '(lambda (x) (vla-update x)) passed-ss) ) ) ;;;_____________________________ ;;;_____________________________ ;;;_____________________________ (if complete (progn (setq complete (vl-sort complete '(lambda (a b) (< (cadr a) (cadr b))) ) n (car complete) ) (setq len (cadr n) n (car n) ) (while n (setq ss1 (append ss1 (list n))) (setq n (cadr (assoc n path-ss))) ) (list len (reverse ss1)) ) nil ) ) ) ) nil ) ) ;;;________________________________________________ ;;;________________________________________________ ;;;________________________________________________ ;;;________________________________________________ (defun c:ttz (/
pt
1
pt
2 ss1 ss2 complete) (redraw) (setq
pt
1 (getpoint "\n起点:")
pt
2 (getpoint "\n终点:") ) (mapcar '(lambda (
pt
) (grdraw (polar
pt
(* pi
0.25
) (/ (getvar "viewsize") 40)) (polar
pt
(* pi -0.75) (/ (getvar "viewsize") 40)) 1 ) (grdraw (polar
pt
(* pi 0.75) (/ (getvar "viewsize") 40)) (polar
pt
(* pi -
0.25
) (/ (getvar "viewsize") 40)) 1 ) ) (list
pt
1
pt
2) ) (setq zhf_time_dot nil) (z_timer) (setq ss1 (main
pt
1
pt
2 t)) (if ss1 (progn (setq ss2 (ssadd)) (mapcar '(lambda (x) (setq ss2 (ssadd (vlax-vla-object->ename x) ss2)) ) (cadr ss1) ) (princ (strcat "\n
虚线
显示最短路线, 共需" (itoa (sslength ss2)) "步,总长度为:" (rtos (car ss1)) " 历时:" (z_timer) ) ) (show (cadr ss1) nil) ) (princ (strcat "\n两点间没有可连通路径,历时:" (z_timer))) ) (princ) ) ;;;________________________________________________ ;;;________________________________________________ ;;;________________________________________________ ;;;________________________________________________ (princ "\n寻找连接两点的最近路线,by wkai @ xdcad ") (princ "\n前提 所有路线只在交点处交叉,起点和终点选择路线的端点." ) (princ "\n核心函数 (main 起点 终点 是否显示搜索过程) ") (princ "\n返回值 (最短路线长度 最短路线途径实体表)") (princ "\n测试命令:ttz\n") (princ)
R语言可视化包ggplot2包调整线条粗细实战(Adjust Line Thickness)
R语言可视化包ggplot2包调整线条粗细实战(Adjust Line Thickness) 目录 R语言可视化包ggplot2包调整线条粗细实战(Adjust Line Thickness) #ggplot2包调整线条粗细语法 #ggplot2包
绘制
默认粗细线条图 #ggplot2包绘线条图(size参数调整线条粗细) #ggplot2包绘线条图(不同size对比) #ggplot2包调整线条粗细语法 ggplot(df, aes(x = x, y = y)) + geo..
Gnuplot使用技巧:线和点的种类(Line and Point Types)
Line and Point TypesA lot of the default types that gnuplot chooses are rather nice, but many times it necessary to distinguish and use specific point types and line types. I have generated a huge gnu
LaTeX入门学习9(tikz基础-01)
tikz latex绘图
R语言
绘制
精美图形 | 火山图 | 学习笔记
此图也是实用性很强,80%的同学应该可以用得到,今天分享的只是学习笔记的一部分,后面会逐渐完善。既然是学习笔记,那么我们也有参考的教程,我们也会再文末附上参考的教程,大家也可以直接到对应教程中学习。,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形
绘制
等);有时候,我们在
绘制
火山图时,会出现X或Y轴坐标较大的现象,对火山图整体美观性较差,那么适当限制基因调整图形美观.在这里,我们不在演示,若你需要,可以根据原文的方法进行
绘制
图形。在上面的图形中,火山图中所有的使用。
机器视觉
4,446
社区成员
15,335
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章