lingduwx 发表于 2013-9-28 10:55:12

求高手修改一下动态线型比例!!!

本帖最后由 lingduwx 于 2013-9-28 11:33 编辑

在论坛下载了848818376 的test动态改变线型比例感觉非常好,现在求高手修改一下,
去掉那个对话框,将他改为命令行方式更方便,让命令行显示“单独线型修改d,全局线型修改q,默认d”
另外当选择全局线修改时,选中的哪几种线,就修改哪几种线型的全局比例,没有选中的线型不做修改,
小弟先谢了

   附件在楼下

lingduwx 发表于 2013-9-28 10:56:28

上面忘了提供LSP了
附件在此

清风明月名字 发表于 2013-9-28 12:47:06

谢谢楼主代码分享!期待高手出手

llsheng_73 发表于 2013-10-24 13:22:46

本帖最后由 llsheng_73 于 2013-10-27 11:37 编辑

lingduwx 发表于 2013-9-28 10:56 static/image/common/back.gif
上面忘了提供LSP了
附件在此
只是需要去除对话框?
那样的话就改主程序就行了
(defun C:xx ( / userclick temp)
(vl-load-com)
(setq temp (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "undo" "be")
(while (not(member userclick'("d""D""q""Q""")))
    (setq userclick(getstring"\n单独线型修改d,全局线型修改q<d>")))
(if (=""userclick)(setq userclick"d"))
(cond ((member userclick'("d""D"))(qjchenedltscale 1))
      ((member userclick'("q""Q"))(qjchenedltscale 2))
)
(command "undo" "e")
(setvar "cmdecho" temp)
)
;;只修改了主程序部分,下边两个函数均直接复制原附件里边的,没有对其进行过测试,因为相信你呗
(defun qjchenedltscale(n / a b gr linetype newscale o orilst overallltscale zq)
(prompt "\n 请选择某一非continuous线型的物体:")
(setq a (car (entsel)) o (vlax-ename->vla-object a))
(setq orilst (vlax-get-property o 'LinetypeScale))
(setq linetype (cdr (assoc 6 (entget a))))
(if (= linetype nil)
      (setq linetype (cdr (assoc 6 (tblsearch "layer" (cdr (assoc 8 (entget a)))))))
)
(if (and linetype (/= linetype "Continuous"))
    (progn
      (setq zq (cdr (assoc 40 (tblsearch "ltype" linetype))))
      (setq overallltscale (getvar "LTSCALE"))
      (setq b (getpoint "\n请选择一个点:"))
      (while (= (car (setq gr (grread nil 5 0))) 5)
(redraw)
(grdraw (cadr gr) b 1 1)
(setq newscale (/ (distance (cadr gr) b) zq overallltscale))
(apply-props o (list (list "LinetypeScale" newscale)))
      )
      (if (= n 2)
(progn
   (setvar "ltscale" (* overallltscale (/ newscale orilst)))
   (apply-props o (list (list "LinetypeScale" orilst)))
   (command "regen")
)
      )
    )
)
(vlax-release-object o)
(princ)
)
(defun apply-props (object proplist)
(foreach prop proplist
    (if (vlax-property-available-p object (car prop))
      (vlax-put-property object (car prop) (cadr prop))
    )
)
)


lingduwx 发表于 2013-10-27 10:12:39

llsheng_73 发表于 2013-10-24 13:22 static/image/common/back.gif
只是需要去除对话框?
那样的话就改主程序就行了

非常感谢兄弟,偶马上用一下,呵呵

lingduwx 发表于 2013-10-27 10:16:47

llsheng_73 发表于 2013-10-24 13:22 static/image/common/back.gif
只是需要去除对话框?
那样的话就改主程序就行了

大哥你好,不知道为什么,我用的时候出现错误啊,麻烦再帮忙看看嘛

命令: xx
单独线型修改d,全局线型修改q<d>d
; 错误: no function definition: QJCHENEDLTSCALE
命令: xx
单独线型修改d,全局线型修改q<d>q
; 错误: no function definition: QJCHENEDLTSCALE

llsheng_73 发表于 2013-10-27 10:25:06

你原来那程序的别的部分还得一起啊,老大

lingduwx 发表于 2013-10-27 10:29:16

llsheng_73 发表于 2013-10-27 10:25 static/image/common/back.gif
你原来那程序的别的部分还得一起啊,老大

麻烦兄弟帮忙弄一下嘛,偶实在是不懂LSP,谢谢了

llsheng_73 发表于 2013-10-27 11:36:02

lingduwx 发表于 2013-10-27 10:29 static/image/common/back.gif
麻烦兄弟帮忙弄一下嘛,偶实在是不懂LSP,谢谢了

哪个程序修改过了就替换掉哪一部分,哪些没用了就删掉它,别的留下,这不就是剪刀手的干活而已么

前边的程序已经给你弄好了
没有测试,只是按你的要求去了对话框。。。具体能不能实现,关键在后边几个原有的函数上班

lingduwx 发表于 2013-10-27 11:59:38

本帖最后由 lingduwx 于 2013-10-27 12:02 编辑

llsheng_73 发表于 2013-10-27 11:36 static/image/common/back.gif
哪个程序修改过了就替换掉哪一部分,哪些没用了就删掉它,别的留下,这不就是剪刀手的干活而已么
...
非常感谢兄弟!
可以再麻烦哈兄弟吗?
就是修改全局比例的时候,先选中几种线型,然后就只修改这几种线型的比例
页: [1]
查看完整版本: 求高手修改一下动态线型比例!!!