乐筑天下

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

[编程交流] 需要这方面的帮助

[复制链接]

56

主题

259

帖子

213

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
270
发表于 2022-7-6 08:23:05 | 显示全部楼层 |阅读模式
各位读者好,
 
嗯,我正在做一个例行工作,我会贴一张照片给你看。
 
092311m37ekbj1lzmq76lb.jpg
 
但我想选择在左边或右边复制这个
 
所以我用函数getkword,if和progn来模拟它。
 
现在,当我选择正确的时候,它不起作用。
 
这是
  1. (defun c:cofp (/ rep pt1 pt2)
  2. (setq pt1 (getpoint "\nClick on the first point ! "))
  3. (setq pt2 (getpoint "\nClick on the second point ! "))
  4. (initget 1 "left right")
  5. (setq rep (getkword "\nChoose the side of the beam [left/right] "))
  6.    (if (= rep Gauche)
  7.      (progn
  8.      
  9.        (setq pt3 (list (- (car pt2) 20) (cadr pt2)))
  10.        (setq pt4 (list (- (car pt1) 20) (cadr pt1)))
  11.        (setq pt5 (list (- (car pt4) 90) (+ (cadr pt4) 20)))
  12.        (setq pt6 (list (- (car pt4) 90) (cadr pt4)))
  13.        (setq pt7 (list (car pt3) (- (cadr pt3) 38)))
  14.        (setq pt8 (list (car pt3) (- (cadr pt3) 76)))
  15.      
  16.      );progn
  17.    );if
  18.    (if (= rep Droite)
  19.      (progn
  20.      
  21.        (setq pt3 (list (+ (car pt2) 20) (cadr pt2)))
  22.        (setq pt4 (list (+ (car pt1) 20) (cadr pt1)))
  23.        (setq pt5 (list (+ (car pt4) 90) (+ (cadr pt4) 20)))
  24.        (setq pt6 (list (+ (car pt4) 90) (cadr pt4)))
  25.        (setq pt7 (list (car pt3) (- (cadr pt3) 38)))
  26.        (setq pt8 (list (car pt3) (- (cadr pt3) 76)))
  27.      );progn
  28.    );if
  29.   
  30. (setq os (getvar 'OSMODE))
  31. (setvar 'OSMODE 0)
  32. (command "_insert" "2 x 4" pt6 "" "1" "")
  33. (command "_insert" "2 x 4" pt7 "" "1" "")
  34. (command "_insert" "2 x 4" pt8 "" "1" "")
  35. (command "_rectangle" pt1 pt3)
  36. (command "_rectangle" pt4 pt5)
  37. (command "_rectangle" pt5 pt8)
  38. (setvar 'OSMODE os)
  39. );defun c:

 
就是这样!
 
提前感谢您的帮助!
 
干杯,啤酒。
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 08:39:05 | 显示全部楼层
尝试
 
  1. (defun c:cofp (/ rep pt1 pt2)
  2. (setq pt1 (getpoint "\nClick on the first point ! "))
  3. (setq pt2 (getpoint "\nClick on the second point ! "))
  4. (initget 1 "L R")
  5. (setq rep (getkword "\nChoose the side of the beam [Left/Right] "))
  6.    (if (= rep "L")
  7.      (progn
  8.        (setq pt3 (list (- (car pt2) 20) (cadr pt2)))
  9.        (setq pt4 (list (- (car pt1) 20) (cadr pt1)))
  10.        (setq pt5 (list (- (car pt4) 90) (+ (cadr pt4) 20)))
  11.        (setq pt6 (list (- (car pt4) 90) (cadr pt4)))
  12.        (setq pt7 (list (car pt3) (- (cadr pt3) 38)))
  13.        (setq pt8 (list (car pt3) (- (cadr pt3) 76)))
  14.      );progn
  15.    );if
  16.    (if (= rep "R")
  17.      (progn
  18.        (setq pt3 (list (+ (car pt2) 20) (cadr pt2)))
  19.        (setq pt4 (list (+ (car pt1) 20) (cadr pt1)))
  20.        (setq pt5 (list (+ (car pt4) 90) (+ (cadr pt4) 20)))
  21.        (setq pt6 (list (+ (car pt4) 90) (cadr pt4)))
  22.        (setq pt7 (list (car pt3) (- (cadr pt3) 38)))
  23.        (setq pt8 (list (car pt3) (- (cadr pt3) 76)))
  24.      );progn
  25.    );if
  26. (setq os (getvar 'OSMODE))
  27. (setvar 'OSMODE 0)
  28. (command "_insert" "2 x 4" pt6 "" "1" "")
  29. (command "_insert" "2 x 4" pt7 "" "1" "")
  30. (command "_insert" "2 x 4" pt8 "" "1" "")
  31. (command "_rectangle" pt1 pt3)
  32. (command "_rectangle" pt4 pt5)
  33. (command "_rectangle" pt5 pt8)
  34. (setvar 'OSMODE os)
  35. );defun c:
回复

使用道具 举报

56

主题

259

帖子

213

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
270
发表于 2022-7-6 08:51:03 | 显示全部楼层
嗨,谢谢你的帮助!我想我忘了“
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 08:56:39 | 显示全部楼层
这是我的荣幸。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 09:05:40 | 显示全部楼层
一个较短的方法可能是2次点击第一个选择-选择线,你可以得到开始和结束点,然后比较选择点,找出顶部-底部等交换点-第二个选择是所需的方向。
 
代码受版权保护,但只是一个片段
  1. (setq tp1 (entsel "\nSelect left side inner wall near end : "))
  2. (setq tpp1 (entget (car tp1)))
  3. (setq pt1 (cdr (assoc 10 tpp1)))     ;start
  4. (setq pt2 (cdr (assoc 11 tpp1)))   ; end
  5. (setq pt3 (cadr tp1)) ;pick point
  6. Just compare distance pt3-pt1 pt3-pt2 the shorter is your start point.
回复

使用道具 举报

56

主题

259

帖子

213

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
270
发表于 2022-7-6 09:20:31 | 显示全部楼层
嗨,比格尔,
 
我尝试了你发布的内容,但我不确定当它是pline时是否有效。
 
但是,既然我想确保我的pt1总是在底部,有没有办法做到这一点?
 
干杯啤酒
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 09:30:25 | 显示全部楼层
我的draw stud是基于一个完整的包,所以它期望你可能会得到的行仍然可以与普林斯,但代码将变得更大,与其他一些东西只是采取了廉价的方式,如果普林斯然后爆炸并继续。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 07:47 , Processed in 0.522208 second(s), 69 queries .

© 2020-2025 乐筑天下

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