Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
Quynh20

Hỏi về record con trong mã DFX của Dimension

Các bài được khuyến nghị

Em chào các anh, các trị!

Các anh cho em hỏi về record con, điều khiển biến DIMTFILL của đối tượng dimension mới ạ, chả là em muốn viết 1 lệnh để điều khiển tô màu cho text dim mà không làm đc, em thử dùng hàm vlax-put-property, nhưng không đưa biến DIMTFILL về dạng backgroud đc, chỉ chuyển màu fill đc thôi, nên em không biết có thể điều khiển đc nó thông qua record con của DFX dimension đc không, mong các anh, các chị giúp đỡ em với ạ. Em dùng lệnh dimoverdide thì lệnh báo không có biến DIMTFILL

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
7 phút trước, Doan Van Ha đã nói:

(setvar "DIMTFILL" 0)

(setvar "DIMTFILL" 1)

(setvar "DIMTFILL" 2)

Hi, cám ơn anh Doan Van Ha, đã quan tâm, em quên không nói rõ là em muốn điều chỉnh đối tượng dimension đã có trong bản vẽ ạ, nên e không biết làm cách nào để sửa đc , các bác khai sáng cho em với ạ!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
45 phút trước, Doan Van Ha đã nói:

vlax-put-property: TextFill & TextFillColor

Hích, em vẫn không sét nó về textfill là backgroud đc anh ạ, đây là đoạn mã của em

 

(setq ss1 (car (entsel)))
(vlax-put-property (vlax-ename->vla-object ss1) 'TextFill 1)
(vlax-put-property (vlax-ename->vla-object ss1 ) 'TextFillColor 0)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
(100 . "AcDbRotatedDimension")
    (-3
      (
        "ACAD"
        (1000 . "DSTYLE")
        (1002 . "{")
        (1070 . 69) ;; <--------------- Background Text Fill Colour
        (1070 . 1)  ;; <--------------- Background Text Fill Colour
        (1002 . "}")
      )
    )
  )

@Lee-Mac : nằm trong dữ liệu Dim Xdata override. Bạn muốn biết rõ thì nó nằm trong code của lisp Mask v1.5, chú ý 2 hàm mask:getdimxdata và mask:setdimxdata  để biết cách append thêm 2 mã này cho đối tượng
http://lee-mac.com/mask.html

Trước việc này bạn có thể làm bằng Dim Update sau khi gán Dimtfill rồi Dim -> Update -> All. 
Giờ thì lệnh Dim bị bỏ rồi, bạn cũng có thể làm bằng Dim1.
Code kruuger  / Theswamp . Bạn có thể search

(Defun C:BMM (/ lst object SC STYL)
  (vl-load-com)
  (setq lst (entsel "\nSelect dimension object: "))
  (setq object (car lst))
  (setq object (vlax-ename->vla-object object))
  (if (wcmatch (vla-get-objectname object) "AcDb*Dimension")
    (progn
      (setq STYL (vla-get-StyleName object))
      (command ".dimstyle" "r" STYL)
      (setq SC (vla-get-ScaleFactor object))
      (setvar "dimscale" SC)
      (setvar "dimtfill" 1)
      (command "DIM1" "UPDATE" lst "")
      (command ".draworder" (car lst) "" "front")
      (setvar "dimtfill" 0)
    );progn
  );if
)


Hoặc bạn cũng có thể chỉnh bằng Dimtfill -> 1 -> -Dimstyle -> Apply -> Chọn các Dim -> Draw order -> Front

 

(defun c:foo(/ s oTF)
;@Ketxu 10/2020
	(setq 	s (ssget (list (cons 0 "DIMENSION")))
			oTF (getvar 'Dimtfill)
	)
	(setvar 'Dimtfill 1)
	(command "-dimstyle" "Apply" s "")
	(command ".draworder" s "" "front")
	(setvar 'Dimtfill oTF)
)

 

  • Like 1
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
12 giờ trước, ketxu đã nói:
  • cadvietlisp.lsp
    lisp help
  •  

(100 . "AcDbRotatedDimension")
    (-3
      (
        "ACAD"
        (1000 . "DSTYLE")
        (1002 . "{")
        (1070 . 69) ;; <--------------- Background Text Fill Colour
        (1070 . 1)  ;; <--------------- Background Text Fill Colour
        (1002 . "}")
      )
    )
  )

@Lee-Mac : nằm trong dữ liệu Dim Xdata override. Bạn muốn biết rõ thì nó nằm trong code của lisp Mask v1.5, chú ý 2 hàm mask:getdimxdata và mask:setdimxdata  để biết cách append thêm 2 mã này cho đối tượng
http://lee-mac.com/mask.html

Trước việc này bạn có thể làm bằng Dim Update sau khi gán Dimtfill rồi Dim -> Update -> All. 
Giờ thì lệnh Dim bị bỏ rồi, bạn cũng có thể làm bằng Dim1.
Code kruuger  / Theswamp . Bạn có thể search


(Defun C:BMM (/ lst object SC STYL)
  (vl-load-com)
  (setq lst (entsel "\nSelect dimension object: "))
  (setq object (car lst))
  (setq object (vlax-ename->vla-object object))
  (if (wcmatch (vla-get-objectname object) "AcDb*Dimension")
    (progn
      (setq STYL (vla-get-StyleName object))
      (command ".dimstyle" "r" STYL)
      (setq SC (vla-get-ScaleFactor object))
      (setvar "dimscale" SC)
      (setvar "dimtfill" 1)
      (command "DIM1" "UPDATE" lst "")
      (command ".draworder" (car lst) "" "front")
      (setvar "dimtfill" 0)
    );progn
  );if


Hoặc bạn cũng có thể chỉnh bằng Dimtfill -> 1 -> -Dimstyle -> Apply -> Chọn các Dim -> Draw order -> Front

 


(defun c:foo(/ s oTF)
;@Ketxu 10/2020
	(setq 	s (ssget (list (cons 0 "DIMENSION")))
			oTF (getvar 'Dimtfill)
	)
	(setvar 'Dimtfill 1)
	(command "-dimstyle" "Apply" s "")
	(command ".draworder" s "" "front")
	(setvar 'Dimtfill oTF)
)

 

Em cám ơn anh @ketxu, cái này quả thật phải từ từ mới hiểu hết đc anh ạ!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
31 phút trước, Quynh20 đã nói:

Em cám ơn anh @ketxu, cái này quả thật phải từ từ mới hiểu hết đc anh ạ!

Nếu cần nghiên cứu cho công việc thì mới cần hiểu hết, k thì cứ y án mà copy paste cho nhanh ván bạn ạ :))

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
3 phút trước, ketxu đã nói:

Nếu cần nghiên cứu cho công việc thì mới cần hiểu hết, k thì cứ y án mà copy paste cho nhanh ván bạn ạ :))

Vâng em copy 2 cái lisp của a bên dưới là đủ dùng rồi anh ạ!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×