明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2316|回复: 8

[源码] 各位大大们 帮忙加个记忆上一次输入的数

[复制链接]
发表于 2015-6-12 00:05:41 | 显示全部楼层 |阅读模式
3明经币
本帖最后由 love1030312 于 2015-6-12 00:07 编辑
  1. ;;; 用模糊距离连接线,弧和多义线  原作者是flyfox1047  感谢他提供的程序 非常好用  但希望大大们加个记忆
  2. (defun c:jf () (c:pljoinfuzz)) ; this line can be commented out if there is an existing command called jf
  3. (defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects)
  4.   (setq oldcmdecho (getvar "cmdecho"))
  5.   (setq oldpeditaccept (getvar "PEDITACCEPT"))
  6.   (setvar "cmdecho" 0)
  7.   (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16"))
  8.   (if A2k4 (setvar "PEDITACCEPT" 0))
  9.   (setq  okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))
  10.   (princ "\nSelect object to join: ")
  11.   (setq ss1 (ssget okObjects))
  12.   (setq fuzz (getdist "\nFuzz distance <0>: "))
  13.   (if (= fuzz nil) (setq fuzz 0))
  14.   (if (/= ss1 nil)
  15.       (progn
  16.   (setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0))))))
  17.   (if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects)))
  18.   (if (member objType '("LINE" "ARC"))
  19.     (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")
  20.     (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "")
  21.   )
  22.       )
  23.   )
  24.   (setq ss1 nil)
  25.   (setvar "cmdecho" oldcmdecho)
  26.   (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept))
  27.   (princ)
  28. )

最佳答案

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-6-12 00:05:42 | 显示全部楼层
love1030312 发表于 2015-6-12 09:18
大大 我是小白  能麻烦直接改改么  万分感谢
  1. ;;; 用模糊距离连接线,弧和多义线  原作者是flyfox1047  感谢他提供的程序 非常好用  但希望大大们加个记忆
  2. (defun c:jf () (c:pljoinfuzz)) ; this line can be commented out if there is an existing command called jf
  3. (defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects)
  4.   (setq oldcmdecho (getvar "cmdecho"))
  5.   (setq oldpeditaccept (getvar "PEDITACCEPT"))
  6.   (setvar "cmdecho" 0)
  7.   (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16"))
  8.   (if A2k4 (setvar "PEDITACCEPT" 0))
  9.   (setq  okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))
  10.   (princ "\nSelect object to join: ")
  11.   (setq ss1 (ssget okObjects))
  12.   ;(setq fuzz (getdist "\nFuzz distance <0>: "))
  13.   (if (= *fuzz nil) (setq *fuzz 0))
  14.    (setq fuzz (getdist (strcat "\nFuzz distance<" (rtos *fuzz 2 2) ">:")))
  15.    (if (NULL fuzz) (setq fuzz *fuzz) (SETQ *fuzz fuzz))
  16.   
  17.   (if (/= ss1 nil)
  18.       (progn
  19.   (setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0))))))
  20.   (if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects)))
  21.   (if (member objType '("LINE" "ARC"))
  22.     (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")
  23.     (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "")
  24.   )
  25.       )
  26.   )
  27.   (setq ss1 nil)
  28.   (setvar "cmdecho" oldcmdecho)
  29.   (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept))
  30.   (princ)
  31. )
回复

使用道具 举报

发表于 2015-6-12 08:31:56 | 显示全部楼层
可以用一个全局变量来保存你想要的数据,这样在当前文件中就可以记忆了
回复

使用道具 举报

发表于 2015-6-12 08:50:10 | 显示全部楼层
(setq fuzz (getdist "\nFuzz distance <0>: "))
  (if (= fuzz nil) (setq fuzz 0))
  
改用 Udist
(setq fuzz (Udist 4 "" "\nFuzz distance" fuzz nil))

Udist函数站内有
回复

使用道具 举报

 楼主| 发表于 2015-6-12 09:18:50 | 显示全部楼层
Andyhon 发表于 2015-6-12 08:50
(setq fuzz (getdist "\nFuzz distance : "))
  (if (= fuzz nil) (setq fuzz 0))
  

大大 我是小白  能麻烦直接改改么  万分感谢
回复

使用道具 举报

发表于 2015-6-12 13:40:02 | 显示全部楼层
试一试
(defun c:jf () (c:pljoinfuzz)) ; this line can be commented out if there is an existing

command called jf
(defun c:pljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects)
  (setq oldcmdecho (getvar "cmdecho"))
  (setq oldpeditaccept (getvar "PEDITACCEPT"))
  (setvar "cmdecho" 0)
  (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16"))
  (if A2k4 (setvar "PEDITACCEPT" 0))
  (setq  okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE")))
  (princ "\nSelect object to join: ")
  (setq ss1 (ssget okObjects))
  (setq fuzz (Udist 4 "" "\nFuzz distance(模糊距离):" (cond (*DD*)) nil))
  (setq *DD* fuzz)
(if (/= ss1 nil)
      (progn
  (setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0))))))
  (if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects)))
  (if (member objType '("LINE" "ARC"))
    (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "")
    (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "")
  )
      )
  )
  (setq ss1 nil)
  (setvar "cmdecho" oldcmdecho)
  (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept))
  (princ)
)

(defun udist (bit kwd msg def bpt / inp)
  (if def
    (setq msg (strcat "\n" msg "<" (rtos def) ">: ")
          bit (* 2 (fix (/ bit 2)))
    )
    (setq msg (strcat "\n" msg ": "))
  )
  (initget bit kwd)
  (setq inp (if bpt (getdist msg bpt) (getdist msg)))
  (if inp inp def)
)

评分

参与人数 1明经币 +1 收起 理由
love1030312 + 1 赞一个! 谢谢

查看全部评分

回复

使用道具 举报

发表于 2015-6-12 15:48:08 | 显示全部楼层
程序并不准确, 就算两条线之间的间距为100mm , 模糊距离输0.1 , 照样合并
回复

使用道具 举报

 楼主| 发表于 2015-6-12 21:54:13 | 显示全部楼层
lucas_3333 发表于 2015-6-12 15:48
程序并不准确, 就算两条线之间的间距为100mm , 模糊距离输0.1 , 照样合并

恩大大发现真详细  是有这个问题 但是不知道如何解决
回复

使用道具 举报

发表于 2024-6-24 23:38:34 | 显示全部楼层
是两条线连接起来吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 18:43 , Processed in 0.164152 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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