找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 635|回复: 3

[求助] [求助]:有没有点房程序?

[复制链接]
发表于 2006-10-16 19:52:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
单位集资建房,马上要点房了,但选择方案多种多样,点房时候随即性很强,自己看好的很可能被别人选走,自己的一系列选择要随时调整,于是产生了一个“程序”点房的念头!

要实现程序点房,我的基本思路如下:画好房子的“立面图”,然后在自己选择的房子里进行编号。点房过程中,为区别已点房间和未点房间,将已点房间进行填充,如填充到自己选择的房子,则相应序号归零,后续序号减一!

需要手工操作的是将自己的目标房间一一顺序编号,点房时还要时时填充!

估计我的想法前无古人!

怎么用lsp实现?请大家帮忙了!


捣鼓到凌晨一点,弄了一个差不多的!

需配合附件的图使用,如楼层、单元不同,可以copy、删除,或自己画,然后把“0”的属性match一下就可以了(建议进行copy和删除)!



  1. (textscr)
  2. (princ "\n\n  程    序    说    明")
  3. (princ "\n\n本程序共由5个命令组成,分别是:xf、df、cc、cv、gl;")
  4. (princ "\n\nxf  可以用鼠标顺序点取房间(请点选房间中的数字0或其他),形成房间排队序号;")
  5. (princ "\n\ndf  模拟点房现场情况,他人已选房间打叉,如为自己的目标,则自动删除并重新排序;")
  6. (princ "\n\ncc  用于删除已选房间序号,可以用鼠标框选;")
  7. (princ "\n\ncv  用于修改已选房间序号,可以在以排好队的序号中插入新的序号,大于新序号的已\n\n  选房间序号会跟随变动,如选择了已排好队的序号,且输入了新序号,")
  8. (princ "\n\n  则排队顺序将根据新输入序号重新排列;")
  9. (princ "\n\ngl  清除已编序号及已点房的红叉;")
  10. (princ "\n\n使用前请认真阅读此说明!如有不明之处请来电咨询!电话:68801755")

  11. (princ "\n\n本程序仅供娱乐学习之用,本人对程序发结果不负任何责任!")

  12. (princ "\n\n限于本人水平有限,程序中错误在所难免,欢迎批评指正!")

  13. (princ "\n\n王磊 2006年10月16日")


  14. (defun c:xf (/ ent fanghao pt fh ss ll n fh_max gh_1 fh_c fanghao_c)
  15.   (setq        ent        (entsel "选择房间:")
  16.         fanghao        (entget (car ent))
  17.         pt        (cdr ent)
  18.   )
  19.   (setq fh (atoi (cdr (assoc 1 fanghao))))
  20.   (if (= 0 fh)
  21.     (progn (setq ss (ssget "_x" '((0 . "TEXT") (8 . "fanghao"))))
  22.            (setq ll        (sslength ss)
  23.                  n        0
  24.                  fh_max        fh
  25.            )
  26.            (while (< n ll)
  27.              (setq fanghao_1 (entget (ssname ss n))
  28.                    fh_1             (atoi (cdr (assoc 1 fanghao_1)))
  29.              )
  30.              (if (< fh_max fh_1)
  31.                (setq fh_max fh_1)
  32.              )
  33.              (setq n (1+ n))
  34.            )
  35.            (setq fanghao (subst        (cons 1 (itoa (1+ fh_max)))
  36.                                 (assoc 1 fanghao)
  37.                                 fanghao
  38.                          )
  39.                  fanghao (subst (cons 62 3) (assoc 62 fanghao) fanghao)
  40.            )
  41.            (entmod fanghao)
  42.     )
  43.     (progn (setq ss (ssget "_x" '((0 . "TEXT") (8 . "fanghao") (62 . 3))))
  44.            (setq ll        (sslength ss)
  45.                  n        0
  46.                  fh_max        fh
  47.            )
  48.            (while (< n ll)
  49.              (setq fanghao_1 (entget (ssname ss n))
  50.                    fh_1             (atoi (cdr (assoc 1 fanghao_1)))
  51.              )
  52.              (if (< fh_max fh_1)
  53.                (setq fh_max fh_1)
  54.              )
  55.              (setq n (1+ n))
  56.            )
  57.            (setq n 0)
  58.            (while (< n ll)
  59.              (setq fanghao_C (entget (ssname ss n))
  60.                    fh_C             (atoi (cdr (assoc 1 fanghao_C)))
  61.              )
  62.              (if (> fh_c fh)
  63.                (progn (setq fh_c (1- fh_c))
  64.                       (setq fanghao_c (subst (cons 1 (itoa fh_c))
  65.                                              (assoc 1 fanghao_c)
  66.                                              fanghao_c
  67.                                       )
  68.                             fanghao_c (subst (cons 62 3)
  69.                                              (assoc 62 fanghao_c)
  70.                                              fanghao_c
  71.                                       )
  72.                       )
  73.                       (entmod fanghao_c)
  74.                )
  75.                ()
  76.              )
  77.              (setq n (1+ n))
  78.            )
  79.            (setq fanghao (subst (cons 1 (itoa fh_max)) (assoc 1 fanghao) fanghao)
  80.                  fanghao (subst (cons 62 3) (assoc 62 fanghao) fanghao)
  81.            )
  82.            (entmod fanghao)
  83.     )
  84.   )
  85.   (princ)
  86. )
  87. (defun c:gl (/ ss ll n fanghao_c fh_c)
  88.   (setq ss (ssget "_x" '((0 . "LINE") (8 . "ydf") (62 . 1))))
  89.   (command "erase" ss "")
  90.   (setq ss (ssget "_x" '((0 . "TEXT") (8 . "fanghao") (62 . 3))))
  91.   (setq        ll (sslength ss)
  92.         n  0
  93.   )
  94.   (while (< n ll)
  95.     (setq fanghao_C (entget (ssname ss n))
  96.           fh_C            (atoi (cdr (assoc 1 fanghao_C)))
  97.     )
  98.     (setq fanghao_c (subst (cons 1 (itoa 0)) (assoc 1 fanghao_c) fanghao_c)
  99.           fanghao_c (subst (cons 62 250) (assoc 62 fanghao_c) fanghao_c)
  100.     )
  101.     (entmod fanghao_c)
  102.     (setq n (1+ n))
  103.   )
  104. )

  105. (defun c:df
  106.        (/ ent fanghao pt pt1 pt2 pt3 pt4 fh ss ll n fh_c fanghao_c)
  107.   (setq        ent        (entsel)
  108.         fanghao        (entget (car ent))
  109.         pt        (cdr (assoc 11 fanghao))
  110.         pt1        (polar pt (* 3.14159 (/ 26.0 180)) 80)
  111.         pt2        (polar pt (* 3.14159 (/ -26.0 180)) 80)
  112.         pt3        (polar pt (* 3.14159 (/ 206.0 180)) 80)
  113.         pt4        (polar pt (* 3.14159 (/ 154.0 180)) 80)
  114.   )
  115.   (setq fh (atoi (cdr (assoc 1 fanghao))))
  116.   (entmake (list '(0 . "LINE")
  117.                  '(62 . 1)
  118.                  '(8 . "ydf")
  119.                  (cons 10 pt1)
  120.                  (cons 11 pt3)
  121.            )
  122.   )
  123.   (entmake (list '(0 . "LINE")
  124.                  '(8 . "ydf")
  125.                  '(62 . 1)
  126.                  (cons 10 pt2)
  127.                  (cons 11 pt4)
  128.            )
  129.   )
  130.   (if (> fh 0)
  131.     (progn (setq fanghao (subst (cons 1 (itoa 0)) (assoc 1 fanghao) fanghao)
  132.                  fanghao (subst (cons 62 250) (assoc 62 fanghao) fanghao)
  133.            )
  134.            (entmod fanghao)
  135.            (setq ss (ssget "_x" '((0 . "TEXT") (8 . "fanghao") (62 . 3))))
  136.            (setq ll (sslength ss)
  137.                  n  0
  138.            )
  139.            (while (< n ll)
  140.              (setq fanghao_C (entget (ssname ss n))
  141.                    fh_C             (atoi (cdr (assoc 1 fanghao_C)))
  142.              )
  143.              (if (> fh_c fh)
  144.                (progn (setq fh_c (1- fh_c))
  145.                       (setq fanghao_c (subst (cons 1 (itoa fh_c))
  146.                                              (assoc 1 fanghao_c)
  147.                                              fanghao_c
  148.                                       )
  149.                       )
  150.                       (entmod fanghao_c)
  151.                )
  152.              )
  153.              (setq n (1+ n))
  154.            )
  155.     )
  156.   )
  157.   (princ)
  158. )

  159. (defun c:cc (/ ss ll n fanghao ss_n ll_n fanghao_c fh_c m)
  160.   (princ "\n选择已选取的序号:")
  161.   (setq        ss (ssget '((0 . "TEXT") (8 . "fanghao") (62 . 3)))
  162.         ll (sslength ss)
  163.         n  0
  164.   )
  165.   (while (< n ll)
  166.     (setq fanghao (entget (ssname ss n)))
  167.     (setq fh (atoi (cdr (assoc 1 fanghao))))
  168.     (setq fanghao (subst (cons 1 (itoa 0)) (assoc 1 fanghao) fanghao)
  169.           fanghao (subst (cons 62 250) (assoc 62 fanghao) fanghao)
  170.     )
  171.     (entmod fanghao)
  172.     (setq ss_n (ssget "_x" '((0 . "TEXT") (8 . "fanghao") (62 . 3))))
  173.     (setq ll_n (sslength ss_n))
  174.     (setq m 0)
  175.     (while (< m ll_n)
  176.       (setq fanghao_C (entget (ssname ss_n m))
  177.             fh_C      (atoi (cdr (assoc 1 fanghao_C)))
  178.       )
  179.       (if (> fh_c fh)
  180.         (progn (setq fh_c (1- fh_c))
  181.                (setq fanghao_c (subst (cons 1 (itoa fh_c))
  182.                                       (assoc 1 fanghao_c)
  183.                                       fanghao_c
  184.                                )
  185.                )
  186.                (entmod fanghao_c)
  187.         )
  188.       )
  189.       (setq m (1+ m))
  190.     )
  191.     (setq n (1+ n))
  192.   )
  193. )

  194. (defun c:cv (/ ent fanghao fh fh_n ss_n ll_n m fh_c fanghao_c)
  195.   (setq        ent        (entsel "选择房间:")
  196.         fanghao        (entget (car ent))
  197.   )
  198.   (setq fh (atoi (cdr (assoc 1 fanghao))))
  199.   (setq fh_n (getint "\n输入新序号:"))
  200.   (if (= fh 0)
  201.     (progn (setq ss_n (ssget "_x" '((0 . "TEXT") (8 . "fanghao") (62 . 3))))
  202.            (setq ll_n (sslength ss_n))
  203.            (setq m 0)
  204.            (while (< m ll_n)
  205.              (setq fanghao_C (entget (ssname ss_n m))
  206.                    fh_C             (atoi (cdr (assoc 1 fanghao_C)))
  207.              )
  208.              (if (>= fh_c fh_n)
  209.                (progn (setq fh_c (1+ fh_c))
  210.                       (setq fanghao_c (subst (cons 1 (itoa fh_c))
  211.                                              (assoc 1 fanghao_c)
  212.                                              fanghao_c
  213.                                       )
  214.                       )
  215.                       (entmod fanghao_c)
  216.                )
  217.              )
  218.              (setq m (1+ m))
  219.            )
  220.            (setq fanghao (subst (cons 1 (itoa fh_n)) (assoc 1 fanghao) fanghao)
  221.                  fanghao (subst (cons 62 3) (assoc 62 fanghao) fanghao)
  222.            )
  223.            (entmod fanghao)
  224.     )
  225.     (progn (c:cc) (c:cv))
  226.   )
  227.   (princ)
  228. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-5-30 05:50:09 | 显示全部楼层
好主意,有想法
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-30 13:52:22 | 显示全部楼层
实际上就是:  “房号---原始排序----已选未选” 的即时重排序,这个原始排序是你既定的。

可能研究选房标准更有意思,如朝向、景观、户型、楼层(包括根据前面已经挑好的,判断不想在谁的楼上或者想在谁的楼下)。。。。、,这个你可以去网上找商品房的定价标准,可以按权重算分。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-31 18:02:59 | 显示全部楼层
楼主弄个演示看看,弄个演示更直观……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-25 12:17 , Processed in 0.297276 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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