明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1612|回复: 1

opendcl制作的对话框中GRID如何设置可修改,修改数据后如何响应?

[复制链接]
发表于 2012-5-30 12:03:36 | 显示全部楼层 |阅读模式
我用opendcl做了一个用GRID的对话框,实现功能为:在图纸中已有多线风管,风管中心线的线型确定,以这种线型的线、圆弧上有扩展数据: "类型"          "宽度"     "高度"        "宽度1"       "高度1"          "编号"     "宽度2"        "高度2"另加上的风管中心线的图元名。类型主要有:直管、弯头、三通。若类型是三通的话,宽度2和高度2也有数据(否则为nil)。选择风管线后,分别将每根风管中线的数据读出输入GRID中,有时有些个数据为空,输到GRID后可修改数据为空(或者直接修改有管径高度和宽度)的内容。再根据修改后的数据赋值到风管中心线上。
     现在我制作的GRID上的单元格内容不能修改,风管中心线的图元名现在不能显示在表格中,如修改数据后如何才能将GRID中修改的数据响应到风管中心线上。
  现将程序上传,请高手指教。

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-5-31 17:57:47 | 显示全部楼层
加载风管中心线数据到GRID完成了,单击数据也可响应了。
就是不知道怎么修改数据。
自己一个研究用法太麻烦了。用哪个函数都不知道(英文又不太懂),
现在实现点击数据行后,可将该中心线的区域放大。
程序如下:
(command "OPENDCL")
(defun c:Hello ()                        ; 调用方法加载 Hello.odcl 文件。
  (dcl_Project_Load "fg数据" T)                ; 调用方法显示“Hello world”对话框示例。
  (dcl_Form_Show fg_data1)
  (princ)

(defun c:fg_data1_TextButton4_OnClicked        (/ e1 ent_tmp rValue)
  (dcl_Form_Close fg_data1)
)



(defun c:FG_DATA1_GRID1_ONDBLCLICKED ()
  (Setq        rValue (dcl_Grid_GetCellText
                 fg_data1_Grid1
                 Row
                 9
               )
  )

)

(defun c:FG_DATA1_GRID1_OnSelChanged
       (Row Column / rValue mv et pt1 pt2)
;;;;;;活动单元格更改后;;
;;; (setq rvalue (dcl_Grid_GetCurSel fg_data1_Grid1));得到点击的单元格行号和列号
;;;(Setq rValue (dcl_Grid_GetRowCells         fg_data1_Grid1         0 ) );得到表中一行的数据
  (Setq        rValue (dcl_Grid_GetCellText
                 fg_data1_Grid1
                 Row
                 Column
               )
  )                                        ;得到表中一个单元格的数据

  (Setq        rValue (dcl_Grid_GetCellText
                 fg_data1_Grid1
                 Row
                 9
               )
  )
  (if (setq e1 (handent rValue))
    (progn
      (setq ent_tmp (entget e1))
      (cond
        ((= (cdr (assoc 0 ent_tmp)) "LINE")
         (progn
           (setq pt1 (cdr (assoc 10 ent_tmp)))
           (setq pt2 (cdr (assoc 11 ent_tmp)))
         )
        )
        ((= (cdr (assoc 0 ent_tmp)) "ARC")
         (progn
           (setq pt1 (polar (cdr (assoc 10 ent_tmp))
                            (cdr (assoc 51 ent_tmp))
                            (cdr (assoc 40 ent_tmp))
                     )
           )
           (setq pt2 (polar (cdr (assoc 10 ent_tmp))
                            (cdr (assoc 50 ent_tmp))
                            (cdr (assoc 40 ent_tmp))
                     )
           )
         )
        )
      )                                        ;(command "change" e1 "" "P" "c" "red" "")
      (command "zoom"
               "w"
               (polar pt1 (angle pt2 pt1) (/ (distance pt1 pt2) 4))
               (polar pt2 (angle pt1 pt2) (/ (distance pt1 pt2) 4))
      )
    )
  )
  (princ)
)
(defun c:fg_data1_TextButton1_OnClicked        (/ fg_list fg_data_list)
  (dcl_Grid_Clear fg_data1_Grid1)
  (get_fg_data)
  (setq fg_list fg_data_list)
  (if (/= fg_list nil)
    (progn
      (setq index1 0)
      (repeat (length fg_list)
        (setq fg_list_tmp (nth index1 fg_list))
;;; 序号 风量 风速 宽度 高度 长度 比摩阻 局部阻力系数
        (princ "\n")
        (setq index 0)
        (setq rValue (itoa (1+ index1)))
        (repeat        (length fg_list_tmp)
          (setq rValue (strcat rValue "\t"))
          (cond
            ((=        (TYPE (nth index fg_list_tmp))
                'REAL
             )
             (setq
               rValue (strcat rValue (rtos (nth index fg_list_tmp)))
             )
            )
            ((=        (TYPE (nth index fg_list_tmp))
                'INT
             )
             (setq
               rValue (strcat rValue (itoa (nth index fg_list_tmp)))
             )
            )
            ((= (nth index fg_list_tmp) nil)
             (progn                        ;(princ (nth index fg_list_tmp))
               (setq rValue (strcat rValue "无"))
             )
            )
            ((=        (TYPE (nth index fg_list_tmp))
                'STR
             )
             (setq rValue (strcat rValue (nth index fg_list_tmp)))
            )
          )
;;;;(setq rValue (strcat rValue (rtos (nth index fg_list_tmp))))
          (setq index (1+ index))
        )
        (Setq nRow (dcl_Grid_AddString
                     fg_data1_Grid1
                     rValue
                   )
        )

        (dcl_grid_SetItemStyle
          fg_data1_Grid1
          nRow
          1
          10
        )
        (setq index1 (1+ index1))
                                        ;  (princ rValue)
      )
    )
  )
  (princ)
)
(defun get_fg_data (/                i            index        index1
                    line_fg        ss_line_fg  fg_gj_list        fg_len_list
                    line_list        appdata1    appdata2        appdata3
                    fg_length        appname            xda                fg_len_list
                    line_fg        fg_ent            fg_w1        fg_w2
                    fg_h1        fg_h2            fg_len_tmp        fg_wh
                    fg_lx        fg_d_list
                   )

  (setq ss_line_fg (ssget '((6 . "ACAD_ISO10W100"))))
                                        ;(setq appdata1 (list "类型" "宽度" "高度" "宽度1" "高度1" "编号"))
  (setq        appdata2 (list "类型"          "宽度"     "高度"        "宽度1"
                       "高度1"          "编号"     "宽度2"        "高度2"
                      )
  )
  (setq appdata3 appdata2)                ;
  (setq fg_data_list nil)
  (setq index 0)
  (repeat (sslength ss_line_fg)
    (setq line_fg (ssname ss_line_fg index))
    (setq fg_ent (entget line_fg))
    (setq i 0)
    (if        (/= (vlax-ldata-get line_fg (nth 0 appdata3)) nil)
      (progn
        (setq fg_d_list nil)
        (setq appname (nth 0 appdata3))
        (setq fg_lx (vlax-ldata-get line_fg appname))
        (setq index1 1)
        (setq fg_d_list (cons fg_lx fg_d_list))
        (repeat        (1- (length appdata3))
          (setq appname (nth index1 appdata3))
          (setq fg_data (vlax-ldata-get line_fg appname))
          (setq fg_d_list (cons fg_data fg_d_list))
          (setq index1 (+ index1 1))
        )
        (setq fg_d_list (cons (cdr (assoc 5 fg_ent)) fg_d_list))
        (setq fg_d_list (reverse fg_d_list))
        (setq fg_data_list (cons fg_d_list fg_data_list))
      )
    )

    (setq index (+ index 1))
  )

)



;|(setq        fg_list        '(("直管" 500 400 500 400 0 0 1)
                  ("直管" 500 400 500 400 0 0 1)
                  ("弯头" 500 400 500 400 1)
                  ("直管" 320 200 320 200 1)
                  ("直管" 200 200 200 200 1)
                  ("变径" 500 400 400 250 1)
                  ("直管" 500 400 500 400 0 0 1)
                  ("弯头" 500 400 500 400 1)
                  ("直管" 320 200 320 200 1)
                  ("直管" 200 200 200 200 1)
                  ("变径" 500 400 400 250 1)
                 )
  )
(if        (and (/= rValue "") (/= rValue "0"))
      (setq chengs_dcl_fgw (atoi rValue))
      (Odcl_Control_SetText
        fgsljs_DclForm1fgsljs_TextBox7
        (chengs_rtos chengs_dcl_fgw 2 0)
      )
    )

(if  (not (setq e1  (handent "5a2")))

  (princ "\nNo entity with that handle exists. ")

  (princ e1)

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

本版积分规则

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

GMT+8, 2025-7-21 23:51 , Processed in 0.186072 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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