Đến nội dung


Hình ảnh
- - - - -

[Nhờ Vả] Lisp Tự Động Đánh Số Và Thống Kê Kích Thước Tam Giác (Đa Giác Càng Tốt Ạ)


  • Please log in to reply
1 reply to this topic

#1 goblinangel

goblinangel

    Chưa sử dụng CAD

  • Members
  • Pip
  • 1 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 05 January 2017 - 05:05 PM

Như tiêu đề, các bác có thể giúp em làm cái Lisp

 

- Tự đánh số tam giác,

- Xuất bảng thống kê tam giác, ví dụ tam giác "X1" có 3 cạnh A= ??? B=???? C=???.......

 

Em chân thành cảm ơn ạ.

Em không up được file mẫu... có hình đây ạ...

https://s-media-cach...f49fe30bf54.png


  • 0

#2 Bee

Bee

    biết lệnh chamfer

  • Members
  • PipPipPipPip
  • 214 Bài viết
Điểm đánh giá: 76 (tàm tạm)

Đã gửi 06 January 2017 - 08:44 PM

Như tiêu đề, các bác có thể giúp em làm cái Lisp

 

- Tự đánh số tam giác,

- Xuất bảng thống kê tam giác, ví dụ tam giác "X1" có 3 cạnh A= ??? B=???? C=???.......

 

Em chân thành cảm ơn ạ.

Em không up được file mẫu... có hình đây ạ...

https://s-media-cach...f49fe30bf54.png

Demo 1 phát. Làm tí cho đỡ buồn ^_^

 

https://youtu.be/iS3042bTAd0

 

Code here:

(defun c:demo  (/ a b c doc osm i lst msp name num p pt row rws TblObj triangle txt)
  (vl-load-com)
  (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object))
        msp (vla-get-modelspace doc)
	osm (getvar 'osmode)
        )
  (command "undo" "begin")
  (if (setq p (getpoint "\nVi tri dat bang thong ke: "))
    (progn
      (setvar 'osmode 0)
      (setq TblObj (vla-addtable
                     msp
                     (vlax-3d-point p)
                     2 ;NumRows
                     4 ;NumColumns
                     750 ;RowHeight 15=txt x 3
                     3000 ;ColWidth 100
                     )
            ) ;setq

      (vla-put-vertcellmargin TblObj 200)
      (vla-SetColumnWidth TblObj 0 1000)
      (vla-SetRowHeight TblObj 0 1500)
      (mapcar '(lambda (x) (vla-setTextHeight TblObj x 250))
              (list acTitleRow acHeaderRow acDataRow)
              )
      (mapcar '(lambda (x) (vla-setAlignment TblObj x 5))
              (list acTitleRow acHeaderRow acDataRow)
              )
      
      (vla-setText TblObj 0 0 "B\U+1EA3ng th\U+1ED1ng kê kích thu\U+1EDBc tam giác")
      
      (vla-setText TblObj 1 0 "STT")

      (vla-setText TblObj 1 1 "A")

      (vla-setText TblObj 1 2 "B")

      (vla-setText TblObj 1 3 "C")

      (setq i 1
            row 2)
      (setq num (getint "\nChon so ten diem bat dau: "))
        (if (null num)
          (setq num 1)
          )

      (while (setq pt (getpoint "\nChon diem dat text: "))
        
        (setq name (strcat "X" (rtos num 2 0)))
	
        (setq txt (entmake
                    (list
                      (cons 0 "TEXT")
                      (cons 40 (getvar "textsize"))
                      (cons 50 0.)
                      (cons 10 pt)
                      (cons 1 name)
                      )
                    )
              )
        (command "-boundary" "_none" pt "")
        (setq triangle (entlast))
        (setq lst (mapcar (function cdr)
                                (vl-remove-if-not (function (lambda (a) (= (car a) 10))) (entget triangle))
                                ) ;_  mapcar
                    )
        (setq a (distance (car lst) (cadr lst)))
        (setq b (distance (cadr lst) (caddr lst)))
        (setq c (distance (caddr lst) (car lst)))
        
        (setq rws (vla-Get-Rows TblObj))
        (vla-InsertRows TblObj rws (vla-GetRowHeight TblObj (1- rws)) 1);; 1 number of rows

        
        (vla-setText TblObj row 0 (rtos (1+ i) 2 0))
        (vla-setText TblObj row 1 (rtos a 2 0))
        (vla-setText TblObj row 2 (rtos b 2 0))
        (vla-setText TblObj row 3 (rtos c 2 0))
	(mapcar '(lambda (x) (vla-setTextHeight TblObj x 250))
		(list acTitleRow acHeaderRow acDataRow)
		)
	(mapcar '(lambda (x) (vla-setAlignment TblObj x 5))
		(list acTitleRow acHeaderRow acDataRow)
		)
	(setq i (1+ i)
              row (1+ row)
	      num (1+ num)
              )       
        ) ;while
      ) ;progn
    ) ;if
  (command "undo" "end")
  (setvar 'osmode osm)
  (princ)
  )

  • 1