Chuyển đến nội dung
Diễn đàn CADViet
minhquannd87

[ Nhờ Viết Lisp] Kết Hợp 2 Lệnh Stretch Và Copy

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

Mình muốn nhờ các bác viết Lisp kết hợp 2 lênh stretch và copy 

mình vẽ cầu thường dùng dimension ordinate để điền cao độ chứ k dùng lisp điền cao độ như bên đường

bình thường phải copy dimension sau đó stretch hơi mất thời gian 

file vidu mình đính kèm

http://www.mediafire.com/file/xc24pfldusg085d/Vi+du.dwg

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

Mình muốn nhờ các bác viết Lisp kết hợp 2 lênh stretch và copy 

mình vẽ cầu thường dùng dimension ordinate để điền cao độ chứ k dùng lisp điền cao độ như bên đường

bình thường phải copy dimension sau đó stretch hơi mất thời gian 

file vidu mình đính kèm

http://www.mediafire.com/file/xc24pfldusg085d/Vi+du.dwg

Cái này nghiên cứu dùng FIELD trong cad nhé. Field hay lắm đấy. Chỉ việc copy cốt xong là nó nhảy, không cần lisp nào khác

  • 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

Cái này nghiên cứu dùng FIELD trong cad nhé. Field hay lắm đấy. Chỉ việc copy cốt xong là nó nhảy, không cần lisp nào khác

bác chỉ dẫn thêm 1 chút đc k 

vào mục field đấy nhiều cái 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

Phải "cầm tay chỉ việc" qua video này bác @Bee ạ ^^.

https://m.youtube.com/watch?v=CcBjLQA5Z9U

cái này mình dùng rồi nó chỉ dùng được khi mình có 1 bản vẽ cần điền tọa độ

file mình vẽ nhiều vùng khác nhau cần điền tọa độ không cùng gốc thì không dùng đc, hoặc phải dàn hàng ngang bản vẽ ra rất bất tiện

thứ 2 là khi mình vẽ bản vẽ nhiều tỉ lệ khác nhau thì việc chỉnh sửa cũng mất thời gian hơn

mình đưa về dimension nên khi vẽ các tỉ lệ khác nhau chỉ cần chọn lại dimension là được

Nhờ các bác viết Lisp như trên giúp mình vs ??

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

Viết theo yêu cầu cũng không khó nhưng tôi chưa rãnh, nếu Danh Cong rãnh thì hoàn chỉnh

Bạn dùng tạm lisp này

- Copy các dim

- Chọn dim gốc lấy y chuẩn

- Chọn các dim cần chỉnh tọa độ

 

(defun c:cy( / a g) ; chinh y
(setq a (assoc 10 (entget (car (entsel "\nChon dim goc : ")))))
(princ "\nChon dim can chinh cao do : ")
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget  '((0 . "DIMENSION")(-4 . "&=")(70 . 6))))))
 (entmod (subst a (assoc 10 (setq g (entget e))) g))
)
)
  • Vote 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

 

Viết theo yêu cầu cũng không khó nhưng tôi chưa rãnh, nếu Danh Cong rãnh thì hoàn chỉnh

Bạn dùng tạm lisp này

- Copy các dim

- Chọn dim gốc lấy y chuẩn

- Chọn các dim cần chỉnh tọa độ

(defun c:cy( / a g) ; chinh y
(setq a (assoc 10 (entget (car (entsel "\nChon dim goc : ")))))
(princ "\nChon dim can chinh cao do : ")
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget  '((0 . "DIMENSION")(-4 . "&=")(70 . 6))))))
 (entmod (subst a (assoc 10 (setq g (entget e))) g))
)
)

sao chọn dim nào nó cũng báo lỗi vậy bác

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 này mình dùng rồi nó chỉ dùng được khi mình có 1 bản vẽ cần điền tọa độ

file mình vẽ nhiều vùng khác nhau cần điền tọa độ không cùng gốc thì không dùng đc, hoặc phải dàn hàng ngang bản vẽ ra rất bất tiện

thứ 2 là khi mình vẽ bản vẽ nhiều tỉ lệ khác nhau thì việc chỉnh sửa cũng mất thời gian hơn

mình đưa về dimension nên khi vẽ các tỉ lệ khác nhau chỉ cần chọn lại dimension là được

Nhờ các bác viết Lisp như trên giúp mình vs ??

Thế giá trị cốt trong text nó nhảy theo cái gì ?

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

