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

Nhờ Viết Lisp Rải Text Dạng Số

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

Xin chào các anh chị trong diễn đàn. 

Em là người mới, cần nhờ các anh(chị) viết một lisp như sau :

Công việc em cần rải các text, dạng số x.yz, và rải text đó có bắt điểm trên 1 vị trí bất kỳ do em pick. Và em cần rải liên tục, hiểu đơn giản là hiện sẵn phần nhập text cho em, em click chuột đặt text đó vào vị trí e cần trên acad, xong lại tự hiện ra phần nhập text để e nhập tiếp và click để đặt text tiếp. 

Nếu có khó hiểu mong anh chị thông cảm, e sẽ giải thích lại.

Em chưa đóng góp được gì cho diễn đàn, nhưng qua lần nhờ vả này mong khả năng của mình sẽ nâng cao hơn và có thể giúp đỡ được người khác trong những lần sắp tới.

Chân thành 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

Có nên dùng lisp không, khi mà chỉ cần copy 1 Text mẫu, rồi sửa số là xong?

Bạn nên thành thạo sử dụng cad đã rồi tính sau, không hiểu sâu về cad mà đã hỏi lisp thì mọi người không muốn giúp đâ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

Có nên dùng lisp không, khi mà chỉ cần copy 1 Text mẫu, rồi sửa số là xong?

Bạn nên thành thạo sử dụng cad đã rồi tính sau, không hiểu sâu về cad mà đã hỏi lisp thì mọi người không muốn giúp đâu.

Cám ơn anh Mèo Mun đã quan tâm và trả lời.

Chính xác thì em vẫn đang làm như cách anh nói, nhưng do công việc phải làm cần copy text mẫu > đặt đúng vị trí > sửa text lặp đi lặp lại đến hàng chục nghìn lần trên 1 bản vẽ nên nếu có lisp như vậy bản thân em thấy rút ngắn được khá nhiều thời gian, đẩy nhanh tốc độ thực hiện công việc. 

Em đã search trên diễn đàn mà không thấy có lisp tương tự hay cách làm ngắn hơn.

Mong được các anh chị giúp đỡ, nếu e có gì sai sót mong các anh chị chỉ bảo thêm.

Em xin cảm ơ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

Cám ơn anh Mèo Mun đã quan tâm và trả lời.

Chính xác thì em vẫn đang làm như cách anh nói, nhưng do công việc phải làm cần copy text mẫu > đặt đúng vị trí > sửa text lặp đi lặp lại đến hàng chục nghìn lần trên 1 bản vẽ nên nếu có lisp như vậy bản thân em thấy rút ngắn được khá nhiều thời gian, đẩy nhanh tốc độ thực hiện công việc. 

Em đã search trên diễn đàn mà không thấy có lisp tương tự hay cách làm ngắn hơn.

Mong được các anh chị giúp đỡ, nếu e có gì sai sót mong các anh chị chỉ bảo thêm.

Em xin cảm ơn.

Quick code 

 

(defun c:cpt(/ ss pt1)
  (setq pt1 (getpoint "\nChon diem goc copy : "))
  (setq ss (car (entsel "\n Chon Text:")))
 
  (while (and ss pt1)
    (command "._copy" ss "" pt1 (setq pt1 (getpoint pt1 "\n diem dich copy :")  ))
    (setq ss (entlast))
    (command "_.ddedit" "L" "") 
  )
)
  • 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

 

Quick code 

(defun c:cpt(/ ss pt1)
  (setq pt1 (getpoint "\nChon diem goc copy : "))
  (setq ss (car (entsel "\n Chon Text:")))
 
  (while (and ss pt1)
    (command "._copy" ss "" pt1 (setq pt1 (getpoint pt1 "\n diem dich copy :")  ))
    (setq ss (entlast))
    (command "_.ddedit" "L" "") 
  )
)

Em cảm ơn Anh Tue_NV đã quan tâm và giúp đỡ. Nhưng em load lisp và gõ lệnh cpt thì acad unknown command. 

Mong được anh giúp đỡ.

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ám ơn anh Mèo Mun đã quan tâm và trả lời.

Chính xác thì em vẫn đang làm như cách anh nói, nhưng do công việc phải làm cần copy text mẫu > đặt đúng vị trí > sửa text lặp đi lặp lại đến hàng chục nghìn lần trên 1 bản vẽ nên nếu có lisp như vậy bản thân em thấy rút ngắn được khá nhiều thời gian, đẩy nhanh tốc độ thực hiện công việc. 

Em đã search trên diễn đàn mà không thấy có lisp tương tự hay cách làm ngắn hơn.

Mong được các anh chị giúp đỡ, nếu e có gì sai sót mong các anh chị chỉ bảo thêm.

Em xin cảm ơn.

