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

[Nhờ viết lisp] Lisp lấy thuộc tính hatch có sẵn để làm thuộc tính hatch hiện hành

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

Chào mọi người. Em có nhu cầu lấy thuộc tính 1 hatch có sẵn (ví dụ hatch tường, layer 0, scale 200, angle 0), sau đó tất cả thuộc tính đó sẽ hiện hành trong lần hatch tiếp theo.
Tất nhiên có thể hatch đại, sau đó dùng lệnh MA nhưng em thấy ko tiện lắm. 


ví dụ trường hợp thế này:
- hatch tường tầng 1

- hatch cột bê tông tầng 1

=> lúc này bảng hatch sẽ lưu thuộc tính của hatch bê tông

- bây giờ em muốn hatch tường tầng 2, thì thay vì chọn lại kiểu hatch tường, scale. thì có cách nào hút thuộc tính từ tường tầng 1 để hatch ngay ko (ko dùng MA tường tầng 1 cho tầng 2)
 

Không biết cad có sẵn tính năng này ko hay phải dùng lisp. Mong mọi người hỗ trợ. Em cảm ơn.

  • Vote giảm 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, NTHAHT đã nói:

- HPLAYER hoặc thiết lập trong này:

image.png.b896c36aa8d252f1e162a27416bb6b87.png

Tuy nhiên phải là CAD 2011 trở về sau.

cái này thì em biết rồi.
ví dụ trường hợp thế này:
- hatch tường tầng 1

- hatch cột bê tông tầng 1

=> lúc này bảng hatch sẽ lưu thuộc tính của hatch bê tông

- bây giờ em muốn hatch tường tầng 2, thì thay vì chọn lại kiểu hatch tường, scale. thì có cách nào hút thuộc tính từ tường tầng 1 để hatch ngay ko (ko dùng MA tường tầng 1 cho tầng 2)
 

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
5 phút trước, DNcouples đã nói:

cái này thì em biết rồi.
ví dụ trường hợp thế này:
- hatch tường tầng 1

- hatch cột bê tông tầng 1

=> lúc này bảng hatch sẽ lưu thuộc tính của hatch bê tông

- bây giờ em muốn hatch tường tầng 2, thì thay vì chọn lại kiểu hatch tường, scale. thì có cách nào hút thuộc tính từ tường tầng 1 để hatch ngay ko (ko dùng MA tường tầng 1 cho tầng 2)
 

image.thumb.png.05cbbfbfb50ff57bd666f5d1fda6e157.png

  • Like 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
Vào lúc 20/9/2024 tại 09:04, DNcouples đã nói:

Chào mọi người. Em có nhu cầu lấy thuộc tính 1 hatch có sẵn (ví dụ hatch tường, layer 0, scale 200, angle 0), sau đó tất cả thuộc tính đó sẽ hiện hành trong lần hatch tiếp theo.
Tất nhiên có thể hatch đại, sau đó dùng lệnh MA nhưng em thấy ko tiện lắm. 

Không biết cad có sẵn tính năng này ko hay phải dùng lisp. Mong mọi người hỗ trợ. Em cảm ơn.

Tính năng Inherit Properties cũng hay nhưng nhiều lúc vùng cần Hach với vùng cần lấy mẫu xa nhau hơi bất biện

Bạn tham khảo:

(defun c:gh ( / obj )
(setq obj (vlax-ename->vla-object (car (entsel "pick object"))))
(progn 
(setvar 'hpname (vla-get-PatternName obj))
(setvar 'hpang (vla-get-PatternAngle obj))
(setvar 'hpScale (vla-get-PatternScale obj))
)
)

nguồn: https://www.cadtutor.net/forum/topic/65123-hatch-inherit-properties/

  • Like 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
8 giờ trước, vietduc147258 đã nói:

Tính năng Inherit Properties cũng hay nhưng nhiều lúc vùng cần Hach với vùng cần lấy mẫu xa nhau hơi bất biện

Bạn tham khảo:


(defun c:gh ( / obj )
(setq obj (vlax-ename->vla-object (car (entsel "pick object"))))
(progn 
(setvar 'hpname (vla-get-PatternName obj))
(setvar 'hpang (vla-get-PatternAngle obj))
(setvar 'hpScale (vla-get-PatternScale obj))
)
)

nguồn: https://www.cadtutor.net/forum/topic/65123-hatch-inherit-properties/

cảm ơn anh nhiều! đúng lisp em cần rồ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
22 giờ trước, vietduc147258 đã nói:

Tính năng Inherit Properties cũng hay nhưng nhiều lúc vùng cần Hach với vùng cần lấy mẫu xa nhau hơi bất biện

Bạn tham khảo:


(defun c:gh ( / obj )
(setq obj (vlax-ename->vla-object (car (entsel "pick object"))))
(progn 
(setvar 'hpname (vla-get-PatternName obj))
(setvar 'hpang (vla-get-PatternAngle obj))
(setvar 'hpScale (vla-get-PatternScale obj))
)
)

nguồn: https://www.cadtutor.net/forum/topic/65123-hatch-inherit-properties/

anh giúp em sửa thêm 1 chút được không.
hiện tại sau ghi dùng lệnh và chọn hatch mẫu thì nó sẽ lưu thông số hatch mẫu cho lần hatch sau,

giờ em muốn sau khi chọn hatch mẫu thì sẽ cho chọn vùng hatch mới để hatch luôn thì làm ntn, em mò sửa lisp mà bí quá.

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 giờ trước, DNcouples đã nói:

anh giúp em sửa thêm 1 chút được không.
hiện tại sau ghi dùng lệnh và chọn hatch mẫu thì nó sẽ lưu thông số hatch mẫu cho lần hatch sau,

giờ em muốn sau khi chọn hatch mẫu thì sẽ cho chọn vùng hatch mới để hatch luôn thì làm ntn, em mò sửa lisp mà bí quá.

(defun c:gh ( / obj )
(setq obj (vlax-ename->vla-object (car (entsel "pick object"))))
(progn 
(setvar 'hpname (vla-get-PatternName obj))
(setvar 'hpang (vla-get-PatternAngle obj))
(setvar 'hpScale (vla-get-PatternScale obj))
)

(initdia)
(command "hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)

)

 

Hoặc

 

(defun c:gh ( / obj )
(setq obj (vlax-ename->vla-object (car (entsel "pick object"))))
(progn 
(setvar 'hpname (vla-get-PatternName obj))
(setvar 'hpang (vla-get-PatternAngle obj))
(setvar 'hpScale (vla-get-PatternScale obj))
)

(command "hatch")
)

 

Cái nào phù hợp với ý đồ thì bạn dùng

  • Like 2

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

Bữa trước mình đọc không kĩ yêu cầu của tác giả nên có thiếu phần layer. Thêm giúp bạn đó cái hplayer nữa bạn @duy782006 ơi.

Ps: thực ra để hatch mạc định là 1 layer thì hay hơn. Cũng có thể tác giả muốn tách riêng để thống kê

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

Cái hplayer thì cad đời thấp chưa có nên thêm vào cad thấp nó lại lỗi thì phiền bạn ạ.

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

 

6 giờ trước, DNcouples đã nói:

anh giúp em sửa thêm 1 chút được không.
hiện tại sau ghi dùng lệnh và chọn hatch mẫu thì nó sẽ lưu thông số hatch mẫu cho lần hatch sau,

giờ em muốn sau khi chọn hatch mẫu thì sẽ cho chọn vùng hatch mới để hatch luôn thì làm ntn, em mò sửa lisp mà bí quá.

(defun c:ih  (/ ent)
  (cond ((and (setq ent (car (entsel "\nPick Hatch object: ")))
              (eq (cdr (assoc 0 (entget ent))) "HATCH")
              (mapcar '(lambda (p v) (cond ((getvar p) (setvar p v))))
                      '(hplayer hpname hpScale hpang)
                      (mapcar '(lambda (x) (vlax-get (vlax-ename->vla-object ent) x))
                              '(Layer PatternName PatternScale PatternAngle))))))
  (bhatch)
  (princ))

  • Like 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

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  

×