Mình muốn nhờ các bác viết Lisp kết hợp 2 lênh stretch và copy 

mình vẽ cầu thường dùng dimension ordinate để điền cao độ chứ k dùng lisp điền cao độ như bên đường

bình thường phải copy dimension sau đó stretch hơi mất thời gian 

file vidu mình đính kèm

http://www.mediafire.com/file/xc24pfldusg085d/Vi+du.dwg

Cái này mình thấy dùng lisp đánh cao độ cho nó nhanh

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

Thế giá trị cốt trong text nó nhảy theo cái gì ?

Mình dùng là odinate dimension k dùng cốt text

khi dùng stretch nó sẽ nhảy theo giống như là dimension

bác có thể down cái file mình đính kèm về mà xem

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ó nhập tỷ lệ mà

chỉ chỉnh đc tỉ lệ từng cái field thôi bác

h bản vẽ mình có khoảng 20 cái cao độ tỉ lệ 1/100 h muốn chuyển 1 lần về tỉ lệ 1/75 như dimension thì dùng field cho sửa đc 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

chỉ chỉnh đc tỉ lệ từng cái field thôi bác

h bản vẽ mình có khoảng 20 cái cao độ tỉ lệ 1/100 h muốn chuyển 1 lần về tỉ lệ 1/75 như dimension thì dùng field cho sửa đc k ??

Chỉnh được hết

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

Mình dùng là odinate dimension k dùng cốt text

khi dùng stretch nó sẽ nhảy theo giống như là dimension

bác có thể down cái file mình đính kèm về mà xem

Mình vẫn thấy dùng field là ổn dù cho tỷ lệ nào vẫn dùng được.

 

Đây là lisp dùng cho công việc bạn yêu cầu. Nhớ chọn window từ phải qua trái thì mới stretch được nhé.

 

Tết nhất đến nơi mọi người bận chắc chẳng ai rảnh viết lisp mấy đâu. ^_^

(defun c:kkk (/ os ss p1 p2)
  (setq os (getvar "osmode"))
  (princ "\nChon cot cao do: ")
  (if (setq ss (ssget "_:L"))
    (if	(setq p1 (getpoint "\nChon diem goc copy: "))
      (if (setq p2 (getpoint p1 "\nChon diem dat moi: "))
	(progn
	  (command "_.copybase" p1 ss "")
	  (setvar "OSMODE" 0)
	  (command "_.stretch" "P" "" p1 p2)
	  (command "_.pasteclip" p1)
	)
	(princ "\nBan da khong chon diem moi.")
      )
      (princ "\nBan da khong chon diem goc.")
    )
    (princ "\nBan da khong chon doi tuong.")
  )
  (setvar 'osmode os)
  (princ)
)
  • 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

Bác #Bee và các anh chị có kinh nghiệm cho em hỏi xíu : dòng code (ssget "_:L") thì cái sự lựa chọn "_:L" có nghĩa là gì vậy ạ. ^^. Em ko hiểu cho lắm.

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ác #Bee và các anh chị có kinh nghiệm cho em hỏi xíu : dòng code (ssget "_:L") thì cái sự lựa chọn "_:L" có nghĩa là gì vậy ạ. ^^. Em ko hiểu cho lắm.

Exclude Locked Layers

 

<_<  Filter bỏ qua đối tượng trên lớp bị khóa.

  • 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

Hề hề... Em cám ơn bác đã giải thích... ^^

Cho em hỏi thêm: Vậy với Layer bị ẩn đi thì cú pháp thay đổi như thế nào ạ < hoặc em cần đọc ở đâu ạ ^^ >

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

Chẳng biết nói gì hơn : ))) Cám ơn bác Hạ ^^ : ) mong các bác mạnh khoẻ cho chúng em còn có người học hỏ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

@Danhcong bác Hạ sinh năm 1960.

 

Bác Hạ sn 60 mà ngôn ngữ vẫn teen lắm " Đây nè "   :lol:

 

Hì hì.... Thú thật là các "Bác", các anh, các chị kín kẽ quá... Giấu hết cả năm sinh của mình. Nên chúng em biết xưng hô với các bác ra sao cho đủ kính trọng, lễ nghĩa ^^ 

Em thì sinh năm 93, < chắc thuộc lớp trẻ nhất ở diễn đàn rồi   :D  :D  :D > .Nên đi đâu cũng phải gọi mọi người là anh, là chị, là bác cả :P.

--- Chắp tay kính lễ các bác  : ))) 

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

×