bạn nói nó lặp lại rất nhiều lần , có phải là mỗi lần thực hiện thì bạn sẽ nhập vào nôi dung text và pick điểm thôi phải ko, vậy cái nội dung text bạn cần nhập nó có giống nhau giữa mỗi lần nhập ko , hay là nó khác, nếu nó khác có phải bạn đọc nội dung text đó từ một file nào đó để nhập vào dạng như một list trong excel thì nên nhờ lập trình tự động đọc từ file excel ra còn bạn chỉ pick thôi, chứ mỗi lần nhập rồi lại pick, lại nhập lại nó ko giảm thiểu được mấy thời gian 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

bạn nói nó lặp lại rất nhiều lần , có phải là mỗi lần thực hiện thì bạn sẽ nhập vào nôi dung text và pick điểm thôi phải ko, vậy cái nội dung text bạn cần nhập nó có giống nhau giữa mỗi lần nhập ko , hay là nó khác, nếu nó khác có phải bạn đọc nội dung text đó từ một file nào đó để nhập vào dạng như một list trong excel thì nên nhờ lập trình tự động đọc từ file excel ra còn bạn chỉ pick thôi, chứ mỗi lần nhập rồi lại pick, lại nhập lại nó ko giảm thiểu được mấy thời gian cả

Chào bạn.

Mình nói rõ ra để bạn hiểu là mình cần rải text dạng số trên 1 line. Line đó là trắc ngang hay trắc dọc trong khảo sát địa hình. Mỗi đường line mình đều phải rải bằng tay lên đó text 0.00 từ đầu mút này rải đến đầu mút kia của line. Rồi sau đó đi edit từng số 0.00 đó thành số theo yêu cầu chứ k biết trước được số mà soạn sẵn trong excel.

Nếu có được lisp mình cần mình sẽ bỏ được công đoạn rải 0.00 lên line trắc ngang/dọc và typing thẳng text số mình cần rồi pick vào line thôi.

Cảm ơn bạn đã góp ý, nếu bạn có góp ý gì khác cho cv mình đang làm, mình rất cám ơn. Chúc sức khỏe !

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

 

Quick code 

(defun c:cpt(/ ss pt1)
  (setq pt1 (getpoint "\nChon diem goc copy : "))
  (setq ss (car (entsel "\n Chon Text:")))
 
  (while (and ss pt1)
    (command "._copy" ss "" pt1 (setq pt1 (getpoint pt1 "\n diem dich copy :")))
    (setq ss (entlast))
    (command "_.ddedit" "L" "") 
  )
)

Mình xóa mấy  khoảng trắng giữa dấu ngoặc thì okie, bạn thử tải lại nhé.

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

Quick code 

(defun c:cpt(/ ss pt1)
  (setq pt1 (getpoint "\nChon diem goc copy : "))
  (setq ss (car (entsel "\n Chon Text:")))
 
  (while (and ss pt1)
    (command "._copy" ss "" pt1 (setq pt1 (getpoint pt1 "\n diem dich copy :")  ))
    (setq ss (entlast))
    (command "Textedit" "L" "") 
  )
)

 

Với cad đời cao: (Mình đang dùng cad 2015)

Thì lệnh _.ddedit dường như không phù hợp, nên không chạy được như ý muốn.

Thử lại lệnh gốc : Textedit thì ok. 

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ám ơn anh Mèo Mun đã quan tâm và trả lời.

Chính xác thì em vẫn đang làm như cách anh nói, nhưng do công việc phải làm cần copy text mẫu > đặt đúng vị trí > sửa text lặp đi lặp lại đến hàng chục nghìn lần trên 1 bản vẽ nên nếu có lisp như vậy bản thân em thấy rút ngắn được khá nhiều thời gian, đẩy nhanh tốc độ thực hiện công việc. 

Em đã search trên diễn đàn mà không thấy có lisp tương tự hay cách làm ngắn hơn.

Mong được các anh chị giúp đỡ, nếu e có gì sai sót mong các anh chị chỉ bảo thêm.

Em xin cảm ơn.

 

Nếu tìm được quy luật để sửa thì sẽ rút ngắn thời gian, đẩy nhanh tốc độ làm việ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

Nếu tìm được quy luật để sửa thì sẽ rút ngắn thời gian, đẩy nhanh tốc độ làm việc.....  

@tuananhdo: Theo ý bạn là đã có đường biên dạng trắc ngang, trắc dọc tự nhiên >>>>> Bạn rải text để thể hiện k/c cộng dồn (k/c lẻ) & cao độ tự nhiên chăng ?

Hay là bạn nhập xong mớ text đó rồi mới vẽ đc đường tự nhiên ?

>>> Bạn có thể nói sơ cách "làm việc" của bạn + BV minh họa đính kèm, chú thích ... Có lẻ Cadviet sẽ giúp cho bạn đc một "cổ máy" tự động hóa đó ^^

:D 

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

Nếu tìm được quy luật để sửa thì sẽ rút ngắn thời gian, đẩy nhanh tốc độ làm việc.....  

