明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 868|回复: 3

[讨论] 在选定的直线中点上插入指定的块出错了,请老师指点

[复制链接]
发表于 2018-3-22 17:01 | 显示全部楼层 |阅读模式
我需要在图中选定一条直线,查看了前辈的资料,勉强编写了如下代码:
其中  TYC 是网上找的。XDK是我做的,问题是出错,不知道原因,请指点迷津
(defun c:tyc ()
  (setvar "cmdecho" 0)
  (command "line" pause pause "")        ;你要的线可见
  (setq newe (entlast))
  (setq en (entget newe))
  (setq p1 (cdr (assoc 10 en)))                ;起点位置
  (setq p2 (cdr (assoc 11 en)))                ;端点位置
  (setq a (angle p1 p2))                ;旋转
  (setq a1 (* a (/ 180 pi)))
  (command "-insert" "管网标记" p2 "" "" a1) ;块插入起点位置
  (command "-insert" "管网标记" p1 "" "" a1) ;块插入端点位置
  (princ)
)


(defun c:xdk ()
  (setvar "cmdecho" 0)
;;;(setq os (getvar "osmode"))
;;;(setvar "osmode" 0)
  (setq ent (car (entsel "\n选取线: ")))
  (setq en (entget ent))
  (setq pt10 (cdr (assoc 10 en)))
  (setq pt11 (cdr (assoc 11 en)))
  (setq midpt (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p10 p11)))
  (setq a (angle pt10 pt11))                ;旋转
  (setq al (* a (/ 180 pi)))
  (command "-insert" "管网标记" midpt "" "" al) ;块插入起点位置
;;;(command "-insert" "管网标记" p1 "" "" al) ;块插入端点位置
  (princ)
)

;;164.13 [功能] 曲线中点
;;示例 (HH:GetMidpointCurve (car (entsel)))
(defun HH:GetMidpointCurve (curve / d)
  (setq        d (/ (vlax-curve-getDistAtParam
               curve
               (vlax-curve-getEndParam curve)
             )
             2
          )
  )
  (vlax-curve-getPointAtDist curve d)
)


;;;返回直线段的中点
;;;用法: (ptmid 直线段图元)
(defun ptmid (Xent)
  (setq        dxf (entget Xent)
        p10 (cdr (assco 10 dxf))
        p11 (cdr (assoc 11 dxf))
        mid (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p10 p11))
  )
)



 楼主| 发表于 2018-3-23 08:11 | 显示全部楼层
昨天忘了上传块文件,现在补上。请高手指点

管网标记可以实现在中点插入并随直线方向旋转,但是管线标记就只能在中点插入,无法实现随直线方向旋转。

本帖子中包含更多资源

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

x
发表于 2018-3-23 09:01 | 显示全部楼层
(setq midpt (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p10 p11)))
改成(setq midpt (mapcar '* '(0.5 0.5 0.5) (mapcar '+ pt10 pt11)))
 楼主| 发表于 2018-3-23 11:19 | 显示全部楼层
bssurvey 发表于 2018-3-23 09:01
(setq midpt (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p10 p11)))
改成(setq midpt (mapcar '* '(0.5 0.5 0 ...

呵呵,我太粗心大意了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 07:50 , Processed in 0.234091 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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