乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 101|回复: 11

[编程交流] 坡度箭头

[复制链接]

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 11:50:18 | 显示全部楼层 |阅读模式
我们过去在VB中有一个例程,用于以%表示直线的斜率。写它的人已经离开了办公室,与lisp相比,我对VB的了解更少。我想知道是否有人可以编写一个lisp来生成箭头广告文本,如所附文件中所示,基于当前的textstyle和dimstyle?
 
谢谢
125024dc6ferd4avra1a1v.jpg
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 11:59:54 | 显示全部楼层
哦,试试看。。。我相信如果你陷入困境,这里会有人帮助你。
 
这可能会帮助你开始
  1. ;;;returns slope of line/polyline in profile LPS with help from ronjomp 2008
  2. (defun c:sl ()
  3. (vl-load-com)
  4. (setq ent (entsel))
  5. (if (= (cdr (assoc 0 (entget (car ent)))) "LINE")
  6.    (progn
  7.      (setq lst     (entget (car ent))
  8.        pt1     (cdr (assoc 10 lst))
  9.        pt2     (cdr (assoc 11 lst))
  10.        x1     (car pt1)
  11.        y1     (cadr pt1)
  12.        x2     (car pt2)
  13.        y2     (cadr pt2)
  14.        dy     (- y2 y1)
  15.        dx     (- x2 x1)
  16.        slp     (* 100 (/ dy dx))
  17.        slp2 (/ dx dy)
  18.        txtx (rtos (abs dx) 2 2)
  19.        txty (rtos dy 2 2)
  20.        txts (rtos slp 2 2)
  21.        txts2 (rtos slp2 2 2)
  22.      )                    ;setq
  23.    )                    ;progn
  24.    (progn
  25.      (setq pt    (osnap (cadr ent) "nea")
  26.        ent    (car ent)
  27.      )                    ;setq
  28.      (defun getadjacentplinevertices (ent pt / i p1 p2)
  29.    (if (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
  30.      (progn
  31.        (setq i  (fix (vlax-curve-getParamAtPoint
  32.                ent
  33.                (vlax-curve-getClosestPointTo ent pt)
  34.              )
  35.             )
  36.          p1 (vlax-curve-getPointAtParam ent i)
  37.          p2 (vlax-curve-getPointAtParam ent (+ 1 i))
  38.        )
  39.        (setq ls1 (list p1 p2))
  40.      )                ;progn
  41.    )                ;if
  42.      )                    ;defun
  43.      (getadjacentplinevertices ent pt)
  44.      (setq p1x     (car (car ls1))
  45.        p1y     (cadr (car ls1))
  46.        p2x     (car (cadr ls1))
  47.        p2y     (cadr (cadr ls1))
  48.        dx     (- p2x p1x)
  49.        dy     (- p2y p1y)
  50.        slp     (* 100 (/ dy dx))
  51.        slp2 (/ dx dy)
  52.        txtx (rtos (abs dx) 2 2)
  53.        txty (rtos dy 2 2)
  54.        txts (rtos slp 2 2)
  55.        txts2 (rtos slp2 2 2)
  56.      )                    ;setq
  57.    )                    ;progn
  58. )                    ;if
  59. (prompt (strcat "\nHorizontal distance = " txtx "'"
  60.                 "\nRelief = " txty "'"
  61.                 "\nSlope is " txts "%..." txts2 ":1")
  62. )
  63.    
  64. (princ)
  65. )
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 12:02:17 | 显示全部楼层
谢谢,这有什么我需要的基本知识,但可以把它的格式根据我的图片在开始后??
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 12:06:57 | 显示全部楼层
是的,它可以。。。你有没有试过?
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 12:16:42 | 显示全部楼层
说实话,我不知道从哪里开始。。。。。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 12:19:18 | 显示全部楼层
有人能帮忙吗???
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:23:15 | 显示全部楼层
试试这个
文字高度将与当前标注样式的文字高度相同
 
[code];;绘制箭头w/slop(defun c:das(/ang coords dx dy elist en ent ldlist ldpt mpt p1 p2 pline seg num slp sorted txpt tang txth txts unsorted)(while(setq ent(entsel)“\n选择多段线的所需段(或pres Enter to Exit):”)(if(eq“LWPOLYLINE”(cdr(assoc 0(setq elist(entget(setq en(car ent)kа))))))(progn(setq coords(vl remove if(function not)(mapcar(function(lambda(x)(if(=10(car x))(cdr x))))elist))(setq seg\u num(1+(fix(vlax curve getparamatpoint en(vlax curve getclosestpointto en(cadr ent k)))(setq p2(nth(1-seg\u num)coords)p1(nth seg\u num coords)unsorted(list p2 p1))(setq sorted(vl sort unsorted)(function(lambda(a b)(<(car a)(car b а)а)p1(car排序)p2(cadr排序)mpt(mapcar(函数(λ(a b)(/(+a b)2))(setq dx(-(car p2)(car p1))dy(-(cadr p2)(cadr p1))slp(*100(/dy dx))txts(rtos(abs slp)2))(setq ang(角度p1 p2)txth(getvar“DIMTXT”);
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 12:31:09 | 显示全部楼层
这正是我要找的Fixo。谢谢
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:39:28 | 显示全部楼层
检查坡度计算,因为我不是一个大数学
 
~'J'~
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 12:40:23 | 显示全部楼层
我会查清楚的。我想知道你是否可以制作一个版本,根据坐标的Z值显示斜率,并在%后面加一个小的“v”。目前我正在大量使用3d多段线,这将非常好。
 
谢谢
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 10:14 , Processed in 0.368848 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表