Cảm ơn a đã viết giúp lisp mà e cần. Rất tiện lợi.

Nếu được a cho e xin sdt e gửi a cái card điện thoại để cảm ơn 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

@tuananhdo: Theo ý bạn là đã có đường biên dạng trắc ngang, trắc dọc tự nhiên >>>>> Bạn rải text để thể hiện k/c cộng dồn (k/c lẻ) & cao độ tự nhiên chăng ?

Hay là bạn nhập xong mớ text đó rồi mới vẽ đc đường tự nhiên ?

>>> Bạn có thể nói sơ cách "làm việc" của bạn + BV minh họa đính kèm, chú thích ... Có lẻ Cadviet sẽ giúp cho bạn đc một "cổ máy" tự động hóa đó ^^

:D

Cảm ơn a đã quan tâm. 

Em trình độ còn non kém nên lên đây nhờ các a chị trong diễn đàn chỉ bảo nên cũng k dám múa rìu qua mắt thợ. Mỗi người đều có một cách " làm việc " riêng miễn sao không vi phạm pháp luật, phù hợp đạo đức làm nghề và lấy được tiền nuôi vợ con. 

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

Nếu tìm được quy luật để sửa thì sẽ rút ngắn thời gian, đẩy nhanh tốc độ làm việc.....  

Qua sử dụng em gặp tình huống là khi copy text e chọn điểm gốc copy là điểm màu xanh (đó là ô vuông nhỏ khi click vào text hiện ra), và lúc đó điểm ô màu xanh trùng với end line. Em chọn điểm đích copy là các điểm nằm rải rác trên đoạn line đó ( em sử dụng osnap nên chắc chắn sẽ bắt trúng line) nhưng sau vài line em phát hiện điểm ô màu xanh không còn nằm trên line với các text em rải sau này nữa. Điểm ô màu xanh phải nằm trên line là yếu tố quan trọng mà e cần.

Nhờ anh xem lại giúp em. Cảm ơn 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

Qua sử dụng em gặp tình huống là khi copy text e chọn điểm gốc copy là điểm màu xanh (đó là ô vuông nhỏ khi click vào text hiện ra), và lúc đó điểm ô màu xanh trùng với end line. Em chọn điểm đích copy là các điểm nằm rải rác trên đoạn line đó ( em sử dụng osnap nên chắc chắn sẽ bắt trúng line) nhưng sau vài line em phát hiện điểm ô màu xanh không còn nằm trên line với các text em rải sau này nữa. Điểm ô màu xanh phải nằm trên line là yếu tố quan trọng mà e cần.

Nhờ anh xem lại giúp em. Cảm ơn anh

Chắc bạn cần là truy bắt điểm Nearest (OSMODE = 512)

(defun c:cpt(/ ss pt1)
 (seqt oldosmode (getvar "OSMODE"));Lay che do truy bat hien tai
;Gan truy bat diem Nearest
(setvar "OSMODE" 512)
(setq pt1 (getpoint "\nChon diem goc copy : "))
  (setq ss (car (entsel "\n Chon Text:")))
 
  (while (and ss pt1)
    (command "._copy" ss "" pt1 (setq pt1 (getpoint pt1 "\n diem dich copy :")))
    (setq ss (entlast))
    (command "_.ddedit" "L" "") 
  )
;Tra lai che do truy bat ban dau
(setvar "OSMODE" oldosmode )
)
  • 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

 

Chắc bạn cần là truy bắt điểm Nearest (OSMODE = 512)

(defun c:cpt(/ ss pt1)
 (seqt oldosmode (getvar "OSMODE"));Lay che do truy bat hien tai
;Gan truy bat diem Nearest
(setvar "OSMODE" 512)
(setq pt1 (getpoint "\nChon diem goc copy : "))
  (setq ss (car (entsel "\n Chon Text:")))
 
  (while (and ss pt1)
    (command "._copy" ss "" pt1 (setq pt1 (getpoint pt1 "\n diem dich copy :")))
    (setq ss (entlast))
    (command "_.ddedit" "L" "") 
  )
;Tra lai che do truy bat ban dau
(setvar "OSMODE" oldosmode )
)

Cảm ơn dinhvantrang đã giúp mình. Mình chưa sử dụng qua lisp bạn sửa, nhưng mình xin nêu ra cái mình cần để bạn giúp đỡ cũng dễ dàng: Mình cần đa số là bắt điểm endpoint, intersection, nearest, apparent intersection. 

Lúc đầu theo lisp của anh Tue_NV, thì mình rải text được copy lên 1 đoạn line bằng các osnap mình vừa nêu ở trên ( mình bắt điểm chọn điểm gốc copy đúng ô vuông xanh dương), lúc đầu vẫn ok, nhưng vài line sau thì text được copy không còn nằm trên line dù mình copy thả vào đúng trên line ( ô vuông xanh dương nằm sai vị trí mình thả ).

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  

×